Lösen oder Approximieren von Wiederholungsrelationen für Zahlenfolgen


89

In der Informatik müssen wir häufig wiederkehrende Beziehungen lösen, dh eine geschlossene Form für eine rekursiv definierte Folge von Zahlen finden. Bei der Betrachtung von Laufzeiten interessiert uns oft vor allem das asymptotische Wachstum der Sequenz .

Beispiele sind

  1. Die Laufzeit einer schwanzrekursiven Funktion, die von deren Körper Zeit auf abwärts geht :0nf(n)

    T(0)=0T(n+1)=T(n)+f(n)

  2. Die Fibonacci-Sequenz :

    F0=0F1=1Fn+2=Fn+Fn+1

  3. Die Anzahl der Dyck-Wörter mit Klammerpaaren:n

    C0=1Cn+1=i=0nCiCni

  4. Die Wiederholung der Mergesort-Laufzeit auf Listen der Länge :n

    T(1)=T(0)=0T(n)=T(n/2)+T(n/2)+n1

Was sind Methoden, um Wiederholungsrelationen zu lösen? Wir suchen

  • allgemeine Methoden und
  • Methoden für eine signifikante Unterklasse

ebenso gut wie

  • Methoden, die präzise Lösungen ergeben und
  • Methoden, die asymptotisches Wachstum ermöglichen.

Dies soll eine Referenzfrage werden. Bitte senden Sie eine Antwort pro Methode und geben Sie eine allgemeine Beschreibung sowie ein veranschaulichendes Beispiel an.


9
Diese Hinweise können hilfreich sein. (Aber nein, ich werde sie nicht in Antworten
umschreiben

Antworten:


35

Konvertieren des vollständigen Verlaufs in einen eingeschränkten Verlauf

Dies ist ein erster Schritt beim Lösen von Wiederholungen, bei denen der Wert einer Ganzzahl von den Werten aller kleineren Ganzzahlen abhängt . Man betrachte zum Beispiel die Wiederholung die auftritt bei der Analyse von randomisierten Quicksort . (Hier ist der Rang des zufällig gewählten Pivots.) Für jede ganze Zahl hängt der Wert von von allen mit . Wiederholungen dieser Form werden als vollständige Verlaufswiederholungen bezeichnet .knT(n)T(k)k<n

T(n)=n+1nk=1n(T(k1)+T(nk))
knT(n)T(k)k<n

Um diese Wiederholung zu lösen, können wir sie in eine begrenzte Wiederholung im Verlauf umwandeln , wobei nur von einer konstanten Anzahl vorheriger Werte abhängt. Aber zuerst hilft es, die Wiederholung ein wenig zu vereinfachen, gemeinsame Begriffe zu sammeln und lästige Brüche zu eliminieren. Nun erfolgt die Konvertierung in eine Wiederholung mit begrenztem Verlauf , schreiben wir die Wiederholung für , subtrahieren und regather Begriffe: n T ( n )T(n) T(n-1) ( n - 1 ) T ( n - 1 )

nT(n)=n2+2k=1n1T(k)
T(n1)
(n1)T(n1)=(n1)2+2k=1n2T(k)nT(n)(n1)T(n1)=(2n1)+2T(n1)nT(n)=(2n1)+(n+1)T(n1)T(n)n+1=2n1n(n+1)+T(n1)n

Wenn wir nun und den Bruch durch die einfachere asymptotische Form ersetzen erhalten wir die viel einfachere Wiederholung Das Erweitern dieser Wiederholung zu einer Summation ergibt sofort , wobei die te Harmonische ist . Wir schließen daraus, dass .2 n - 1t(n)=T(n)/(n+1)(1/n)t(n)=(1/n)+t(n-1). t(n)=Θ(Hn)=Θ(logn)Hnn2n1n(n+1)Θ(1/n)

t(n)=Θ(1/n)+t(n1).
t(n)=Θ(Hn)=Θ(logn)HnnT(n)=Θ(nlogn)

1
Wenn Sie die genaue Lösung für , ist das (hier) auch nicht schwer, wenn auch etwas mühsam; wir erhalten . Tatsächlich verwirrt mich , daher bevorzuge ich die genaue Variante. Lästige Summen von Landau-Begriffen . T ( n ) = 2 ( n + 1 ) H n + ( T ( 0 ) - 3 ) n + T ( 0 ) n i = 1( 1 / i ) = ( H n )TT(n)=2(n+1)Hn+(T(0)3)n+T(0)i=1nΘ(1/i)=Θ(Hn)
Raphael

Tatsächlich genügt es, (induktiv) zu beobachten, dass , wobei . Tatsächlich habe ich diesen Trick bereits am Anfang verwendet, als ich die -Zeit ersetzt habe, um ein Array durch das einfachere zu partitionieren . Dies ist ein ganz normaler Missbrauch der Notation. t * ( n ) = 1 / n + t * ( n - 1 ) Θ ( n ) nT(n)/(n+1)=Θ(t(n))t(n)=1/n+t(n1)Θ(n)n
JeffE

28

Funktionen

Jede Zahlenreihe entspricht einer Erzeugungsfunktion . Oft ist es bequem möglich, aus einer Wiederholung die Koeffizienten - die Elemente der Reihe - zu bestimmen.

Diese Antwort enthält den allgemeinen Anhang mit einem vollständigen Beispiel, eine Abkürzung für einen Sonderfall und einige Hinweise zur Verwendung dieser Methode, um Asymptoten zu erhalten (auch wenn das genaue Ergebnis nicht erhalten werden kann).

Die Methode

Sei eine Reihe von Zahlen. Dann die formale Potenzreihe(an)nN

A(z)=n=0anzn

ist die gewöhnliche Erzeugungsfunktion ¹ von . Die Koeffizienten in der Reihenentwicklung von gleich der Folge, dh . Zum Beispiel kann die gewöhnliche erzeugende Funktion der berühmten katalanischen Zahlen ist A ( z ) [ z n ] A ( z ) = ein n C n(an)nNA(z)[zn]A(z)=an Cn

C(z)=114z2z .

Die Definition von ist auch unser Ansatz zur Lösung einer Wiederholung. Dies funktioniert am besten für lineare Wiederholungen. Nehmen Sie der Einfachheit halber eine Wiederholung der Form anA

a0=c0ak1=ck1an=f(n)+i=1kbiani,nk

für einige feste und eine von allen unabhängige Funktion . Jetzt fügen wir einfach beide Anker und den rekursiven Teil in den Satz ein, das heißt f ( n ) : NN a ib1,,bkRf(n):NNai

A(z)=n=0anzn=c0z0+c1z1++ck1zk1+n=k[f(n)+(i=1kbiani)]zn

Unter Verwendung der Mechanik der Summenmanipulation, der Eigenschaften formaler Potenzreihen und bekannter Identitäten ² muss die letzte rechte Seite in geschlossene Formen gebracht werden, typischerweise in Form von . Die resultierende Gleichung kann (oft) nach gelöst werden . Die Reihenausweitung des Ergebnisses (die leicht zu erhalten, bekannt oder auf andere Weise zugänglich sein kann) ist im Wesentlichen die Lösung.A ( z )A(z)A(z)

Gute Einführungen finden sich in Wilfs Buch [3] und in GKP [4]. Fortgeschrittenes Material wurde von Flajolet und Sedgewick gesammelt [5].

Beispiel

Erwägen

a0=1a1=2an=5n+3an12an2,n>1

Wir berechnen:

A(z)=n=0anzn=1+2z+n=2[3an12an2+5n]zn=1+2z+3n=2an1zn2n=2an2zn+5n=2nzn=1+2z+3zn=1anzn2z2n=0anzn+5n=2nzn=1+2z+3z(A(z)a0)2z2A(z)+5(z(1z)2z)=16z+(3z2z2)A(z)+5z(1z)2

Das löst sich auf

A(z)=13z+13z26z3(12z)(1z)3=1612z51z5(1z)25(1z)3=16n=02nzn5n=0zn5n=0(n+1)zn5n=0(n+1)(n+2)2zn

Jetzt können wir endlich ablesen

an=162n55(n+1)52(n+1)(n+2)=2n+452n2252n15

Sobald Sie sich daran gewöhnt haben , bemerken Sie, dass dies alles ziemlich mechanisch ist. In der Tat kann die Computeralgebra all diese Dinge in vielen Fällen für Sie erledigen. Das Gute ist, dass es (mehr oder weniger) dieser Mechaniker bleibt, auch wenn die Wiederholung komplexer ist. Sehen Sie hier ein komplizierteres, weniger mechanisches Beispiel.

Beachten Sie auch, dass die allgemeinen Techniken auch funktionieren, wenn die gesuchten Objekte komplexe Zahlen oder sogar Polynome sind.

Eine Abkuerzung

Für lineare und homogene Rezidive, also solche der Form

a0=c0ak1=ck1an=i=1kbiani,nk

Dies geschieht jedes Mal auf die gleiche Weise. Wenn wir die obige Berechnung symbolisch durchführen, finden wir das folgende Lemma . Lassen

zkb1zk1b2zk2bk

sei das charakteristische Polynom (der Wiederholung). Es sei weiterhin die (paarweise getrennten) Nullen des Polynoms mit der Multiplizität . Dann ist der gewünschte Koeffizient gegeben durchr iλ1,,λlri

an=i=1lj=1ribi,jnj1λin

mit unbekanntem . Da das charakteristische Polynom den Grad , gibt es genau (komplexe) Nullen, dh die Summe zu . Daher können die fehlenden Koeffizienten durch Lösen des linearen Gleichungssystems mit Gleichungen bestimmt werden, die durch Gleichsetzen der obigen Formel mit einem beliebigen des (z. B. der Anker) erhalten werden. k k r i k k k a nbi,jkkrikkkan

Asymptotika

Zu einem geschlossenen Formular für ist normalerweise der einfache Teil. Es wird jedoch schnell schwierig, es in der Erzeugung von Funktionen auszudrücken, von denen wir die Koeffizienten kennen (wie wir es im Beispiel getan haben). Beispiele sind von oben und das für die Anzahl der in der Frage erwähnten Dyck-Wörter.C ( z )A(z)C(z)

Man kann komplexe Analysemaschinen einsetzen, insbesondere die Singularitätsanalyse, um Asymptoten für die Koeffizienten zu erhalten; Schlagworte sind die Darboux-Methode und die Sattelpunktmethode. Diese basieren auf dem Residuensatz und der Cauchyschen Integralformel . Siehe [6] für Details.


  1. Ähnliches können Sie mit Exponential- , Dirichlet- und einigen anderen Erzeugungsfunktionen tun . Was am besten funktioniert, hängt von der jeweiligen Reihenfolge ab und insbesondere davon, ob Sie die erforderlichen geschlossenen Formulare finden.
  2. Zum Beispiel aus dem TCS Cheat Sheet oder [3].
  3. generatedfunctionology von H. Wilf (1994, 2. Aufl.) - steht zum kostenlosen Download zur Verfügung
  4. Konkrete Mathematik von RL Graham, DE Knuth und O. Patashnik (1994, 2. Aufl.)
  5. Einführung in die Analyse von Algorithmen von R. Sedgewick und P. Flajolet (2. Auflage, 2013) - zum kostenlosen Download
  6. Analytic Combinatorics von P. Flajolet und R. Sedgewick (2009) - zum kostenlosen Download verfügbar

21

Hauptsatz

Das Master-Theorem gibt Asymptotik für die Lösungen sogenannter Divide & Conquer- Wiederholungen an, dh für die Aufteilung ihrer Parameter in proportionale Teile (anstatt Konstanten wegzuschneiden). Sie treten normalerweise bei der Analyse von (rekursiven) Divisions- und Eroberungsalgorithmen auf, daher der Name. Das Theorem ist beliebt, weil es oft unglaublich einfach anzuwenden ist. Andererseits kann es nur auf Wiederholungen der folgenden Form angewendet werden:

T(n)=aT(nb)+f(n)

mit . Es gibt drei Fällea1,b>1

  1. fO(nlogb(a)ε)

    für einige ;ε>0

  2. fΘ(nlogbalogkn) ,

    für einige ;k0

  3. fΩ(nlogb(a)+ε)

    für einige undε>0

    af(nb)cf(n)

    für einige und .n c<1n

die die Asymptoten implizieren

  1. TΘ(nlogba) ,
  2. TΘ(nlogbalogk+1n) und
  3. TΘ(f) ,

beziehungsweise. Beachten Sie, dass die Basisfälle hier nicht angegeben oder verwendet werden. das ist sinnvoll, wenn man bedenkt, dass wir nur asymptotisches Verhalten untersuchen. Wir nehmen stillschweigend an, dass es sich um einige Konstanten handelt (was können sie sonst sein ? Welche Konstanten wir nicht sehen, ist irrelevant. Sie verschwinden alle im .Θ

Beispiele

  1. Betrachten Sie die Wiederholung

    T(n)=4T(n3)+n .

    Mit und - beachten Sie, dass gilt, wenn . Daher ist .b = 3 log b a 1,26 ε = 0,25 T Θ ( n log 3 4 ) = Θ ( n 1.261 ... )f(n)=n,a=4b=3logba1.26ε=0.25TΘ(nlog34)=Θ(n1.261)

  2. Betrachten Sie die Wiederholung

    T(n)=2T(n/2)+n .

    Mit und - beachten Sie, dass gilt, wenn . Daher ist .b = 2 log b a = 1 k = 0 T & THgr; ( n log n )f(n)=n,a=2b=2logba=1k=0TΘ(nlogn)

  3. Betrachten Sie die Wiederholung

    T(n)=3T(n4)+n .

    Mit und - beachten Sie, dass Wir sehen, dass Fall drei mit und . Daher ist .b = 4 log b a 0,79 ε = 0,2 c = 1 T & THgr; ( n )f(n)=n,a=3b=4logba0.79ε=0.2c=1TΘ(n)

  4. Betrachten Sie die Wiederholung

    T(n)=16T(n4)+n!

    Hier haben wir , und- Viele Standardbeispiele haben das Polynom , dies ist jedoch keine Regel. Wir haben und Fall drei gilt wieder. In diesem Fall können wir jedoch ein beliebiges und als wählen für alle . Daher .b = 4 f ( n ) = n ! f log b a = 2 ε c > 0 n ! & Egr ; & OHgr; ( n k ) k T & egr ; & THgr; ( n ! )a=16b=4f(n)=n!flogba=2εc>0n!Ω(nk)kTΘ(n!)

Weitere Lektüre

  • Es ist gut möglich, dass keiner der Fälle des Hauptsatzes zutrifft. Beispielsweise haben die Teilprobleme möglicherweise nicht die gleiche Größe oder eine komplexere Form. Es gibt einige Erweiterungen des Master-Theorems, zum Beispiel Akra-Bazzi [1] oder Roura [2]. Es gibt sogar eine Version, die für diskrete Wiederholungen funktioniert (dh Böden und Decken werden für die rekursiven Parameter verwendet) und schärfere Ergebnisse liefert [3].

  • Normalerweise müssen Sie die tatsächliche Wiederholungsbeziehung, die Sie haben, in Form bringen, bevor Sie den Hauptsatz anwenden können. Gängige Transformationen, die Asymptotika bewahren, umfassen das Fallenlassen von Böden und Decken sowie die Annahme von . Achten Sie darauf, dass Sie hier nichts kaputt machen. Einzelheiten finden Sie in [4] Abschnitt 4.6 und in dieser Frage.n=bk


  1. Zur Lösung linearer Rekursionsgleichungen von M. Akra und L. Bazzi (1998)
  2. Ein verbesserter Hauptsatz für Divide-and-Conquer-Wiederholungen von S. Roura (1997)
    Verweist auf andere verbesserte Hauptsätze.
  3. Ein Master-Theorem für diskrete Divisions- und Eroberungsrezidive von M. Drmota und W. Szpankowski (2011)
  4. Einführung in Algorithmen von Cormen et al. (2009, 3. Auflage)

Dies mag die blöde Frage sein, aber ich kann das mentale Modell oft nicht halten, wenn a nicht gleich b ist, ich weiß nicht warum, aber ich habe immer das Gefühl, dass beide immer gleich sein müssen, wie bei Mergesort, in das wir das Problem aufteilen zwei gleiche (fast) Hälften und mit jeweils n / 2 Instanzen. Wenn wir den Algorithmus in drei gleiche Teile teilen, sollten die Eingaben auch in drei gleiche Teile geteilt werden, was wiederum a und b gleich macht. Wie kann ich diese falsche Intuition brechen?
CodeYogi

17

Rate & beweise

Oder wie ich es gerne nenne, die " Technik". Es kann auf alle Arten von Identitäten angewendet werden. Die Idee ist einfach:

Errate die Lösung und beweise ihre Richtigkeit.

Dies ist eine beliebte Methode, wohl weil es normalerweise etwas Kreativität und / oder Erfahrung erfordert (gut zum Vorführen), aber wenig Mechanik (sieht elegant aus). Die Kunst hier besteht darin, gute, fundierte Vermutungen anzustellen. der Beweis ist (in unserem Fall) in der Regel eine mehr oder weniger einfache Induktion.

Bei der Anwendung auf Wiederholungen erfolgt das "Erraten" normalerweise durch

  • Erweiterung um die Wiederholung ein paar Mal,
  • den Anker herausfinden und
  • Erraten Sie das Muster für die Zwischenstufe (die ).

Einfaches Beispiel

s0=s1=s2=1sn=5sn3+6n2

Lassen Sie uns die Definition von ein paar Mal erweitern:sn

sn=5sn3+6=5(5sn6+6)+6=5(5(5sn9+6)+6)+6 =5(5(5(51n÷3 times+6)+6)+6)+6n÷3 times

Hier ist das Muster leicht zu erkennen und führt uns zum Claim:

sn=5n3+6i=0n315i=525n364

Nun beweisen wir die Identität durch Induktion. Für können wir die Richtigkeit durch Einstecken des jeweiligen Wertes feststellen. Unter der Annahme, dass die Identität für alle für ein beliebiges, aber festes , berechnen wirn 'n n 3n{0,1,2}nnn3

sn+3=5sn+6=5(525n364)+6=525n3+164=525n+3364

das beweist die Identität durch die Kraft der Induktion.

Wenn Sie versuchen , diese beteiligen Rezidive auf , mehr zu verwenden, stoßen Sie schnell den vorrangigen Nachteil dieser Methode: Es kann schwierig sein , zu sehen , das Muster, oder es zu einer schönen geschlossenen Form kondensiert.

Asymptotika

Diese Methode kann auch bei Asymptoten angewendet werden. Beachten Sie jedoch , dass Sie die Konstanten für die Landau-Symbole erraten müssen, da es eine Konstante geben muss, die die Schranke für alle festlegt , dh der Konstantenfaktor kann sich während der Induktion nicht ändern.n

Betrachten Sie zum Beispiel die Mergesort-Laufzeitwiederholung, vereinfacht für den Fall von ¹:n=2k

T(1)=T(0)=0T(n)=2T(n/2)+n1n1

Wir vermuten, dass mit der Konstante , das ist . Wir beweisen dies durch Induktion über ; die induktive stufe sieht so aus:c = 1 T ( n ) n log n kT(n)O(nlogn)c=1T(n)nlognk

T(n)=2T(n/2)+n12n2logn2+n1=nlognnlog2+n1<nlogn


  1. Bei nicht abnehmenden Sequenzen von Naturtönen hat jede unendliche Untersequenz das gleiche asymptotische Wachstum wie die ursprüngliche Sequenz.

15

Die Akra-Bazzi-Methode

Die Akra-Bazzi-Methode liefert Asymptoten für Wiederholungen der Form: Dies umfasst die üblichen Divide-and-Conquer-Wiederholungen, aber auch Fälle, in denen die Division ungleich ist. Die "Fudge-Terme" können beispielsweise Divisionen berücksichtigen, die nicht exakt herauskommen. Die Bedingungen für die Anwendbarkeit sind: h i ( x )

T(x)=1ikaiT(bix+hi(x))+g(x)for xx0
hi(x)
  • Es gibt genügend Basisfälle, um die Wiederholung in Gang zu bringen
  • Die und sind alle Konstantenb iaibi
  • Für alle ista i > 0iai>0
  • Für alle ist0 < b i < 1i0<bi<1
  • c x |g(x)|=O(xc) für eine Konstante alscx
  • Für alle gilt| h i ( x ) | = O ( x / ( log x ) 2 )i|hi(x)|=O(x/(logx)2)
  • x0 ist eine Konstante

Beachten Sie, dass und als Sägezahnfunktion immer zwischen 0 und 1 liegt und (oder je nach ) erfüllt die Bedingungen für .{ u } = u - u b i x b i x h ibix=bix{bix}{u}=uubixbixhi

Finde so, dass: Dann ist das asymptotische Verhalten von als gegeben durch: mit "groß genug", dh es gibt so dass für alle .Σ 1 i k ein i b p i = 1 T ( x ) x T ( x ) = Θ ( x p ( 1 + x x 1 g ( u )p

1ikaibip=1
T(x)xx1k1>0g(x/2)k1g(x)x>x1
T(x)=Θ(xp(1+x1xg(u)up+1du))
x1k1>0
(2)g(x/2)k1g(x)
x>x1

Beispiel A

Nehmen Sie als Beispiel die Rekursion für , wobei : Die Bedingungen sind erfüllt, wir brauchen : Wie es der Zufall wollte, ist . Wir haben also: n5T(0)=T(1)=T(2)=T(3)=T(4)=17

T(n)=9T(n/5)+T(4n/5)+3nlogn
p
9(15)p+(45)p=1
p=2
T(n)=Θ(n2(1+3n3uloguu3du))=Θ(n2)

da mit wir für alle erfüllen . Da das Integral konvergiert, auch wenn wir andere Konstanten wie als Untergrenze verwenden, ist es zulässig, diese ebenfalls zu verwenden. der Unterschied verschwindet in .k112(1log2log3)(2)x31Θ

Beispiel B

Ein anderes Beispiel ist das folgende für : Wir haben überprüfen. Wir haben, dass es eine einzelne , , die auscheckt. Angenommen, das ist wirklich und / oder , dann auch das implizierte aus. Wir brauchen also: Also und: n2

T(n)=4T(n/2)+n2/lgn
g(n)=n2/lnn=O(n2)a1=4b1=1/2n/2n/2n/2hi(n)
a1b1p=4(1/2)p=1
p=2
T(n)=Θ(n2(1+2nu2duu3lnu))=Θ(n2(1+2nduulnu))=Θ(n2lnlnn)
Wir wenden einen ähnlichen Trick wie oben an die untere Grenze des Integrals, nur dass wir weil das Integral nicht für konvergiert .21

(Die Hilfe von Maxima mit der Algebra wird dankbar gewürdigt)


1
Ich habe das Originalpapier überprüft. Sie haben eine technische Beschränkung für die Untergrenze des Integrals; Ihre Version (unter Berufung auf die Umfrage von Mehlhorn?) verlangt ausdrücklich, dass das Integral konvergiert. Da ich der Meinung bin, dass der ursprüngliche Zustand leichter zu überprüfen ist, habe ich die Aussage und die Beispiele entsprechend geändert.
Raphael

1
Außerdem gibt das Originalpapier nicht die Version mit dem ; stammt das aus Leightons Manuskript? Haben Sie eine Referenz, die von Experten begutachtet wurde? Sollen wir zu der Version übergehen, die 1998 von Akra & Bazzi veröffentlicht wurde? hi
Raphael

1
Ich bin über etwas gestolpert, das im Theorem inkonsistent zu sein scheint . Vielleicht kennst du die Antwort?
Raphael

11

Summationen

Oft stößt man auf eine Wiederholung der Form wobei monoton ist. In diesem Fall können wir und so einen Startwert vorgeben, um zu schätzen wir die Summe schätzen .

T(n)=T(n1)+f(n),
f(n)
T(n)=T(c)+m=c+1nf(m),
T(c)T(n)f(c+1)++f(m)

Nicht abnehmendesf(n)

Wenn monoton ist und nicht abnimmt, haben wir die offensichtlichen Grenzen Diese Schranken sind in dem Sinne bestmöglich, dass sie für einige Funktionen eng sind: die obere Schranke für konstante Funktionen und die untere Schranke für Stufenfunktionen ( für und für ). In vielen Fällen sind diese Schätzungen jedoch nicht sehr hilfreich. Wenn zum Beispiel , ist die untere Grenze und die obere Grenze ist , so dass sie ziemlich weit voneinander entfernt sind.f(n)

f(n)m=c+1nf(m)(nc)f(n).
f(m)=1mnf(m)=0m<nf(m)=mn(nc)n

Integration

Eine bessere Schätzung ergibt sich durch Integration: Für ergibt dies den korrekten Wert der Summe zu Begriffen niedrigerer Ordnung: Wenn , können wir die Summe explizit berechnen, aber in vielen Fällen ist eine explizite Berechnung schwierig. Zum Beispiel, wenn die Stammfunktion von ist , und so

cnf(x)dxm=c+1nf(m)c+1n+1f(x)dx.
f(m)=m
12n212c2m=c+1nm12(n+1)212(c+1)2.
f(m)=mf(m)=mlogmf(1/2)x2logx(1/4)x2
m=c+1nmlogm=12n2logn±Θ(n2).

Die Euler-Maclaurin-Formel liefert bessere Schätzungen. Diese Formel kann zum Beispiel verwendet werden, um starke Formen der Stirlingschen Formel zu beweisen, indem die Summe .logn!=m=1nlogm

Nicht zunehmendesf(n)

In einigen Fällen ist monoton und nimmt nicht zu. Die trivialen Schätzungen werden zu und die integralen Schätzungen Als Beispiel erhalten wir für unter Verwendung vonf(n)

f(1)m=c+1nf(m)(nc)f(1),
c+1n+1f(x)dxm=c+1nf(m)cnf(x)dx.
f(m)=1/mf(m)=logm
m=c+1n1m=logn±Θ(1).

Diese Antwort Angebote weniger mit der Lösung Rezidive sondern mit Schatz Summe (was möglicherweise nützliche Lösung Rezidive sein); Die Technik ist das Doppelte der Riemannschen Summen . Es sollte auch mit anderen Formen wie für konstante ? T(nd)d
Raphael

Richtig, kann auch auf diese Weise gelöst werden. T(n)=cT(nd)+f(n)
Yuval Filmus

9

Sedgewick und Flajolet haben umfangreiche Arbeiten in der analytischen Kombinatorik durchgeführt , mit deren Hilfe Rezidive mithilfe einer Kombination aus generierenden Funktionen und komplexer Analyse asymptotisch gelöst werden können. Ihre Arbeit ermöglicht die automatische Lösung vieler Wiederholungen und wurde in einigen Computeralgebrasystemen implementiert.

Dieses Lehrbuch zu diesem Thema wurde von Flajolet und Sedgewick verfasst und ist eine hervorragende Referenz. Eine etwas einfachere Darstellung, die sich an Anwendungen zur Algorithmusanalyse orientiert, ist dieser Text von Sedgewick und Flajolet.

Hoffe das hilft!


4
Dies ist eine nette Referenz, aber wir möchten Methoden auf eine zugängliche Weise sammeln. Können Sie eine bestimmte Methode im Detail vorstellen?
Raphael

9

Es kann vorkommen, dass Sie auf eine seltsame Wiederholung wie diese stoßen: Wenn Sie wie ich sind, werden Sie feststellen, dass Sie den Hauptsatz nicht anwenden können und dann denken Sie vielleicht: " hmmm ... vielleicht könnte eine wiederkehrende Baumanalyse funktionieren. " Dann merkt man, dass der Baum sehr schnell brutto wird. Nach einigem Suchen im Internet sehen Sie, dass die Akra-Bazzi-Methode funktioniert! Dann fängst du tatsächlich an, dich damit zu befassen und realisierst, dass du nicht wirklich die ganze Mathematik machen willst. Wenn Sie bis jetzt so wie ich waren, werden Sie gespannt sein, dass es einen einfacheren Weg gibt.

T(n)={cn<72T(n5)+4T(n7)+cnn7


The Uneven Split Theorem Teil 1

Sei und positive Konstanten.ck

Dann sei eine positive Konstante, so dass .{a1,a2,,ak}1kai<1

Wir müssen auch eine Wiederholung der Form haben (wie in unserem obigen Beispiel):

T(n)c0<n<max{a11,a21,,ak1}T(n)cn+T(a1n)+T(a2n)+T(akn)nmax{a11,a21,,ak1}

Anspruch

Dann behaupte ich wobei eine Konstante ist (zB asymptotisch linear) und:T(n)bnb

b=c1(1kai)

Beweis durch Induktion

Basis :n<max{a11,a21,,ak1}T(n)c<b<bn

Induktion : Nehmen Sie an, dass für jedes , das wir haben, wahr istn<n

T(n)cn+T(a1n)+T(a2n)++T(akn)cn+ba1n+ba2n++bakncn+ba1n+ba2n++bakn=cn+bn1kai=cncn1kai1(1kai)+cn1kai1(1kai)=cn1(1kai)=bn

Dann haben wir .T(n)bnT(n)=O(n)

Beispiel

T(n)={cn<72T(n5)+4T(n7)+cnn7
Wir überprüfen zuerst die Koeffizienten in der Summe der rekursiven Aufrufe auf weniger als eins:
1>1kai=15+15+17+17+17+17=25+47=3435

Als nächstes verifizieren wir, dass der Basisfall kleiner als das Maximum der Inversen der Koeffizienten ist:

n<max{a11,a21,,ak1}=max{5,5,7,7,7,7}=7

Wenn diese Bedingungen erfüllt sind, kennen wir wobei eine Konstante ist, die gleich: Deshalb haben wir: T(n)bnb

b=c1(1kai)=c13435=35c
T(n)35cnT(n)cnT(n)=Θ(n)


The Uneven Split Theorem Teil 2

Ebenso können wir eine Schranke beweisen, wenn . Der Proof folgt weitgehend demselben Format:1k=1

Lassen und seine positive Konstanten , so dass .ckk>1

Dann sei eine positive Konstante mit .{a1,a2,,ak}1kai=1

Wir müssen auch eine Wiederholung der Form haben (wie in unserem obigen Beispiel):

T(n)c0<n<max{a11,a21,,ak1}T(n)cn+T(a1n)+T(a2n)+T(akn)nmax{a11,a21,,ak1}

Anspruch

Dann behaupte ich (wir wählen base weil der Verzweigungsfaktor des Rekursionsbaums ist), wobei und Konstanten sind (z. B. asymptotisch linearithmisch) ) so dass:T(n)αnlogkn+βnlogkkαβ

β=c
und
α=c1kailogkai1

Beweis durch Induktion

Basis :n<max{a11,a21,,ak1}T(n)c=β<αnlogkn+βn

Induktion : Nehmen Sie an, dass für jedes , das wir haben, wahr istn<n

T(n)cn+T(a1n)+T(a2n)++T(akn)cn+1k(αainlogkain+βain)=cn+αn1k(ailogkain)+βn1kai=cn+αn1k(ailogknai1)+βn=cn+αn1k(ai(logknlogkai1))+βn=cn+αn1kailogknαn1kailogkai1+βn=αn1kailogkn+βn=αnlogkn+βn

Dann haben wir .T(n)αnlogkn+βnT(n)=O(nlogn)

Beispiel

Lassen Sie uns das vorherige Beispiel ändern, das wir nur für ein winziges Bit verwendet haben:

T(n)={cn<352T(n5)+4T(n7)+T(n35)+cnn35

Wir überprüfen zunächst die Koeffizienten innerhalb der rekursiven Aufrufe auf eins:

1=1kai=15+15+17+17+17+17+135=25+47+135=3535

Als nächstes verifizieren wir, dass der Basisfall kleiner als das Maximum der Inversen der Koeffizienten ist:

n<max{a11,a21,,ak1}=max{5,5,7,7,7,7,35}=35

Wenn diese Bedingungen erfüllt sind, wissen wir, dass wobei und eine Konstante ist, die gleich: Deshalb haben wir: T(n)αnlogn+βnβ=cα

b=c1kailogkai1=c2log755+4log777+log735351.048c
T(n)1.048cnlog7n+cnT(n)=O(nlogn)


6

Nachdem ich diesen Beitrag noch einmal überprüft habe, bin ich überrascht, dass er hier noch nicht aktiviert ist.

Domänenumwandlung / Änderung von Variablen

Bei Wiederholungen ist es manchmal hilfreich, die Domain zu ändern, wenn nicht klar ist, wie tief der Rekursionsstapel reichen wird.

Nehmen Sie zum Beispiel die folgende Wiederholung:

T(n)=T(22loglogn)+logloglogn

Wie könnten wir das jemals lösen? Wir könnten die Serie ausweiten, aber ich verspreche, dass dies sehr schnell schlimm wird. Betrachten wir stattdessen, wie sich unsere Eingabe bei jedem Aufruf ändert.

Wir haben zuerst:

  1. n dann
  2. 22loglogn , dann
  3. 22loglog(22loglogn) usw.

Das Ziel einer Domänenumwandlung besteht nun darin, unsere Wiederholung in ein äquivalentes zu ändern, sodass wir anstelle der obigen Übergänge einfach .S(k)k,k1,k2,

Wenn wir beispielsweise , erhalten wir für die obige Wiederholung Folgendes: Dann können wir es einfach umschreiben als: Dann müssen Sie nur noch zurück in konvertieren, um zu erhalten: n=2222k

T(2222k)=T(22loglog2222k)+logloglog(2222k)=T(2222k1)+2k
T(k)=T(k1)+2k=i=1k2k=2k+11
kn
T(n)=2(loglogloglogn)+11=O(logloglogn)


Mit diesem Beispiel können wir jetzt unser Ziel sehen.

Angenommen, Für eine Konstante und Funktionen und .

T(n)={h(1)n=1aT(f(n))+h(n)otherwise
af(n)h(n)

Wir versuchen nun, eine Funktion und so dass g(k)=nf(g(k))=g(k1)

T(g(k))=aT(f(g(k)))+h(g(k))=aT(g(k1))+h(g(k))

Im Allgemeinen wollen wir wobei die wiederholte Anwendung von auf , mal ist. (zB ). Dadurch kann als "iterierende" Funktion fungieren. Wo in der Tiefe der Rekursion die geleistete Arbeit einfach .f(i)(n)=g(ki)f(i)(n)fnif(2)(n)=f(f(n))g(k)ih(g(ki))

Dann können wir dies leicht in umwandeln, so dass Dann müssen wir uns nur darum kümmern Summieren von für alle bis zu einem gegebenen Basisfall. Das heißt, S(k)=T(g(k))

S(k)=aS(k1)+h(g(k))
h(g(k))k
S(k)=i=g1(1)kakih(g(i))

Wenn wir für eine geschlossene Form Funktion bestimmen können, können wir als bestimmen.S(k)=γ(k)γT(n)

T(n)=γ(g1(n))

Dann verwenden wir dies, um eine Bindung an über eine der anderen oben genannten Methoden zu erhalten. Sie könnten diese Methode natürlich ein wenig an Ihre Spezifikation anpassen, aber im Allgemeinen versuchen Sie, eine iterierende Funktion zu finden, um in eine einfache Rekursion zu verwandeln .T(n)g(k)T(n)

Ich kenne noch keinen genauen Weg, um zu bestimmen , aber ich werde weiter darüber nachdenken und aktualisieren, wenn es klarer wird (oder wenn ein Kommentator einige Tipps hat!). Ich habe meine -Funktionen in der Vergangenheit meistens durch Ausprobieren gefunden (siehe hier , hier , hier und hier für Beispiele).g(k)g(k)


1
Gibt es irgendwelche Einschränkungen für , und / oder ? Ich frage speziell, weil ähnliche Folklore-Substitutionstricks manchmal scheitern, wenn es um die Landau-Notation geht, was mich beunruhigt, wenn wirklich immer die richtige Antwort ist. fghγg1
Raphael

@Raphael, das ist der Teil, bei dem ich mir nicht ganz sicher bin. Ich denke, es gibt ein paar Dinge, die wir sicherstellen müssen, um die Gleichwertigkeit herzustellen. 1) Die Rekursionstiefe ist gleich, dies kann durch und sichergestellt werden . 2) Die auf jeder Rekursionsebene geleistete Arbeit ist die gleiche, die meines Erachtens durch und dann erzwungen wird . Die Grundidee dabei ist, einfach in eine Summe umzuwandeln, nämlich . Die Konvertierung von nach mir ebenfalls nicht 100% sicher (ich habe keinen Beweis), aber ich kann nicht erkennen, warum falsch. Gedanken? f(g(k))=g(k1)g(k)=ng(k)=nh(g(k))=h(n)T(n)i=ckh(g(i))γ(k)γ(g1(n))
Ryan

@Raphael Sie könnten auch den Fall in Betracht ziehen, in dem anstelle von ist und die Konvertierung in geradliniger sein sollte nach vorne. Einfach zu beweisen, denke ich, wenn Sie nur die Gleichwertigkeit in der Summe zeigen. Wahrscheinlich würden Sie hier ein paar lustige Probleme mit der Landau-Notation bekommen, aber wenn Sie Landau weglassen und sich nur auf die exakte Gleichheit beschränken, denke ich, dass das in Ordnung sein sollte. S(k)=γ(k)ΘT(n)=γ(g1(n))
Ryan

@Raphael Ich habe es bearbeitet, um nur Gleichheit zu verwenden, daher sollte die Landau-Notation dies nicht durcheinander bringen. Auch etwas mehr verallgemeinert. Wobei Sie noch etwas verallgemeinern könnten, um anstelle der Konstante eine Funktion verwenden . Dann haben Sie statt in der Summe einfach eine Anwendung von . β(n)aakiβ(g(i))
Ryan

5

Es gibt noch einen Ansatz für einfache Wiederholungsbeziehungen: Bitten Sie Wolfram Alpha , die Wiederholung für Sie zu lösen.

Versuchen Sie beispielsweise, f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2)Wolfram Alpha einzugeben. Sie erhalten eine Lösung mit einem Link zu den Fibonacci-Zahlen. Oder versuchen Sie f(1)=1, f(n)=f(n-1)+noder f(1)=1, f(n)=2*f(n-1)+3*noder f(n)=f(n-1) + 2 f(n-2), f(1)=1, f(2)=3für andere Beispiele. Seien Sie jedoch gewarnt: Wolfram Alpha kann einige sehr einfache Wiederholungen lösen, fällt jedoch für komplexere auseinander.

Dieser Ansatz vermeidet die Notwendigkeit von Überlegungen, die entweder als Fehler oder als Merkmal angesehen werden können.


3
Ich kann denken , dass der Zweck dieser Website wäre zu erklären , wie Computer - Algebra tut Dinge wie diese, nicht seine blinden Einsatz zu befürworten. Aber die Werkzeuge sind nützlich, so nützlich, dass man sie wahrscheinlich immer ausprobieren sollte, bevor man Zeit "verschwendet" (in der "Praxis").
Raphael

Aus meiner eigenen Erfahrung, versuchen , Computeralgebra , ohne zu verwenden , jeden Sinn für die „harte“ oder „easy“ ist man nicht sehr weit. Insbesondere bei der Algorithmusanalyse kann eine Massage erforderlich sein. Ich weiß nicht, wie Sie das tun, ohne selbst zu wissen, wie Sie Wiederholungen lösen können. (Für den Zweck dieser Site gibt es mehrere Gesichtspunkte. Fakt: Bisher reichte "dies ist für jemanden nützlich " nicht aus, um einen Beitrag zu rechtfertigen.)
Raphael

5

Fall 2 des Hauptsatzes behandelt, wie gewöhnlich angegeben, nur Wiederholungen der Form in der für . Der folgende Satz, entnommen aus einem Handout von Jeffrey Leon, gibt die Antwort für negatives :T(n)=aT(n/b)+f(n)f(n)=Θ(nlogablogkn)k0k

Betrachten Sie die Wiederholung mit einem geeigneten Basisfall.T(n)=aT(n/b)+f(n)

  1. Wenn für dann ist .f(n)=O(nlogbalogc1n)c<0T(n)=Θ(nlogba)

  2. Wenn für dann ist .f(n)=Θ(nlogbalogc1n)c=0T(n)=Θ(nlogbaloglogn)

  3. Wenn für dann ist ).f(n)=Θ(nlogbalogc1n)c>0T(n)=Θ(nlogbalogcn

Der Beweis verwendet die Methode der wiederholten Substitution, wie wir jetzt skizzieren. Angenommen, und . Dann gilt für eine Potenz von , Betrachten wir nun die Fälle nacheinander. Wenn , konvergiert die Reihe , und so ist . Wenn , ist die Summe die harmonische Summe und sof(n)=nlogbalogbc1nT(1)=0nb

T(n)=i=0logbn1ai(nbi)logbalogbc1(nbi)=i=0logbn1nlogba(logbni)c1=nlogbaj=1logbnjc1.
c<0j=0jc1T(n)=Θ(nlogba)c=0Hlogbn=log(logbn)+O(1)T(n)=Θ(nlogbaloglogn) . Wenn , können wir die Summe mit einem Integral approximieren: und so ist .c>0T(n)=Θ(nlogbalogcn)
j=1logbn0logbnxc1dx=xcc|0logbn=logbcnc,
T(n)=Θ(nlogbalogcn)
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.