Complessità di ricerca del picco 2-D (MIT OCW 6.006)


9

In un video di recitazione per il MIT OCW 6.006 alle 43:30,

Dato un matrice con colonne e righe, l'algoritmo di ricerca del picco 2-D, in cui un picco è qualsiasi valore maggiore o uguale ai suoi vicini adiacenti, è stato descritto come:A m nm×nAmn

Nota: se c'è confusione nel descrivere le colonne tramite , mi scuso, ma è così che lo descrive il video di recitazione e ho cercato di essere coerente con il video. Mi ha confuso molto.n

  1. Seleziona la colonna centrale // Has complessitàΘ ( 1 )n/2Θ(1)

  2. Trova il valore massimo della colonna // Ha complessità perché ci sono righe in una colonnaΘ ( m ) mn/2Θ(m)m

  3. Controlla horiz. vicini di riga del valore massimo, se è maggiore, è stato trovato un picco, altrimenti ricorrere a // Ha complessitàT ( n / 2 , m )T(n/2,m)T(n/2,m)

Quindi per valutare la ricorsione, dice l'istruttore di recitazione

T(1,m)=Θ(m) perché trova il valore massimo

(E1)T(n,m)=Θ(1)+Θ(m)+T(n/2,m)

Capisco la parte successiva, a 52:09 nel video, dove dice per trattare come una costante, dal momento che il numero di righe non cambia mai. Ma non capisco come ciò porti al seguente prodotto:m

(E2)T(n,m)=Θ(m)⋅Θ(log⁡n)

Penso che, poiché viene trattato come una costante, viene quindi trattato come ed eliminato in sopra. Ma faccio fatica a fare il salto in . È perché ora stiamo considerando il caso di con una costante ?Θ ( 1 ) ( E 1 ) ( E 2 ) T ( n / 2 ) mmΘ(1)(E1)(E2)T(n/2)m

Penso che possa "vedere" l'idea generale è che un'operazione viene eseguita, nel peggiore dei casi, per m numero di righe. Quello che sto cercando di capire è come descrivere il salto da a a qualcun altro, ovvero ottenere una vera comprensione.Θ(log⁡n)(E1)(E2)

Risposte:


1

A quanto ho capito, ci vuole (m) tempo per valutare tutti gli elementi in una determinata colonna e identificare quale di questi elementi è il massimo globale. Il punto in cui entra in gioco è che, nel peggiore dei casi, l'algoritmo deve valutare le colonne nella matrice prima di trovare un picco. Il lavoro totale sarebbe quindiΘΘ(lg⁡(n))lg⁡(n)Θ(mlg⁡(n))

Ad esempio, supponiamo che la tua matrice abbia 32 colonne e 8 righe.

  1. Prendi la colonna centrale, dì la colonna 16. La valuti e scopri che il picco globale della colonna è sostituito da un elemento a destra. Rilasci le colonne 1-16 e ti concentri sulle colonne 17-32
  2. Trova la colonna centrale della matrice rimanente, che è la colonna 24, e valuti un picco globale (questa è la tua seconda valutazione di colonna). Ti accorgi che devi spostarti a destra. Rilascia le colonne 17-24, concentrati su 25-32.
  3. Trova il centro (colonna 28): valuta (valutazione della terza colonna) e scopri che devi spostarti a destra. Rilascia le colonne da 25 a 28 e concentrati su 29 - 32.
  4. Valuta la colonna 30 (quarta valutazione), scopri che devi spostarti a destra, rilascia le colonne 29-30.
  5. Valuta una delle colonne rimanenti (valutazione della quinta colonna) e il gioco è fatto.

In totale, hai completato cinque valutazioni di colonna. 5 = = dove n è il numero di colonne nella matrice e lg è log base 2.lg⁡(32)lg⁡(n)


2

l'analisi delineata sembra essere errata. la complessità corretta è dove m è la dimensione più grande della matrice (righe o colonne). vedere questa altra analisi corretta per maggiori / migliori dettagli. parte dell'errore non sta definendo la relazione di ricorrenza T ( n , m ) solo in termini di T ( n , m ) (che è gestita correttamente nel documento). l'articolo mostra / usa una serie infinita:O(m)mT(n,m)T(n,m)

T(n)=T(n2)+cnT(n)=T(1)+cn(1+12+14+18+⋯)=O(n)


1
Questa risposta, infatti, è fuori questione! L'OP parla dell'algoritmo nel video di recitazione MIT OCW 6.006 mentre questa risposta parla di un algoritmo diverso . In particolare, l'analisi delineata da OP è corretta rispetto all'algoritmo in quel video.
— John L.,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.