Złożoność znalezienia piku 2-D (MIT OCW 6.006)


9

W wideo recytacyjnym dla MIT OCW 6.006 o 43:30,

Biorąc pod uwagę m×n matryca A z m kolumny i n wiersze, algorytm 2-D znajdowania pików, w którym pik jest dowolną wartością większą lub równą sąsiednim sąsiadom, opisano jako:

Uwaga: W przypadku nieporozumień przy opisywaniu kolumn za pomocą nPrzepraszam, ale tak opisuje to wideo recytacyjne i starałem się zachować spójność z filmem. Bardzo mnie to zamieszało.

  1. Wybierz środkową kolumnę n/2// Ma złożonośćΘ(1)

  2. Znajdź maksymalną wartość kolumny n/2// Ma złożoność Θ(m) ponieważ są m wiersze w kolumnie

  3. Sprawdź poziom. sąsiedzi rzędu o maksymalnej wartości, jeśli jest większy, to znaleziono pik, w przeciwnym razie powtórz zT(n/2,m)// Ma złożonośćT(n/2,m)

Następnie, aby ocenić rekurencję, mówi instruktor recytacji

T(1,m)=Θ(m) ponieważ znajduje maksymalną wartość

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

Rozumiem następną część, o 52:09 w filmie, w której mówi on, aby leczyć mjak stała, ponieważ liczba wierszy nigdy się nie zmienia. Ale nie rozumiem, w jaki sposób prowadzi to do następującego produktu:

(E2)T(n,m)=Θ(m)Θ(logn)

Myślę, że odtąd m jest traktowany jak stała, dlatego jest traktowany jak Θ(1) i wyeliminowane w (E1)powyżej. Ale trudno mi się skakać(E2). Czy to dlatego, że rozważamy teraz przypadekT(n/2) ze stałą m?

Myślę, że „widzę” ogólny pomysł jest taki Θ(logn)operacja jest wykonywana, w najgorszym przypadku, dla m liczby rzędów. Próbuję wymyślić, jak opisać skok(E1) do (E2) komuś innemu, tzn. uzyskać prawdziwe zrozumienie.

Odpowiedzi:


1

Jak rozumiem, potrzeba Θ(m) czas na ocenę wszystkich elementów w danej kolumnie i ustalenie, który z tych elementów jest globalnym maksimum. GdzieΘ(lg(n)) przychodzi to, że w najgorszym przypadku algorytm musi ocenić lg(n)kolumny w macierzy przed znalezieniem piku. Całkowita praca byłaby wtedyΘ(mlg(n))

Załóżmy na przykład, że macierz ma 32 kolumny i 8 wierszy.

  1. Bierzesz środkową kolumnę, powiedzmy kolumnę 16. Oceniasz ją i okazuje się, że globalny pik kolumny jest zastąpiony przez element po prawej stronie. Upuszczasz kolumny 1-16 i skupiasz się na kolumnach 17-32
  2. Znajdź środkową kolumnę pozostałej macierzy, którą jest kolumna 24, i oceniasz globalny pik (jest to ocena drugiej kolumny). Musisz przejść w prawo. Upuść kolumny 17–24, skup się na 25–32.
  3. Znajdź środek (kolumna 28) - oceniasz (ocena trzeciej kolumny) i okazuje się, że musisz przejść w prawo. Upuść kolumny 25–28 i skup się na 29–32.
  4. Oceń kolumnę 30 (czwarta ocena), znajdź, że musisz przejść w prawo, upuść kolumny 29-30.
  5. Oceń jedną z pozostałych kolumn (ocena piątej kolumny) i gotowe.

W sumie ukończyłeś pięć ocen kolumn. 5 =lg(32) = lg(n) gdzie n jest liczbą kolumn w macierzy, a lg jest podstawą logarytmiczną 2.


2

analiza, którą zarysujesz, wydaje się niepoprawna. prawidłowa złożoność toO(m) gdzie mto większy wymiar macierzy (wiersze lub kolumny). zobacz tę inną poprawną analizę, aby uzyskać więcej / więcej szczegółów. częścią błędu nie jest zdefiniowanie relacji powtarzalnościT(n,m) pod względem T(n,m)tylko (co jest poprawnie obsługiwane w papierze). artykuł pokazuje / używa nieskończonej serii:

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


1
Ta odpowiedź nie wchodzi w rachubę! OP mówi o algorytmie w recytacji wideo MIT OCW 6.006, podczas gdy ta odpowiedź mówi o innym algorytmie . W szczególności analiza przedstawiona przez OP jest poprawna w odniesieniu do algorytmu w tym filmie.
John L.,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.