Jak wymyślić potencjał sumowania dzienników
Rozważmy BST algorytm że dla każdego dostępu dla elementu x , to reorganizuje tylko elementy w ścieżce wyszukiwania P od x wezwany przed-ścieżki, do jakiegoś drzewa zwane po-drzewa. Dla dowolnego elementu a , niech s ( a ) i s ′ ( a ) będą wielkością poddrzewa zakorzenionego odpowiednio przed i po przegrupowaniu. Tak więc y ( ) i y ' ( ) może różnić się wtedy i tylko wtedy jest ∈ P .AxPxas(a)s′(a)as(a)s′(a)a∈P
Ponadto A zmienia tylko ciągle wiele elementów ścieżki wyszukiwania w dowolnym momencie. Nazwijmy ten algorytm algorytmem „lokalnym”. Na przykład drzewo splay jest lokalne. Układa jednocześnie maksymalnie 3 elementy jednocześnie za pomocą zig, zigzig i zygzak.
Teraz każdy lokalny algorytm, który tworzy „wiele” liści w drzewie pospolitym, taki jak drzewo splay, ma następującą przyjemną właściwość.
Możemy utworzyć odwzorowanie takie, żef:P→P
- Istnieje liniowo wiele , gdzie s ′ ( f ( a ) ) ≤ s ( a ) / 2 .a∈Ps′(f(a))≤s(a)/2
- Ciągle jest wiele , gdzie s ′ ( f ( a ) ) może być duże, ale trywialnie co najwyżej n .a∈Ps′(f(a))n
- Inne elementy , s ′ ( f ( a ) ) ≤ s ( a ) .a∈Ps′(f(a))≤s(a)
Możemy to zobaczyć, rozwijając zmianę ścieżki wyszukiwania. Mapowanie jest w rzeczywistości całkiem naturalne. Ten artykuł, A Global Geometric View of Splaying , dokładnie pokazuje szczegóły, jak zobaczyć powyższą obserwację.
Po zapoznaniu się z tym faktem bardzo naturalne jest wybranie potencjału sumy logów. Ponieważ możemy wykorzystać potencjalną zmianę elementów typu 1, aby zapłacić za całe przegrupowanie. Co więcej, w przypadku elementów innego rodzaju musimy zapłacić za potencjalną zmianę co najwyżej logarytmicznie. Dlatego możemy uzyskać logarytm zamortyzowanego kosztu.
Myślę, że powodem, dla którego ludzie myślą, że jest to „czarna magia”, jest to, że poprzednia analiza nie „ujawnia” ogólnej zmiany ścieżki wyszukiwania i widzi, co naprawdę dzieje się w jednym kroku. Zamiast tego pokazują zmianę potencjału dla każdej „lokalnej transformacji”, a następnie pokazują, że te potencjalne zmiany można magicznie teleskopować.
PS W pracy pokazano nawet pewne ograniczenie potencjału sumy logów. Oznacza to, że można udowodnić satysfakcję z dostępu do lematu poprzez potencjał sumy logów tylko do lokalnego algorytmu.
Interpretacja potencjału sumy logów
Istnieje inny sposób zdefiniowania potencjału BST w pracy Georgakopoulos i McClurkina, który jest zasadniczo taki sam jak potencjał sumy logów w pracy Sleator Tarjan. Ale to daje mi dobrą intuicję.
Teraz przechodzę do notacji papieru. Przypisujemy wagę do każdego węzła u . Niech W ( U ) jest sumą wagi u jest poddrzewem. (Jest to tylko rozmiar poddrzewa u , gdy waga każdego węzła wynosi jeden.)w(u)uW(u)uu
Teraz zamiast definiować rangę w węzłach, definiujemy rangę do krawędzi, które nazywali współczynnikiem postępu .
pf(e)=log(W(u)/W(v)).
A potencjał drzewa jestS
Φ(S)=∑e∈Spf(e).
Ten potencjał ma naturalną interpretację: jeśli podczas przeszukiwania przemierzamy krawędź , zmniejszamy przestrzeń poszukiwań od potomków u do potomków v , frantional redukcja W ( u ) / W ( v ) . Nasz współczynnik postępu jest logarytmiczną miarą tego „postępu”, stąd jego nazwa. [Z sekcji 2.4](u,v)uvW(u)/W(v)
Zauważ, że jest to prawie równy potencjał Sleator Tarjan i jest addytywny na ścieżkach.
edytuj: Okazuje się, że ta alternatywna definicja i intuicja za nią została opisana dawno temu przez Kurta Mehlhorna. Zobacz jego książkę „Struktury danych i algorytmy” Tom I, Sekcja III. 6.1.2 Drzewa splay, strony 263–274.