Wie Sie erwähnen, die Akra-Bazzi - Theorem zeigt , dass die Lösung für die Wiederholung ist O ( n log n ) für alle p ∈ ( 0 , 1 ) . Dies zeigt jedoch nicht die Art der Abhängigkeit von p . Um letzteres zu bestimmen, können wir einen Rekursionsbaumansatz verwenden.T(n,p)O(nlogn)p∈(0,1)p
Die Wurzel des Rekursionsbaums ist das Intervall . Seine zwei Kinder sind die Intervalle { 1 , … , p n } und { p n + 1 , … , n } , deren Gesamtlänge wieder n ist . Jeder dieser Knoten hat zwei untergeordnete Knoten (vorausgesetzt, n ist groß genug) und so weiter. Der Einfachheit halber ignorieren wir Rundungsfehler, dh wir nehmen an, dass p n ist{1,…n}{1,…,pn}{pn+1,…,n}nnpnist eine ganze Zahl; Dies ist nur eine technische Angelegenheit, und ich würde mir darüber keine Sorgen machen. Wir stoppen den Prozess immer dann, wenn ein Knoten höchstens Länge hat . Die Komplexität des Algorithmus ist proportional zur Gesamtlänge der Intervalle im Baum. Wenn p ≠ 1 / 2 , wobei die Blätter (Knoten , an dem wir den Prozess stoppen) unterschiedliche Tiefe aufweisen, und das macht es schwieriger , die Gesamtkomplexität zu bestimmen.1p≠1/2
Wir können eine einfache Obergrenze erhalten, indem wir feststellen, dass der Baum höchstens Ebenen hat: Jeder Knoten ist mindestens einen Faktor von 1 - p kleiner als sein übergeordneter Knoten . Genau wie in der Analyse für p = 1 / 2 , ist die Gesamtlänge der Intervalle auf jeder Ebene höchstens n , und wir eine obere gebundener erhalten O ( n log 1 - p ( 1 / n ) ) auf der Laufzeit. Da log 1 -log1−p(1/n)1−pp=1/2nO(nlog1−p(1/n)) undlog(1-p ) - 1 =-log(1-p)=p±O( p 2 )für kleinespkönnen wir schreiben dies alsO(nlogn / p).log1−p(1/n)=logn/log(1−p)−1log(1−p)−1=−log(1−p)=p±O(p2)pO(nlogn/p)
Hier ist eine genauere Berechnung. Betrachten Sie Stufe . Angenommen, wir stoppen den Prozess nicht, wenn ein kleines Intervall erreicht ist. Wir können einen zufälligen Scheitelpunkt erzeugen, indem wir t Schritte ausführen, in denen wir jeweils mit der Wahrscheinlichkeit p nach links (sagen wir) und mit der Wahrscheinlichkeit 1 - p nach rechts (sagen wir) gehen . Jedes Mal, wenn wir einen linken Schritt machen, verringert sich das Protokoll der Länge des Intervalls um - log p , und jedes Mal, wenn wir einen rechten Schritt machen, verringert es sich um - log ( 1 - p ) . Ein Scheitelpunkt befindet sich im tatsächlichen Baum des Protokolls, dessen Länge um höchstens log n verringert wurdettp1−p−logp−log(1−p)logn. Das Gesamtgewicht der Intervalle auf der Ebene des Baums ist genau die Wahrscheinlichkeit, dass ein nach diesem Prozess erzeugter Scheitelpunkt einer Abnahme von höchstens log n entspricht . Das heißt, wenn D die Verteilung ist, die gleich - log p mit der Wahrscheinlichkeit p und - log ( 1 - p ) mit der Wahrscheinlichkeit 1 - p ist und X 1 , ... , X t ∼ D unabhängig sind, dann ist das Gesamtgewicht der Ebene t isttlognD−logpp−log(1−p)1−pX1,…,Xt∼Dt . Für die Superkonstante t ist die Zufallsvariable X 1 + ⋯ + X t ungefähr normalverteilt mit dem Mittelwert [ - p log p - ( 1 - p ) log ( 1 - p ) ] t und der Varianz linear in t , also für t befriedigend [ - pPr[X1+⋯+Xt≤logn]tX1+⋯+Xt[−plogp−(1−p)log(1−p)]ttt , sagen wir, die Wahrscheinlichkeit liegt sehr nahe bei 1 , während für t die Erfüllung von [ - p log p - ( 1 - p ) log ( 1 - p ) ] t ≥ 2 log n , sagen wir, es wird sehr nahe bei Null sein. Definieren[−plogp−(1−p)log(1−p)]t≤(logn)/21t[−plogp−(1−p)log(1−p)]t≥2logn (bekannt als binäre Entropiefunktion) schließen wir, dass die Laufzeit Θ ( n log n / h ( p ) ) (einheitlich) ist in p als n → ∞ ). Als p → 0 haben wir h ( p ) ≈ - p log ph ( p ) = - p logp - ( 1 - p ) log( 1 - p )Θ(nlogn/h(p))pn→∞p→0h(p)≈−plogpund so war unsere frühere Schätzung nicht eng.
Eine andere Art, dieselbe Analyse zu betrachten, besteht darin, eine unendliche Folge unabhängiger Zufallsvariablen wie zuvor zu haben und eine Stoppzeit T als das erste Mal t zu definieren, so dass X 1 + ⋯ + X t ≥ ist log n . Die Laufzeit ist dann proportional zu n E [ T ] . Der elementare Erneuerungssatz besagt dann, dass lim n → ∞ E [ T ] /X1,X2,…TtX1+⋯+Xt≥lognnE[T] , was bedeutet, dass die Gesamtgröße der Intervalle gleich ( 1 + o ( 1 ) ) n log n / h ( p ) ist . Genauer gesagtbeträgtfür jede Konstante p die Gesamtgröße der Intervalle ( 1 + α p ( n ) ) n log n / h ( plimn→∞E[T]/logn=1/E[D]=1/h(p)(1+o(1))nlogn/h(p)p , wobei α p ( n ) = o ( n ) ist . Die Konvergenz in der Grunderneuerung Satz exponentiell in dem Zeitparameter - lügt n in unserem Fall - so sollte in Polynom n , das heißt, α p ( n ) = O ( n - C p ) . Die Konvergenz ist wahrscheinlich auch für p ∈ ( δ , 1 - δ ) für jedes δ > 0 einheitlich.(1+αp(n))nlogn/h(p)αp(n)=o(n)lognnαp(n)=O(n−Cp)p∈(δ,1−δ)δ>0
Zusammenfassend hat die Gesamtlänge der Intervalle im Rekursionsbaum, die proportional zur Laufzeit ist, für jedes die folgende Form : T ( n , p ) = ( 1 + o ( 1 ) ) n log npwobeilognundh(p)=-plogp-(1-p)log(1-p)zur gleichen Basis gebracht werden undo(1)eine Funktion ist, die vonpundabhängtTendenz zu0mitn.
T(n,p)=(1+o(1))nlognh(p),
lognh(p)=−plogp−(1−p)log(1−p)o(1)p0n
Darüber hinaus ist es wahrscheinlich wahr, dass für jedes und jedes p ∈ ( δ , 1 - δ ) die Gesamtlänge der Intervalle die Form T ( n , p ) = ( 1 + O ( n -) hat C δ ) ) n log nδ>0p∈(δ,1−δ)wobeiCδ>0und die verborgene große O-Konstante nur vonδabhängen. Insbesondere sollte es so sein, dass für alle Konstantenp1,p2,
limn→∞T(n,p1)
T(n,p)=(1+O(n−Cδ))nlognh(p),
Cδ>0δp1,p2
und die Konvergenz ist polynomial schnell.
limn→∞T(n,p1)T(n,p2)=h(p2)h(p1),