Ekstrakt sterty binarnej funkcji potencjalnej max O (1)

10

Potrzebuję pomocy w określeniu funkcji potencjalnej dla stosu maksymalnego, aby wyciąg maksymalny został zakończony w czasie zamortyzowanym . Powinienem dodać, że nie rozumiem potencjalnie tej metody.O(1)

Wiem, że funkcja wstawiania powinna „płacić” więcej, aby zmniejszyć koszt wydobycia, i musi to dotyczyć wysokości stosu (jeśli podaje wysokość stosu, jeśli wstaw 2 log ( n ) lub n k = 1 2 log ( k ) )log(n)2log(n)k=1n2log(k)

Andrei
źródło

Odpowiedzi:

13

Spróbuj wykonać następujące czynności:

Masę elementu ı w stosie H ma głębokość w odpowiednim drzewa binarnego. Tak więc element w korzeniu ma wagę zero, jego dwoje dzieci ma wagę 1 i tak dalej. Zdefiniujesz jako funkcję potencjalnąwiiH

Φ(H)=iH2wi.

Przeanalizujmy teraz operacje sterty. Do wstawienia dodajesz nowy element, dodając głębokość co najwyżej log ( n ) . Zwiększa to możliwość przez 2 d i mogą być wykonane w O ( 1 ) czas. Następnie „powiększasz” nowy element sterty, aby zapewnić właściwość sterty. Zajmuje to czas O ( log n ) i pozostawia Φ ( H ) bez zmian. Zatem koszty wstawienia wynoszą O ( log ( n ) + Δ ( Φ (dlog(n)2dO(1)O(logn)Φ(H) .O(log(n)+Δ(Φ(H)))=O(logn)

Teraz rozważ ekstraktMin . Wyjmujesz korzeń i zastępujesz go ostatnim elementem w stercie. Zmniejsza to potencjał o , dlatego możesz sobie pozwolić na naprawę właściwości hałdy, a zatem zamortyzowane koszty wynoszą teraz O ( 1 ) .2log(n)O(1)

Jeśli masz ogólne pytanie dotyczące potencjalnej funkcji, powinieneś zadać to jako inne pytanie.

A.Schulz
źródło
Δ(Φ(H)))Δ
Δ(Φ(H))2log(n)
Jak działa naprawa O (1)? Jakie jest zastosowanie potencjalnej funkcji w naprawie sterty? Czy możesz wyjaśnić
Sohaib
O(logn)O(1)
@ A. Schulz Tak więc w istocie oznacza to, że biorąc pod uwagę, że operacja wyodrębniania jest wykonywana n razy, ponieważ za każdym razem potencjalna funkcja zmniejsza się o 2 logn (może, ale nie musi wzrosnąć równomiernie po naprawie). Ogólna złożoność takiej rzeczy byłaby stała, ponieważ ostatecznie nie byłoby węzła w drzewie. Czy mam rację?
Sohaib