Niedawno zacząłem przeglądać 6.006 wykładów MIT, a na pierwszym wykładzie instruktor przedstawił algorytm wyszukiwania szczytów.Algorytm ustalania wartości szczytowej
Według jego definicji:
Biorąc pod uwagę macierz [a, b, c, d, e, f, g] gdzie Ag numery, b oznacza pik Jeżeli i tylko jeśli < = b i b> = c.
Dał rekurencyjnego:
if a[n/2] < a[n/2 -1] then look for a peak from a[1] ... a[n/2 -1]
else if a[n/2] < a[n/2+1] then look for a peak from a[n/2+1] ... a[n]
else a[n/2] is a peak
powiedział algorytm T (n) = T (n/2) + f (1) = O (LGN)
W jego pdf podał także pełny przykład: [6,7,4,3,2,1,4,5]
Zarówno 7, jak i 5 to szczyty. Ale czy powyższy algorytm nie znajduje tylko 7 jako wartości szczytowej tylko dlatego, że element środkowy spełnia pierwszą gałąź?
Więc jeśli mielibyśmy znaleźć wszystkie szczyty, czy nadal będziemy przechodzić przez całą tablicę? Czy oznaczałoby to najgorszy przypadek N?
Czy jego definicja sugeruje, że musimy znaleźć pojedynczy szczyt?
Wierzę, że ten problem może być postrzegany jako znalezienie maksymalnego i minimalnego elementu w książce Wprowadzenie do algorytmu Riversta.
Nie, oryginalna definicja jest idealnie w porządku. szczyt to lokalne maksimum –