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) for j 1 to a do Pj=SubProblem(P,n/b, j) Sj=RcursiveAlgo(Pj, n/b) sol = Compose(S1,S2…,Sa) return sol
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) Sj=RcursiveAlgo(Pj, n/bj) sol = Compose(S1,S2…,Sa) return sol
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 :
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.
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 nn0 dove n0 è una costante. Allora si possono considerare le condizioni a contorno, n=2 ed n=3
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
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.
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 b0 è una costante.
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.
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
Il Metodo di Sostituzione : sostituzione di variabili Si può ridenominare la vecchia ricorrenza per produrre una nuova ricorrenza:
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.
Il Metodo Iterativo Quanto bisogna sviluppare la ricorrenza per raggiungere una condizione al contorno? Il termine i-esimo nella serie è L’iterazione trova
Il Metodo Iterativo
Il Metodo Iterativo
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.
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)
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)
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
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)
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
Il Metodo Iterativo: alberi di ricorsione
Il Metodo Principale Fornisce soluzioni dirette per le ricorrenze del tipo Dove a1 e b1 sono costanti e f(n) è una funzione asintoticamente positiva. Teorema Principale
Il Metodo Principale: esempio 1
Il Metodo Principale: esempio 2
Il Metodo Principale: esempio 3
Estensione del Metodo Principale Fornisce soluzioni dirette per le ricorrenze del tipo Dove a1 e b1 sono costanti e f(n) è una funzione asintoticamente positiva. Teorema Principale