Lösen von T (n) = 2T (n / 2) + log n mit der Wiederholungsbaummethode


9

Ich habe Wiederholungsbeziehungen gelöst. Die erste Wiederholungsbeziehung war

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

Die Lösung für dieses Problem kann durch den Master-Satz oder die Wiederholungsbaummethode gefunden werden. Der Wiederholungsbaum wäre ungefähr so:

! [Bildbeschreibung hier eingeben

Die Lösung wäre:

T(n)=n+n+n+...+n⏟log2⁡n=k times=Θ(nlog⁡n)

Als nächstes hatte ich folgendes Problem:

T(n)=2T(n/2)+log⁡n

Mein Buch zeigt, dass diese Wiederholung nach dem Hauptsatz oder sogar nach einem Substitutionsansatz die Lösung . Es hat dieselbe Struktur wie oben Baum mit dem einzigen Unterschied , dass es bei jedem Aufruf führt log n Arbeit. Ich bin jedoch nicht in der Lage, den gleichen Ansatz für dieses Problem zu verwenden.Θ(n)log⁡n

Antworten:


5

Der nicht rekursive Begriff der Wiederholungsrelation ist die Arbeit , um Lösungen von Teilproblemen zusammenzuführen. Die Ebene Ihres (binären) Wiederholungsbaums enthält 2 k Teilprobleme mit der Größe nk2k , also müssen Sie zuerst die Gesamtarbeit auf der Ebenek findenund diese Arbeit dann über alle Baumebenen zusammenfassen.n2kk

Wenn beispielsweise die Arbeit konstant ist , dann ist die gesamte Arbeit auf der Ebene k wird 2Ck , und die Gesamtzeit T ( n ) wird durch die folgende Summe angegeben werden:2k⋅CT(n)

T(n)=∑k=1log2⁡n2kC=C(2log2⁡n+1−2)=Θ(n)

Wenn die Arbeit jedoch logarithmisch mit der Problemgröße wächst, müssen Sie die Lösung genau berechnen. Die Serie würde wie folgt aussehen:

T(n)=log2⁡n+2log2⁡(n2)+4log2⁡(n4)+8log2⁡(n8)+....⏟log2⁡n times

Es wird eine ziemlich komplexe Summe sein:

T(n)=log2⁡n+∑k=1log2⁡n2klog2⁡(n2k)

Ich werde vorübergehend und die obige Summierung vereinfachen:m=log2⁡n

∑k=1m2klog2⁡(n2k)==∑k=1m2k(log2⁡n−k)==log2⁡n∑k=1m2k−∑k=1mk2k==log2⁡n(2m+1−2)−(m2m+1−2m+1+2)

∑k=1mk2kmlog2⁡n

T(n)=log2⁡n+2nlog2⁡n−2log2⁡n−2nlog2⁡n+2n−2
=2n−log2⁡n−2=Θ(n)

QED


1
Verdammt, ich habe einen super dummen Fehler gemacht, als ich Fragen gestellt habe. Jetzt korrigiert. Allerdings kann ich jetzt nicht verstehen, wie sich die Sachen in der Serie gegenseitig aufheben:20Log2⁡n20+21Log2⁡n21+22Log2⁡n22+...+2Log2⁡nLog2⁡n2Log2⁡n=Log2⁡n+2Log2⁡n2+4Log2⁡n4+...+nLog2⁡1.. Dies ist die Serie, die Sie sich einfallen lassen, oder? Versuchen mitn=8, Ich habe Log2⁡8+2Log2⁡4+4Log2⁡2+8Log2⁡1=3+4+4=11. Whats wrong here?
— anir

@anir - Use equality log2⁡(n2k)=log2⁡n−k
— HEKTO

1
I still didn't get how that series collapses to Θ(n) :'¬( Math-noob-here...
— anir

@anir - I'll expand my answer
— HEKTO

@HEKTO If you solve above equ of comment, you still get nlog(n) ?? I have tried a lot. would you please help me here ?
— roottraveller
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.