Modifica delle variabili nelle relazioni di ricorrenza


20

Attualmente sto studiando autonomamente Intro to Algorithms (CLRS) e c'è un metodo particolare che descrivono nel libro per risolvere le relazioni di ricorrenza.

Il seguente metodo può essere illustrato con questo esempio. Supponiamo di avere la ricorrenza

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

Inizialmente effettuano la sostituzione m = lg (n), quindi la ricollegano alla ricorrenza e ottengono:

T(2m)=2T(2m2)+m

Fino a questo punto ho capito perfettamente. Il prossimo passo è quello che mi confonde.

Ora "rinominano" la ricorrenza e lasciano S ( m ) = T ( 2 m ) , che apparentemente produceS(m)S(m)=T(2m)

S(m)=2S(m/2)+m

Per qualche ragione non mi è chiaro il motivo per cui questa ridenominazione funziona e sembra solo barare. Qualcuno può spiegarlo meglio?

Risposte:


15

Non sta certo barando. Pensa in calcolo come può essere usata la sostituzione per risolvere un integrale difficile. La sostituzione rende l'equazione più gestibile per la manipolazione. Inoltre, la sostituzione può trasformare ricorrenze piuttosto complesse in ricorrenze familiari.

Questo è esattamente ciò che è accaduto nel tuo esempio. Definiamo una nuova ricorrenza . Ricorda che T ( 2 m ) = 2 T ( 2 mS(m)=T(2m). Si noti che,S(m/2)=T(2mT(2m)=2T(2m2)+m. Se questo particolare punto non è ancora chiaro, siak=m/2e si noti che tutto ciò che stiamo facendo è questoS(k)=T(2k). Ora, possiamo esprimereS(m)espandendolo a: S(m)=2S(m/2)+m. Risolvendo perSvediamo che si risolve con il nostro amico familiareO(mlogmS(m/2)=T(2m2)k=m/2S(k)=T(2k)S(m)

S(m)=2S(m/2)+m.
S . Ora che abbiamo risolto S , vogliamo esprimerlo in termini di T ( n ) . Per fare ciò, è sufficiente ricollegare il nostro valore originale per m e abbiamo T O ( log n log log n ) .O(mlogm)ST(n)mTO(lognloglogn)

Bene, capisco perfettamente come la sostituzione aiuta a facilitare i problemi e come ricollegare i valori per ottenere la complessità in termini di n. Immagino che la mia domanda sia, dopo aver lasciato S (m) = T (2 ^ m), come si ottiene S (m / 2)? Non è ovvio per me per qualche motivo. Per essere più specifici, come si conclude che T (2 ^ (m / 2)) = S (m / 2). Sembra che nella ricorrenza T, la dimensione sottoproblema è essere quadrato radicata, mentre nella ricorrenza S, la dimensione sottoproblema viene dimezzato

L'unica parte che non capisco è quando dici "Nota che, S (m / 2) = T (2 ^ (m / 2))" Questa è l'unica parte che non è ovvia per me. Sono abituato all'idea di effettuare sostituzioni variabili, ma non sono abituato all'idea di sostituire un'intera ricorrenza.

Ah ok, l'ultima modifica è stata fatta per me. Adesso è chiaro, grazie!

1
Ho un piccolo dubbio Se scrivo funzione S () in termini di ksto ottenendo sotto l'equazione S (k) = 2S (k / 2) + m Come posso ottenere sostituto mperk
Atinesh

4

S(m)=T(2m)STm2m

S

  1. Sm2m

  2. T

Pertanto, le transizioni sono:

m2mT(2m)=S(m)
m22m/2T(2m/2)=S(m2).
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.