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

Successivamente ho affrontato il seguente problema:

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

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

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

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

Sarà una somma abbastanza complessa:

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

Denoterò temporaneamente e semplificherò la somma sopra:m=log2n

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

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

T(n)=log2n+2nlog2n2log2n2nlog2n+2n2
=2nlog2n2=Θ(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? 20log2n20+21log2n21+22log2n22+...+2log2nlog2n2log2n=log2n+2log2n2+4log2n4+...+nlog21n=8log28+2log24+4log22+8log21=3+4+4=11
anir

@anir - Usa l'uguaglianzalog2(n2k)=log2nk
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.