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)Θ(logn)

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.Θ(logn)(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.