Wie lässt sich das Potenzial von Sum-of-Logs ermitteln?
Betrachten wir den BST-Algorithmus , der für jeden Zugriff auf Element nur Elemente im Suchpfad von , der Vorher-Pfad genannt wird, in einen Baum umordnet, der Nachher-Baum genannt wird. Für jedes Element , lassen und die Größe der Teilstruktur bei verwurzelt sein vor und nach der Umlagerung ist. So und kann iff unterscheiden .x P x a s ( a ) s ' ( a ) a s ( a ) s ' ( a ) a ∈ PAxPxas(a)s′(a)as(a)s′(a)a∈P
Darüber hinaus ordnet immer wieder viele Elemente im Suchpfad neu an. Nennen wir diese Art von Algorithmus "lokalen" Algorithmus. Zum Beispiel ist splay tree lokal. Es werden jeweils nur maximal 3 Elemente nach Zick, Zick und Zack neu angeordnet.A
Jetzt hat jeder lokale Algorithmus, der "viele" Blätter im Nachbaum erzeugt, wie der Spreizbaum, die folgende nette Eigenschaft.
Wir können ein Mapping so erstellen, dassf:P→P
- Es gibt linear viele , wo .s ' ( f ( a ) ) ≤ s ( a ) / 2a∈Ps′(f(a))≤s(a)/2
- Es gibt ständig viele , wobei groß sein kann, aber höchstens .s ' ( f ( a ) ) na∈Ps′(f(a))n
- Andere Elemente , .a∈Ps′(f(a))≤s(a)
Dies können wir an der Änderung des Suchpfads ablesen. Das Mapping ist eigentlich ganz natürlich. In diesem Artikel , Eine globale geometrische Ansicht des Spreizens , wird genau beschrieben, wie die obige Beobachtung zu sehen ist.
Nachdem diese Tatsache bekannt ist, ist es sehr natürlich, das Potenzial für die Protokollsumme zu wählen. Weil wir die mögliche Änderung der Typ-1-Elemente nutzen können, um die gesamte Umlagerung zu bezahlen. Darüber hinaus müssen wir für Elemente anderer Art die mögliche Änderung höchstens logarithmisch bezahlen. Daher können wir den Logarithmus zu fortgeführten Anschaffungskosten ableiten.
Ich denke, der Grund, warum die Leute denken, dass dies "schwarze Magie" ist, ist, dass die vorherige Analyse die gesamte Änderung des Suchpfads nicht "entfaltet" und sieht, was wirklich in einem Schritt passiert. Stattdessen zeigen sie die Potentialänderung für jede "lokale Transformation" und zeigen dann, dass diese Potentialänderungen magisch teleskopierbar sind.
PS Das Papier zeigt sogar eine gewisse Einschränkung des Potentials für die Protokollsumme. Das heißt, man kann die Erfüllbarkeit des Zugriffs-Lemmas über die Summe der Protokolle nur für den lokalen Algorithmus nachweisen.
Interpretation des Summenpotentials
Es gibt eine andere Möglichkeit, das Potenzial von BST in Georgakopoulos und McClurkins Papier zu definieren, die im Wesentlichen mit dem Potenzial der Protokollsumme in Sleator Tarjans Papier identisch ist. Aber das gibt mir eine gute Intuition.
Jetzt wechsle ich zur Notation des Papiers. Wir ordnen jedem Knoten ein Gewicht zu . Sei die Summe des Gewichts des Unterbaums von . (Dies ist nur die Größe des Unterbaums von , wenn das Gewicht jedes Knotens eins ist.)w(u)uW(u)uu
Anstatt nun den Rang auf den Knoten zu definieren, definieren wir den Rang zu den Kanten, den sie Fortschrittsfaktor nannten .
pf(e)=log(W(u)/W(v)).
Und das Potenzial von Baum istS
Φ(S)=∑e∈Spf(e).
Dieses Potential hat eine natürliche Interpretation: Wenn wir während einer Suche eine Kante durchlaufen reduzieren wir den Suchraum von den Nachkommen von zu den Nachkommen von , eine frantionale Reduktion von . Unser Fortschrittsfaktor ist ein logarithmisches Maß für diesen "Fortschritt", daher der Name. [Aus Abschnitt 2.4]u v W ( u ) / W ( v )(u,v)uvW(u)/W(v)
Beachten Sie, dass dies fast dem Potenzial von Sleator Tarjan entspricht und sich auf Pfaden addiert.
edit: Es stellt sich heraus, dass diese alternative Definition und die Intuition dahinter schon vor langer Zeit von Kurt Mehlhorn beschrieben wurden. Siehe sein Buch "Datenstrukturen und Algorithmen", Band I, Abschnitt III. 6.1.2 Spreizbäume, Seiten 263 - 274.