1 / 28

Ricorrenze

Ricorrenze. Il metodo di sostituzione Il metodo iterativo Il metodo Principale. Ricorrenze. Quando un algoritmo contiene una o più chiamate ricorsive a se stesso, il suo tempo di esecuzione può essere descritto da una ricorrenza. ReursiveAlgo( P,n ) If n ≤c then return Solution(P,n)

yaakov
Download Presentation

Ricorrenze

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ricorrenze • Il metodo di sostituzione • Il metodo iterativo • Il metodo Principale

  2. Ricorrenze Quando un algoritmo contiene una o più chiamate ricorsive a se stesso, il suo tempo di esecuzione può essere descritto da una ricorrenza. • ReursiveAlgo(P,n) • If n≤c then return Solution(P,n) • for j  1 to a do • Pj=SubProblem(P,n/b, j) • for j  1 to a do • Sj=RcursiveAlgo(Pj, n/b) • sol = Compose(S1,S2…,Sa) • return sol

  3. Ricorrenze Quando un algoritmo contiene una o più chiamate ricorsive a se stesso, il suo tempo di esecuzione può essere descritto da una ricorrenza. • ReursiveAlgo(P,n) • If n≤c then return Solution(P,n) • for j  1 to a do • Pj=SubProblem(P,n/bj, j) • for j  1 to a do • Sj=RcursiveAlgo(Pj, n/bj) • sol = Compose(S1,S2…,Sa) • return sol

  4. Il Metodo di Sostituzione Il metodo di sostituzione per risolvere le ricorrenze richiede di tentare uno schema di soluzione, quindi usare l’induzione matematica per trovare le costanti e mostrare che la soluzione funziona. Questo metodo è potente ma può essere applicato solo quando sia facile azzeccare lo schema di soluzione. Consideriamo la ricorrenza : Si prova la limitazione : Si assume che il limite valga per n/2 : Lo si dimostra per n :

  5. Il Metodo di Sostituzione Il metodo di sostituzione per risolvere le ricorrenze richiede di tentare uno schema di soluzione, quindi usare l’induzione matematica per trovare le costanti e mostrare che la soluzione funziona. Questo metodo è potente ma può essere applicato solo quando sia facile azzeccare lo schema di soluzione.

  6. Il Metodo di Sostituzione : condizioni a contorno L’induzione matematica richiede di dimostrare le condizioni a contorno. Potrebbero nascere dei problemi: Tuttavia la notazione asintotica T(n)=O(nlgn) richiede di provare che T(n)≤cnlgn per nn0 dove n0 è una costante. Allora si possono considerare le condizioni a contorno, n=2 ed n=3

  7. Il Metodo di Sostituzione : scegliere la soluzione • Sfortunatamente non esiste una regola generale per azzeccare la soluzione corretta per ogni ricorrenza. Esistono però alcune euristiche. • Se si incontrano ricorrenze simili a quelle già conosciute si può tentare una soluzione simile. Ad esempio per la ricorrenza T(n)=2(T(n/2)+17)+n si tenta ancora T(n)=O(nlgn) • Un altro modo per azzeccare la soluzione è di provare limiti laschi della ricorrenza e quindi ridurre il grado di incertezza

  8. Il Metodo di Sostituzione : sottigliezze A volte si può azzeccare correttamente un limite asintotico della soluzione di una ricorrenza, ma può sembrare che il calcolo matematico non torni nell’induzione. Correggere la soluzione sottraendo un termine di ordine più basso, spesso consente di ottenere la prova matematica. Si tenta con la soluzione O(n) e si cerca di dimostrare T(n)≤cn.

  9. Il Metodo di Sostituzione : sottigliezze Per dimostrare questa ricorrenza bisogna fare una ipotesi induttiva più forte. Si supera la difficoltà sottraendo un termine di ordine più basso dal precedente tentativo. Il nuovo tentativo è T(n)≤cn-b, dove b0 è una costante.

  10. Il Metodo di Sostituzione : evitare le trappole E’ facile sbagliare l’uso della notazione asintotica. Per esempio nella ricorrenza T(n)=2T(n/2)+n si puo’ provare erroneamente che T(n)=O(n) tentando con T(n)≤cn e quindi dedurre Poiché c è una costante. L’errore è che non è stata dimostrata la forma esatta dell’ipotesi induttiva. Cioè che T(n)≤cn.

  11. Il Metodo di Sostituzione : sostituzione di variabili Talvolta una piccola manipolazione algebrica può rendere una ricorrenza sconosciuta simile ad una già vista. Per esempio si consideri la ricorrenza: Si può semplificare questa ricorrenza con una sostituzione di variabile. Sostituendo m=lgn si ottiene

  12. Il Metodo di Sostituzione : sostituzione di variabili Si può ridenominare la vecchia ricorrenza per produrre una nuova ricorrenza:

  13. Il Metodo Iterativo Il metodo iterativo non richiede di tentare una soluzione. Ma può richiedere molta più algebra del metodo di sostituzione. L’idea è di iterare la ricorrenza ed esprimerla come somma di termini dipendenti solo da n e dalle condizioni iniziali. Le tecniche per limitare le sommatorie possono essere usate per fornire limiti alla soluzione.

  14. Il Metodo Iterativo Quanto bisogna sviluppare la ricorrenza per raggiungere una condizione al contorno? Il termine i-esimo nella serie è L’iterazione trova

  15. Il Metodo Iterativo

  16. Il Metodo Iterativo

  17. Il Metodo Iterativo • Il metodo iterativo di solito comporta l’uso di molta algebra, e fare tutti i calcoli in modo esatto può essere complesso. Bisogna concentrarsi su due parametri: • il numero di volte che la ricorr. deve essere iterata per raggiungere le condizioni a contorno • la somma dei termini originati da ogni livello del processo di iterazione • Talvolta nel processo di iterazione si può azzeccare la soluzione senza fare tutti calcoli matematici. In tal caso è possibile passare al metodo di sostituzione.

  18. Il Metodo Iterativo: alberi di ricorsione Un albero di ricorsione è un metodo molto comodo per visualizzare tutto ciò che accade quando si itera una ricorrenza. Consideriamo la ricorrenza: T(n)=2T(n/2)+n2 n2 T(n/2) T(n/2)

  19. Il Metodo Iterativo: alberi di ricorsione Un albero di ricorsione è un metodo molto comodo per visualizzare tutto ciò che accade quando si itera una ricorrenza. Consideriamo la ricorrenza: T(n)=2T(n/2)+n2 n2 n2/4 n2/4 T(n/4) T(n/4) T(n/4) T(n/4)

  20. Il Metodo Iterativo: alberi di ricorsione Un albero di ricorsione è un metodo molto comodo per visualizzare tutto ciò che accade quando si itera una ricorrenza. Consideriamo la ricorrenza: T(n)=2T(n/2)+n2 n2 n2 n2/4 n2/4 n2/2 n2/16 n2/16 n2/16 n2/16 n2/4

  21. Il Metodo Iterativo: alberi di ricorsione Poiché il valore decresce geometricamente, il valore totale differisce, al più di un fattore costante dal termine più grande, quindi la soluzione è (n2)

  22. Il Metodo Iterativo: alberi di ricorsione (2) T(n)=T(n/3)+T(2n/3)+n n n n/3 2n/3 n n/9 2n/9 2n/9 4n/9 n

  23. Il Metodo Iterativo: alberi di ricorsione

  24. Il Metodo Principale Fornisce soluzioni dirette per le ricorrenze del tipo Dove a1 e b1 sono costanti e f(n) è una funzione asintoticamente positiva. Teorema Principale

  25. Il Metodo Principale: esempio 1

  26. Il Metodo Principale: esempio 2

  27. Il Metodo Principale: esempio 3

  28. Estensione del Metodo Principale Fornisce soluzioni dirette per le ricorrenze del tipo Dove a1 e b1 sono costanti e f(n) è una funzione asintoticamente positiva. Teorema Principale

More Related