3 Ricorreze Nel caso di algoritmi ricorsivi ad esempio, merge sort, ricerca biaria, ricerca del massimo e/o del miimo), il tempo di esecuzioe può essere descritto da ua fuzioe ricorsiva, ovvero da u equazioe che descrive ua fuzioe i termii del suo valore co iput più piccoli. Esempio T /) + se > 1 T ) = 3.1 Metodo iterativo Il metodo iterativo cosiste ello srotolare la ricorreza, cioè richiamare, la ricorreza u certo umero di volte ogi volta co u argometo di dimesioe più piccola) fio quado o è possibile esprimerla come ua somma di termii dipedeti solo da e dalle codizioi iiziali. Questo metodo, così come la sua variate il metodo dell albero di ricorsioe si rivela particolarmete utile quado o si hao idee precise sull ordie di gradezza della ricorreza. Etrambi i metodi permettoo ifatti di capire come si dipaao i costi ella ricorsioe. Exercise 3.1. Si risolva le segueti ricorreze usado il metodo iterativo; assumete che, i ogi caso, T 1) = 1. 1. T ) = c + T /). T ) = 1 + T /) 3. T ) = 3 + 3T /3) Soluzioe. 1. Per la prima ricorreza: T ) = c + T /) = c + c + T /) = dopo passi = c + c + c + T /8) dopo 3 passi = c + c + c + c + T /16) dopo passi =... = kc + T / k ) dopo k passi
10 3 Ricorreze. Cotiuiamo a srotolare la ricorreza fi quado / k = 1 ossia fi quado k = log. Allora, possiamo riscrivere T ) come segue: T ) = c log + T 1) = c log + 1 = Θlog ) T ) = 1 + T /) = 1 + 1 + T /) = 1 + + T /) dopo passi = 1 + + 1 + T /8) = 1 + + + 8T /8) dopo 3 passi = 1 + + + 8 1 + T /16) = 1 + + + 8 + 16T /16) dopo passi = = 1 + + +... k 1 + k T / k ) dopo k passi i + k T / k ) = k 1 Di uovo, ci fermiamo quado / k = 1, ossia fi quado k = log. Allora, possiamo riscrivere T ) come segue: 3. T ) = log 1 i + log T 1) = log 1 i + = 1 log 1 1 + = 1) + = 1 = Θ) 1 + = T ) = 3 + 3T /3) = 3 + 3 /3) 3 + 3T /9) = 3 + 3 /9 + 9T /9) dopo passi = 3 + 3 /9 + 9 /9) 3 + 3T /7) = = 3 + 3 /9 + 3 /9 + 7T /7) dopo 3 passi = 3 + 3 /9 + 3 /9 + 7 /7) 3 + 3T /81) = 3 + 3 /9 + 3 /9 + 3 /7 + 81T /81) = 3 + 3 /9 + 3 /9 + 3 /9 3 + 81T /81) dopo passi =... = k 1 3 /9 i + 3 k T /3 k ) = 3 k 1 1/9) i + 3 k T /3 k ) dopo k passi I questo caso ci fermiamo quado /3 k = 1 e quidi quado k = log 3 log 3 1 T ) = 3 1 9 )i + = 3 1 1 9 )log 3 1 1 9 + = 3 1 1 9 )log 3 + 8 9
= 8 9 3 1 1 9 log 3 + Poichè 9 log 3 = log 3 9 = poichè a log c = c log a ): 3. Metodo dell albero di ricorsioe 11 T ) = 9 8 3 1 1 + = 9 8 3 9 8 + = 9 8 3 1 8 = Θ3 ) 3. Metodo dell albero di ricorsioe È ua variate del metodo iterativo. U albero di ricorsioe permette di visualizzare lo sviluppo della ricorsioe e dei costi; ogi odo di questo albero rappreseta il costo di u particolare sottoproblema apparteete all isieme delle chiamate ricorsive della fuzioe. Il valore della ricorreza viee calcolato sommado prima i costi dei odi su ciascu livello, e poi determiado il costo totale di tutti i livelli dell albero di ricorsioe. Exercise 3.. Risolvere co il metodo dell albero di ricorsioe la seguete ricorreza 3 + T /) se > 1 T ) = Soluzioe. Costruzioe dell albero di ricorsioe: iizialmete, l albero ha u solo odo la radice) che rappreseta il costo complessivo della chiamata di T ) la radice viee espasa secodo la defiizioe della ricorreza. Nel ostro caso otteiamo il seguete albero 3 ) ) ossia, ua rappresetazioe grafica del fatto che il costo di ua chiamata di T ) è pari 3 più il costo di due chiamate di T /) i maiera simile, espadiamo i odi relativi alle due chiamate di T /) ottedo 3 )3 )3 ) ) ) )
1 3 Ricorreze 3 )3 )3 h = log )3 )3 )3 )3 8 )3 8 )3 8 )3 8 )3 8 )3 8 )3 8 )3 8 )3 Fig 31 Albero di ricorsioe per T ) = T ) + 3 a questo puto, oguo di quattro odi relativi ad ua chiamata di T /) geererà u albero la cui radice etichettata co /) 3 ) ha due figli che rappresetao il costo di ua chiamata di T /8). procediamo i questo modo fio a raggiugere la codizioe di cotoro, ossia quell particolare valore di tipicamete 1) che o da luogo ad ulteriori chiamate ricorsive. Otteiamo l albero descritto i Figura 3.1. Si oti che l ultimo livello corrispode ad ua chiamata di T / h ) co = 1 e quidi h = log h qui h è l altezza dell albero). Calcolo dei costi associati all albero Ogi livello i dell albero co i = 0... log ) ha i odi oguo dei quali ha u costo di i ) 3. Il costo di ciascu livello i è pari a: c i = i i )3 = 3 i ) = 3 i T ) è pari alla somma della somma dei costi associati ai odi dell albero di ricorsioe, i particolare T ) = h c i = log 1 1 3 1 )log 3 3 log = 3 i 1 1 1 )i = 3 1 1 )log +1 = 3 3 1 1 1 log = 3 3 1 1 1 = log 3 3 1 1 1 = log 3 3 1 1 1 = 3 3 1 3 = Θ3 ) =
3. Metodo dell albero di ricorsioe 13 Exercise 3.3. Risolvere la seguete ricorreza co il metodo dell albero di ricorsioe, assumedo che T 1) = 1 T ) = T ) + T ) + c Soluzioe. L albero di ricorsioe per T ) è illustrato i Figura 3.. Come per ogi altro albero di ricorsioe, le dimesioi dei sottoproblemi dimiuiscoo via via che ci si allotaa dalla radice, fio a raggiugere le codizioi di cotoro la codizioe di cotoro è il particolare valore di i geere 1) che o da luogo ad ulteriori chiamate ricorsive). Il problema co questo tipo di ricorreze è che le codizioi di cotoro vegoo raggiute a diverse distaze dalla radice. Questo perchè il odo più a siistra e quello più a destra di u geerico livello i corrispodoo, rispettivamete, a sottoproblemi di dimesioe e, e i i i decresce e quidi arriverà ad assumere il valore 1) molto più rapidamete di. I altri termii, la codizioe di cotoro viee raggiuta a siistra ad ua i distaza h dalla radice co h tale che = 1 ossia = h e quidi h = log h ). A destra, ivece, la codizioe di cotoro viee raggiuta ad ua distaza k dalla radice co k tale che = 1 e quidi k = log ). k Il costo di ogi livello i co i = 0... h è pari a c i = 3 )i c. Osservate che: c 0 = c = 3 )0 c c 1 = c + c = 1 + 1)c = 3c c = c + c + c + c = 1 + 1 + 1 + +++ )c = c = 9 c = 3 16 8 8 16 8 8 16 16 ) c c 3 = 1 + 1 + 1 + 1 + 1 + 1 + 1 + +++++++8 )c = c = 7c = 3 6 3 3 16 3 16 16 8 6 6 )3 c Il costo di ciascu livello i = h + 1... k è sicuramete miore o uguale di 3 )i c macao alcui odi a siistra e, di cosegueza, il cotributo di questi odi al costo complessivo del livello). Ricapitolado: l albero è costituito da log + 1 livelli; ioltre, per ogi i = 0... log, il costo c i 3 )i c. Quidi: log log 3 ic log 3 3 i 1 T ) = c i = c = c 1 3 1 c 3 log +1 1 log +1 = c 1 3 3 log = c 1 3 3 log = log c 1 3 log 3 log dove 1 < a = log 3 <. Quidi: = c 1 3 a T ) c c 3 a a = c 3c = c 3c a 1 = Θ) poichè a 1 < 1 = 1. Ifie, T ) g) = c 3c a 1 e g) = Θ) implica T ) = O). =
1 3 Ricorreze c ) ) a) c 6 ) 8 ) 8 ) ) b) c 6 8 8 6 ) 3 ) 3 ) 6 ) 3 ) 6 ) 6 ) 8 ) c) c h = log 6 8 8 6 3 3 6 3 6 6 8 k = log 1 1 d) Fig 3 Albero di ricorsioe per T ) = T ) + T ) + c
3.3 Medoto della sostituzioe 15 Exercise 3.. Risolvere co il metodo dell albero di ricorsioe la seguete ricorreza 3T /) + se > 1 T ) = Soluzioe. 1 Ogi livello i dell albero di ricorsioe per T ) vedi Figura 3.3) ha esattamete 3 i odi oguo dei quali ha u costo di i. Il costo complessivo del livello i è: c i = 3 i i = 3 )i l ultimo livello h cotiee odi i realtà foglie) corrispodeti al costo di ua chiamata di T ) co = 1 e quidi h = log h h Allora T ) = h 3 )i = log 3 )i = 1 3 )log +1 1 3 = 1 3 )log +1 1 = 3 log +1 1 = 3 3 log 1 = 3 3log 1 = 3 log log 3 1 = 3 log log 3 1 = 1 3 log 3 1 = 3 log 3 Ifie 1 = log < log 3, implica T ) = 3 log 3 = Θ log 3 ) poichè log 3 è il termie di ordie superiore 3.3 Medoto della sostituzioe Il metodo della sostituzioe prevede due passi. Nel primo passo si stima l ordie di gradezza asitotico per T ). Nel secodo passo si dimostra la correttezza dell ordie di gradezza stimato. Il metodo si rivela utile quado si ha già u idea della soluzioe alla ricorreza studiata. Exercise 3.5. Si cosideri la seguete ricorreza 3 + 3T /3) se > 1 T ) = Dimostrare, applicado il metodo della sostituzioe, che T ) = O 3 ) 1 per la risoluzioe di questo esercizio occorre ricordarsi che =
16 3 Ricorreze ) ) ) a) 6 ) 6 ) 6 ) 6 ) 6 ) 6 ) 6 ) 6 ) 6 ) b) k = log c) Fig 33 Albero di ricorsioe per T ) = 3T ) + Soluzioe. Dobbiamo dimostrare che esistoo delle costati positive c ed 0 tali che T ) c 3 per ogi 0. Procediamo per iduzioe su. Caso base = 1. Se scegliamo c 1 allora T 1) = 1 c = c1 3. Passo iduttivo > 1. T ) = 3 + 3T 3 ) 3 + 3c 3 )3 per ip. iduttiva T 3 ) c 3 )3 = 3 + 1 9 c3 = 1 + 1 9 c)3 c 3 L ultima disuguagliaza è vera solo se la costate c è scelta i maiera tale che 1 + 1 9 c c, ossia se c 1 9 c 1, il che implica 8 9 c 1 e quidi c 9 8. Ricapitolado se scegliamo c 9 8 e 0 = 1, allora T ) c 3 per ogi 0. Exercise 3.6. Si cosideri la seguete ricorreza
T ) = T /) + log se > 1 3.3 Medoto della sostituzioe 17 Dimostrare, applicado il metodo della sostituzioe, che T ) = Olog ) dove log = log ). Soluzioe. Dobbiamo dimostrare che esistoo delle costati positive c 0 tali che T ) c log per ogi 0. Casi base = 1 T 1) = 1 c log 1 = c 0 = 0. Aaliziamo il caso i cui =. T ) = T ) + log = 1 + 1 = c log = c a patto di scegliere c. Passo iduttivo >. T ) = T ) + log per ip. iduttiva T ) c log ) c log ) + log log ) = log ) = log 1) = clog 1) + log log 1) = log log + 1 = c log c log + c + log = c log c 1) log + c = c log c 1) log c Ora, implica log 1 e quidi c 1) log c c 1) c = c 1 1 poichè c vedi il caso base). Quidi: T ) c log c 1) log c c log 1 c log Exercise 3.7. Si cosideri la seguete ricorreza T T ) = ) + T ) + se > 1 Dimostrare, applicado il metodo della sostituzioe che T ) = O) Soluzioe. Dobbiamo dimostrare che esistoo delle costati positive c ed 0 tali che T ) c per ogi 0. Procediamo per iduzioe su. Caso base = 1. Se scegliamo c 1 allora T 1) = 1 c = c1. Passo iduttivo > 1.
18 3 Ricorreze T ) = T ) + T ) + per ip. iduttiva T ) c e T ) c = c + c + = c + c + 1) = 3 c + 1) c L ultima disuguagliaza è vera se scegliamo c i maiera tale che 3c + 1 c, quidi c 3c = 1 c 1. I defiitiva, basta scegliere c. Exercise 3.8. Forire u limite asitotico stretto per la ricorreza T 3 T ) = ) + se > 3 1 se 1 3 Soluzioe. La ricorreza T ) è molto simile alla ricorreza T 1 T 1 ) = ) + se > 1 che ha il seguete limite asitotico stretto T 1 ) = Θ log ). Dimostriamo che T ) = Θ log ) usado il metodo della sostituzioe. La prova cosiste di due parti: 1) dimostriamo che T ) = O log ) e poi ) dimostriamo che T ) = Ω log ). 1) Per defiizioe T ) = O log ) se esistoo delle costati positive c 0 tali che T ) c log per ogi 0. Procediamo per iduzioe su. Casi base = 1: T 1) = 1 c1 log 1 = 0 per = 1 la proprietà o è verificata, questo sigifica che 0 deve essere maggiore di 1). = : T ) = 1 c log = c se scegliamo c 1. = 3: T 3) = 1 c3 log 3 = 3c log 3; vera se c 1. Ifatti, se c 1 allora 3c log 3 3c log = 3c 3 1. Passo iduttivo: > 3 T ) = T 3) + c 3 log 3)) + c log )) + clog 1) + = c log c + = c log c 1) poichè c 1 c log Ricapitolado, se scegliamo la costate c 1, T ) c log per ogi 0 =
3. Metodo dell esperto 19 ) Per defiizioe T ) = Ω log ) se esistoo delle costati positive c 0 tali che T ) c log per ogi 0. Procediamo per iduzioe su. Casi base = 1: T 1) = 1 c1 log 1 = 0 per ogi c. = : T ) = 1 c log = c se scegliamo c 1. = 3: T 3) = 1 c 3 log 3 = 3c log 3. Poichè 3c log 3 3c log = 6c, c 1 implica 3c log 3 6c 1. Possiamo scegliere c 1 e quidi ache 6 6 c 1). Passo iduttivo: > 3 T ) = T 3) + c 3 log 3)) + = c 3) log 3 3 ) + > 3 implica 8 c 3) log ) + 8 = c 3)log 3) + = c log 3 3 log + 9 + = c log 3c 3c log + 9c + c log 3c 3c log + = c log + 1 3c) 3c log se c 3c 1 3 1 = 1 6 6 c log + 1 3c log se c 1 3c 3 1 = 1 6 6 c log + 1 1 log c log + 1 log ) c log Ricapitolado, se scegliamo la costate positiva c 1/6, T ) c log per ogi 0 = 1 3. Metodo dell esperto Exercise 3.9. Applicare il metodo dell esperto per determiare i limiti asitotici stretti per le segueti ricorreze assumete T ) = 1 per = 1) 1. T ) = T /) +. T ) = T /) + 3. T ) = T /) + 3 Soluzioe. I tutti i casi abbiamo a =, b = e log b a =. Cambia ivece il rapporto tra f) e log a =. Come vedremo, le tre ricorreze corrispodoo ad u diverso co u caso del teorema del master. 1. f) = ed f) = O) = O log a ε ) co ε = 1 > 0; i altri termii, f) ha log a come u limite superiore. Siamo, quidi, el primo caso del teorema del master e T ) = Θ log a ) = Θ ).
0 3 Ricorreze. f) = ed f) = Θ ) = Θ log a ) ossia, log a è u limite stretto per f)). Secodo caso del teorema del master: T ) = Θ log a log ) = Θ log ) 3. f) = 3 ed f) = Ω 3 ) = Ω log a+ε ) co ε = 1 > 0 ossia, log a è u limite iferiore per f)). Ioltre, af ) = b )3 = 3 = 1 8 3 c 3 se scegliamo c 1 < 1). Terzo caso del teorema del master: T ) = Θf)) = Θ 3 ) Exercise 3.10. La ricorreza T ) = 8T ) + descrive il tempo di esecuzioe di u algoritmo A. U altro algoritmo A ha u tempo di esecuzioe T ) = at ) + dove a è ua costate itera. Quale è il più grade valore di a che rede A asitoticamete più veloce di A? Soluzioe. Risolviamo iazitutto la prima ricorreza. I questo caso a = 8, b = e log b a = log 8 = 3. Allora f) = = O ) = O log a 1 ) caso 1 del teorema del master) e T ) = Θ log a ) = Θ 3 ). Risolviamo ora la secoda ricorreza distiguedo i base ai segueti valori della costate a. a < 16. I questo caso, log b a = log a < log 16 = e f) = = Ω ) = Ω log a+ ) co = log a > 0. Ioltre, af b ) = af ) = a ) = a 16 = a 16 f) co a 16 < 1 terzo caso del teorema del master). Allora, T ) = Θf)) = Θ ) e, quidi, A è asitoticamete più veloce di A. a = 16. I questo caso, log b a = log 16 = e f) = = Θ ) = Θ log a ) caso del teorema del master). Quidi T ) = Θ log a log ) = Θ log ); di uovo, A è asitoticamete più veloce di A. 16 < a < 6. log b a > log 16 = e f) = = O ) = O log a ) co = log b a > 0 caso 1 del teorema del master). Quidi T ) = Θ log a ). Poichè a < 6 implica log b a < log 6 = 3 e log a < 3, possiamo acora dedurre che A è asitoticamete più veloce di A. a 6. I questo caso, log b a log 6 = 3 e f) = = O ) = O log a ) co = log b a > 0 di uovo è il caso 1 del teorema del master). Quidi T ) = Θ log a ). La differeza rispetto al caso precedete è che a 6 implica log a 3. I realtà, abbiamo log a = 3 el caso i cui a = 6) oppure log a = 3+ per qualche > 0 questo el caso i cui a > 6). I etrambi i casi, A o è asitoticamete più veloce di A. Questo dimostra che il più grade valore di a che rede A asitoticamete più veloce di A è 63. Exercise 3.11. Dire se il metodo dell esperto può essere usato per risolvere la ricorreza T ) = T ) + log. Motivare la risposta forita. Soluzioe. I questo caso, log a = log = può solo essere u limite iferiore e stretto per f) = log = Ω log ) = Ω log a+ ) per qualche > 0. Potremmo potezialmete essere el caso 3 del teorema del master. Ci maca
3. Metodo dell esperto 1 da verificare che af ) = b f) = ) log ) cf) = c log per qualche c < 1. Osserviamo che ) log ) = log 1) = log 1) = log e assumiamo, per assurdo, che esista u c < 1 tale che log c log sse log c log sse 1 c) log sse dividedo tutto per 1 c) 1) log 1 1 c Il che è impossibile visto che c e, quidi, ache 1 è ua costate. 1 c Questo sigifica che la ricorreza data o soddisfa la secoda codizioe del terzo caso del teorema del master; quidi tale teorema o può essere usato per risolvere T ).