Fehler bei der Verwendung der asymptotischen Notation


10

Ich versuche zu verstehen, was mit dem folgenden Beweis der folgenden Wiederholung falsch ist

T(n)2(cn

T(n)=2T(n2)+n
T(n)2(cn2)+ncn+n=n(c+1)=O(n)

Die Dokumentation sagt, dass es wegen der induktiven Hypothese falsch ist, dass Was fehlt mir?

T(n)cn

2
Wiederholungen dieser Form können auch mit dem Master-Theorem gelöst werden .
Juho

2
@Ran: Ich denke nicht, dass der Master-Satz ein geeignetes Tag für diese Frage ist. Die Frage ist nicht, wie man sie löst, sondern um den Irrtum in einem bestimmten Argument aufzuzeigen. Außerdem ist der Master-Satz wahrscheinlich zu spezifisch und verdient es wahrscheinlich nicht, ein eigenes Tag zu haben. Im Allgemeinen sollten wir anhand der Frage taggen, nicht anhand möglicher Antworten. Würden Sie zum Beispiel diese Akra-Bazzi markieren?
Aryabhata

"Was ist los mit dem folgenden Beweis" - Ich sehe keinen Beweis. Es ist oft hilfreich, einen vollständigen Beweis aufzuschreiben (dh die Induktion explizit zu machen), um Fehler zu erkennen.
Raphael

Eine verwandte allgemeinere Frage ist das Lösen oder Annähern von Wiederholungsrelationen für Zahlenfolgen .
Juho

Antworten:


12

Nehmen wir an, das Endziel ist es, T ( n) zu beweisen. Sie beginnen mit der Induktionshypothese:T(n)=O(n)

für alle i < n .T(i)cii<n

Und um den Beweis zu vervollständigen, müssen Sie auch zeigen, dass .T(n)cn

Was Sie jedoch ableiten können, ist , was für die Vervollständigung des Beweises nicht hilfreich ist. Sie benötigen eine Konstante c für (fast) alle n . Daher können wir nichts schließen und T ( n ) = O ( n ) ist nicht bewiesen.T(n)(c+1)ncnT(n)=O(n)

Beachten Sie, dass Sie zwischen dem Ergebnis und dem Proof-Prozess verwechselt werden. Und noch ein Punkt, ist tatsächlich Θ ( nT(n)in diesem Fall log n ) , so dass Sie eine geeignete Induktionshypothese in Betracht ziehen können, um dies beweisen zu können.Θ(nlogn)


Wenn wir c '= c + 1 ersetzen, wird sich etwas ändern?
Erb

@erb: Nein, das wird es nicht. Sie müssen für eine gewählte Konstante beweisen. Wenn Sie ersetzen , haben Sie schließlich T ( n ) ( c ' + 1 ) n (oder T ( n ) ( c + 2 ) n ), dann ist das Ergebnis dasselbe. c=c+1T(n)(c+1)nT(n)(c+2)n
Pad

8

Sie haben einige Schritte ausgelassen. Es sieht so aus, als würden Sie versuchen, durch Induktion zu beweisen, dass , und Ihr Beweis lautet:T(n)=O(n)

Angenommen, für k < n . Dies bedeutet T ( k ) cT(k)=O(k)k<n für einige c . Dann ist T ( n ) = 2 T ( n / 2 ) + n 2 c n / 2 + n ( cT(k)ckc , also T ( n ) = O ( n )T(n)=2T(n/2)+n2cn/2+n(c+1)nT(n)=O(n) .

Dieser Beweis geht von Anfang an schief: „ für k < n “ macht keinen Sinn. Big oh ist eine asymptotische Vorstellung: T ( k ) = O ( k ) bedeutet, dass es eine Konstante c und eine Schwelle N gibt, so dass k N , T ( kT(k)=O(k)k<nT(k)=O(k)c . Und am Ende können Sie nicht schließen, dass „ T ( n ) = O ( n ) “, weil dies etwas über die Funktion T als Ganzesaussagtund Sie nur etwas über den bestimmten Wert T ( n ) bewiesen haben..kN,T(k)ckT(n)=O(n)TT(n)

Sie müssen explizit angeben, was bedeutet. Vielleicht lautet Ihr Beweis:O

Angenommen, T(k)ckk<nT(n)=2T(n/2)+n2cn/2+n(c+1)n

T(k)ckk=nT(k)(c+1)kT(k)ckcTck

c1km=2pkcm=ck+pck=c0log2k

k1T(k)clog2(k)

Θ(nlog(n))O(n)

2T(n/2)nlog2(2)=1Θ(nlog(n))


7

Ich erweitere die bereits gegebene Antwort, vielleicht nur, indem ich meinen Kommentar ausführlicher erkläre.

T(n)=aT(n/b)+f(n)a1b>1f(n)n/2n/2n/2 Cormen et al. Buch .

a=2b=2f(n)=Θ(n)nlogba=nlog22=nf(n)=Θ(n)T(n)=Θ(nlogn)


n=2k
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.