Risoluzione di T (n) = 2T (n / 2) + log n con il metodo dell'albero di ricorrenza


9

Stavo risolvendo le relazioni di ricorrenza. La prima relazione di ricorrenza era

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

La soluzione di questo può essere trovata dal Teorema del Maestro o dal metodo dell'albero della ricorrenza. L'albero della ricorrenza sarebbe qualcosa del genere:

! [inserisci la descrizione dell'immagine qui

La soluzione sarebbe:

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

Successivamente ho affrontato il seguente problema:

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

Il mio libro mostra che dal teorema del maestro o anche da un approccio di sostituzione, questa ricorrenza ha la soluzione . Ha la stessa struttura dell'albero sopra con la sola differenza che ad ogni chiamata esegue lavoro. Tuttavia, non sono in grado di utilizzare lo stesso approccio sopra per questo problema.Θ(n)log⁡n

Risposte:


5

Il termine non ricorsivo della relazione di ricorrenza è il lavoro per unire le soluzioni dei sottoproblemi. Il livello del tuo albero di ricorrenza (binario) contiene sottoproblemi con dimensione , quindi devi prima trovare il lavoro totale sul livello e poi riassumere questo lavoro su tutto i livelli degli alberi.k2kn2kk

Ad esempio, se il lavoro è costante , il lavoro totale sul livello sarà e il tempo totale sarà dato dalla seguente somma:Ck2k⋅CT(n)

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

Tuttavia, se il lavoro aumenta logaritmicamente con la dimensione del problema, è necessario calcolare accuratamente la soluzione. La serie sarebbe simile alla seguente:

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

Sarà una somma abbastanza complessa:

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

Denoterò temporaneamente e semplificherò la somma sopra: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)

Qui ho usato una formula per la somma dal calcolatore di algebra simbolica online Wolfram | Alpha . Quindi dobbiamo sostituire back con :∑k=1mk2kmlog2⁡n

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

QED


1
accidenti ho fatto uno stupido errore nel porre la domanda. Ora corretto. Tuttavia ora non sono in grado di capire come le cose si annullano a vicenda nella serie: .. Questa è la serie che vieni con giusto? Provando con , ho ottenuto . Cosa c'è che non va qui? 20log2⁡n20+21log2⁡n21+22log2⁡n22+...+2log2⁡nlog2⁡n2log2⁡n=log2⁡n+2log2⁡n2+4log2⁡n4+...+nlog2⁡1n=8log2⁡8+2log2⁡4+4log2⁡2+8log2⁡1=3+4+4=11
— anir

@anir - Usa l'uguaglianzalog2⁡(n2k)=log2⁡n−k
— HEKTO

1
Non ho ancora Θ(n)
— capito

@anir - Espanderò la mia risposta
— HEKTO,

@HEKTO Se risolvi sopra equ di commento, ottieni ancora nlog (n) ?? Ci ho provato molto. mi aiuti per favore qui?
— roottraveller,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.