Spreizbaumpotentialfunktion: Warum die Protokolle der Größen summieren?


16

Ich unterrichte einen Kurs über Datenstrukturen und werde Anfang nächster Woche Spreizbäume behandeln. Ich habe das Papier über Spreizbäume oft gelesen und bin mit der Analyse und der Intuition hinter der Datenstruktur vertraut. Ich kann jedoch keine solide Intuition für die potenzielle Funktion finden, die Sleator und Tarjan in ihrer Analyse verwenden.

Die Analyse arbeitet , indem jedes Element in dem Baum eine beliebige Gewichtung zuweisende , dann die Formateinstellung eines Knotens die Summe der Gewichte der Knoten in dem Unterbaum verwurzelt zu sein . Sie nehmen dann das Protokoll dieses Werts, um den Rang des Knotens zu erhalten, also ist . Schließlich wird die potenzielle Funktion des Baums als die Summe der Ränge aller Knoten definiert.wix r ( x ) r ( x ) = log s ( x )s(x)xr(x)r(x)=logs(x)

Ich verstehe, dass diese potenzielle Funktion korrekt funktioniert und ich kann der Analyse folgen, aber ich verstehe nicht, warum sie dieses Potenzial wählen würden. Die Idee, jedem Knoten eine Größe zuzuweisen, ist für mich sinnvoll, denn wenn Sie die Größen zusammenfassen, erhalten Sie die gewichtete Pfadlänge des Baums. Ich kann jedoch nicht herausfinden, warum sie beschlossen haben, die Protokolle der Gewichte zu nehmen und diese stattdessen zusammenzufassen - ich sehe keine natürliche Eigenschaft des Baums, der dies entspricht.

Entspricht die mögliche Funktion des Spreizbaums einer natürlichen Eigenschaft des Baums? Gibt es einen bestimmten Grund außer "es funktioniert", dass sie dieses Potenzial wählen würden? (Ich bin besonders neugierig, weil in diesem Kurssatz erwähnt wird, dass die "Analyse schwarze Magie ist. Keine Ahnung, wie sie entdeckt wurde".)

Vielen Dank!


Ich habe diese Erklärung "Es ist schwarze Magie" schon einmal gehört. Hast du versucht, dem Sleator und Tarjan eine E-Mail zu schicken?
Jbapple

@jbapple Ich habe sie noch nicht per E-Mail verschickt, da ich gehofft hatte, dass "die Community im Allgemeinen" helfen kann. Ich dachte mir auch, dass das Pingen von jemandem wegen der Arbeit, die er vor 30 Jahren getan hat, möglicherweise nicht unbedingt eine Reaktion hervorruft. :-)
templatetypedef

Ich bin nicht sehr vertraut damit, aber ich schaue mir das Papier nur sehr grob an. Ich denke, der einzige Grund ist, dass sie nach dem Abspielen eine kleine Änderung durch mögliche Funktionen wünschen, z. B. wenn wir durch ersetzen. oder mit scheint immer noch alles in Ordnung zu sein (ich habe es nicht bewiesen, aber es scheint nur eine einfache mathematische Arbeit zu brauchen). Aber wenn wir es als belassen, dann ist diese Amortize-Analyse zwar korrekt, aber keine gute Obergrenze (so etwas wie ). Es hat überhaupt nichts mit Baumeigenschaften zu tun. log log l o g * s ( m + n ) 2loglogloglogs(m+n)2
Saeed

Ich habe den Rang von x immer als "die Tiefe des idealen binären Suchbaums mit den Nachkommen von x" eingeordnet, aber das ist eher eine Gedächtnisstütze als eine nützliche Intuition.
Jeffs

Antworten:


13

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)aP

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:PP

  1. Es gibt linear viele , wo .s ' ( f ( a ) ) s ( a ) / 2aPs(f(a))s(a)/2
  2. Es gibt ständig viele , wobei groß sein kann, aber höchstens .s ' ( f ( a ) ) naPs(f(a))n
  3. Andere Elemente , .aPs(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)=eSpf(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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.