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+...+nlog2n=k times=Θ(nlogn)

Als nächstes hatte ich folgendes Problem:

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

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

anir
quelle

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:2kCT(n)

T(n)=k=1log2n2kC=C(2log2n+12)=Θ(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)=log2n+2log2(n2)+4log2(n4)+8log2(n8)+....log2n times

Es wird eine ziemlich komplexe Summe sein:

T(n)=log2n+k=1log2n2klog2(n2k)

Ich werde vorübergehend und die obige Summierung vereinfachen:m=log2n

k=1m2klog2(n2k)==k=1m2k(log2nk)==log2nk=1m2kk=1mk2k==log2n(2m+12)(m2m+12m+1+2)

k=1mk2kmlog2n

T(n)=log2n+2nlog2n2log2n2nlog2n+2n2
=2nlog2n2=Θ(n)

QED

HEKTO
quelle
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:20Log2n20+21Log2n21+22Log2n22+...+2Log2nLog2n2Log2n=Log2n+2Log2n2+4Log2n4+...+nLog21.. Dies ist die Serie, die Sie sich einfallen lassen, oder? Versuchen mitn=8, Ich habe Log28+2Log24+4Log22+8Log21=3+4+4=11. Whats wrong here?
anir
@anir - Use equality log2(n2k)=log2nk
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