Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi Algoritmi e strutture dati Luigi Laura Notazione asintotica • f (n) = risorsa (tempo di esecuzione / occupazione di memoria) richiesta da un algoritmo su input di dimensione n • Notazione asintotica è astrazione utile per descrivere ordine di grandezza di f (n) ignorando dettagli non influenti, come ad esempio costanti moltiplicative e termini di ordine inferiore 2 da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura Notazione asintotica O f (n) = O( g(n) ) se ∃ c > 0 e n0 ≥ 0 tali che f(n) ≤ c g(n) per ogni n ≥ n0 da Demetrescu et al. McGraw Hill 2004 3 Algoritmi e strutture dati Luigi Laura Notazione asintotica Ω f (n) = Ω( g(n) ) se ∃ c > 0 e n0 ≥ 0 tali che f(n) ≥ c g(n) per ogni n ≥ n0 f(n) = Ω( g(n) ) f(n) c g(n) n0 4 n da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura Notazione asintotica Θ f (n) = Θ( g(n) ) se ∃ c1,c2 > 0 e n0 ≥ 0 tali che c1 g(n) ≤ f(n) ≤ c2 g(n) per ogni n ≥ n0 f(n) = Θ( g(n) ) c2 g(n) f(n) c1 g(n) n0 5 Algoritmi e strutture dati n da Demetrescu et al. McGraw Hill 2004 Luigi Laura Notazione asintotica: esempi Consideriamo g(n) = 3n2 + 10 – g(n) = O(n2): basta scegliere c = 4 e n0 = 10 – g(n) = Ω(n2): basta scegliere c = 1 e n0 = 0 – g(n) = Θ(n2): infatti g(n) = Θ(f(n)) se e solo se g(n) = Ο(f(n)) e g(n) = Ω(f(n)) – g(n) = O(n3) ma g(n) ≠ Θ(n3) 6 da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura Metodi di analisi da Demetrescu et al. McGraw Hill 2004 7 Algoritmi e strutture dati Luigi Laura Ricerca sequenziale Ricerca di elemento x in lista L non ordinata Quanti confronti per trovare x in L ? Dipende da dove si trova x (all’inizio, alla fine, non c’è…) Vorremmo una risposta che non sia “dipende” 8 da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura Caso peggiore, migliore e medio • Misuriamo risorse di calcolo (tempo di esecuzione / occupazione di memoria) richieste da un algoritmo in funzione della dimensione n dell’istanza d’ingresso • A parità di dimensione, istanze diverse potrebbero richiedere risorse diverse • Distinguiamo ulteriormente tra analisi nel caso peggiore, migliore e medio da Demetrescu et al. McGraw Hill 2004 9 Algoritmi e strutture dati Luigi Laura Caso peggiore • Sia t (I) il tempo di esecuzione di un algoritmo su istanza I Tworst(n) = max istanze I, |I| = n { t (I) } • Intuitivamente, Tworst(n) è tempo di esecuzione su istanze di ingresso che comportano più lavoro per l’algoritmo • Dà garanzie sulle prestazioni 10 da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura Caso migliore Tbest(n) = min istanze I, |I| = n { t (I) } • Intuitivamente, Tbest(n) è il tempo di esecuzione sulle istanze di ingresso che comportano meno lavoro per l’algoritmo • Non ci dà molta informazione… da Demetrescu et al. McGraw Hill 2004 11 Algoritmi e strutture dati Luigi Laura Caso medio • P(I) probabilità di avere in ingresso istanza I Tavg(n) = ∑ istanze I, |I| = n { P(I) t (I) } • Intuitivamente, Tavg(n) è tempo medio di esecuzione (ovvero su istanze di ingresso “tipiche” per il problema) • Richiede conoscenza di distribuzione statistica dell’input 12 da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura Caso medio Tavg(n) = ∑ istanze I, |I| = n { P(I) t (I) } • Ipotesi su distribuzione statistica dell’input? • Possiamo avere algoritmi per cui nessun input richiede tempo medio (e.g., algoritmo richiede 1 o 100 passi) • Più importante ma problematico nel definire input “tipico” da Demetrescu et al. McGraw Hill 2004 13 Algoritmi e strutture dati Luigi Laura Ricerca sequenziale Ricerca di elemento x in lista L non ordinata Tbest(n) = 1 Tworst(n) = n (x è in prima posizione) (x∉L oppure è in ultima posizione) Tavg(n) = ??? 14 da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura Caso medio di ricerca sequenziale Tavg(n) = ∑ istanze I, |I| = n { P(I) t (I) } • Qual è la posizione “tipica” di x? • Ipotesi : se x∈L, potrebbe stare ovunque P ( pos(x) = i ) = 1/n Tavg(n) = ∑1,..,n { P( pos(x) = i ) i } = = ∑1,..,n { (1/n) i } = (1/n) ∑1,..,n { i } = = (n+1)/2 da Demetrescu et al. McGraw Hill 2004 15 Algoritmi e strutture dati Luigi Laura Ricerca sequenziale Tbest(n) = 1 Tworst(n) = n x è in prima posizione x∉L oppure è in ultima posizione Tavg(n) = (n+1)/2 ipotesi ragionevole: se x∈L, potrebbe stare ovunque Tavg(n) = p (n+1)/2 + (1-p) n = n - p (n - 1) / 2 ipotesi di prima + P (x∈L) = p 16 da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura Ricerca Binaria Ricerca di un elemento x in un array L ordinato Confronta x con elemento centrale di L e prosegue a sinistra o a destra in base ad esito del confronto da Demetrescu et al. McGraw Hill 2004 17 Algoritmi e strutture dati Luigi Laura Analisi ricerca binaria Tbest(n) = 1 l’elemento centrale è uguale a x Tworst(n) = ??? Tavg(n) = ??? 18 da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura Analisi di algoritmi ricorsivi da Demetrescu et al. McGraw Hill 2004 19 Algoritmi e strutture dati Luigi Laura Esempio L’algoritmo di ricerca binaria può essere riscritto ricorsivamente come: Come analizzarlo? 20 da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura Relazioni di ricorrenza Tempo di esecuzione può essere descritto tramite relazioni di ricorrenza: T(n) = c + T( n-1 / 2 ) se n > 1 1 se n = 1 simile a fibonacci6 Vari metodi per risolvere relazioni di ricorrenza: iterazione, sostituzione, teorema Master... da Demetrescu et al. McGraw Hill 2004 21 Algoritmi e strutture dati Luigi Laura 1. Metodo dell’iterazione Idea: “srotolare” ricorsione, ottenendo sommatoria dipendente solo da dimensione n del problema iniziale Esempio: T(n) = c + T(n/2) T(n/2) = c + T(n/4) ... T(n) = c + T(n/2) = 2c + T(n/4) = = ( ∑j=1...i c ) + T(n/2i) = i c + T(n/2i) Per i = log2n: T(n) = c log2 n + T(1) = O(log n) 22 da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura Analisi ricerca binaria Tbest(n) = 1 l’elemento centrale è uguale a x Tworst(n) = O( log n ) x∉L oppure viene trovato all’ultimo confronto Tavg(n) = log n -1+1/n assumendo che le istanze siano equidistribuite 23 Algoritmi e strutture dati da Demetrescu et al. McGraw Hill 2004 Luigi Laura 2. Metodo della sostituzione Idea: “intuire” soluzione, e usare induzione per verificare che la soluzione della relazione di ricorrenza sia effettivamente quella intuita Esempio: T(n) = n + T(n/2), con T(1)=1 “Intuiamo” soluzione T(n) ≤ c n per opportuna costante c Passo base. T(1) =1 ≤ c 1 per ogni c Passo induttivo. T(n) = n + T(n/2) ≤ n + c (n/2) = (c/2+1) n T(n) ≤ c n se c/2+1 ≤ c ovvero per ogni c ≥ 2 24 da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura 3. Teorema Master Permette di analizzare algoritmi basati su tecnica del divide et impera: - dividi il problema (di dimensione n) in a sottoproblemi di dimensione n/b - risolvi ricorsivamente i sottoproblemi - ricombina le soluzioni Sia f(n) tempo per dividere e ricombinare istanze di dimensione n. La relazione di ricorrenza è data da: T(n) = a T(n/b) + f (n) se n > 1 1 se n = 1 da Demetrescu et al. McGraw Hill 2004 25 Algoritmi e strutture dati Luigi Laura Teorema Master Relazione di ricorrenza: T(n) = a T(n/b) + f (n) se n > 1 1 se n = 1 ammette soluzione: 1. T(n) = Θ(n logba ) se f (n) = O(nlogba - ε ) per ε > 0 2. T(n) = Θ(nlogba log n) se f (n) = Θ(nlogba ) 3. T(n) = Θ(f(n)) se f (n) = Ω(nlogba + ε ) per ε > 0 e a f (n/b) ≤ c f (n) per c < 1 e n sufficientemente grande 26 da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura Teorema Master T(n) = a T(n/b) + f (n) se n > 1 1 se n = 1 Confronta le due funzioni n logba e f (n) : 1. T(n) = Θ(n logba ) se “vince” n logba 2. T(n) = Θ( f (n) log n ) se f (n) = Θ(n logba ) 3. T(n) = Θ( f (n) ) se “vince” f (n) N.B. nei casi 1. e 3. T(n) = Θ( f (n) + n logba ) da Demetrescu et al. McGraw Hill 2004 27 Algoritmi e strutture dati Luigi Laura Esempi 1) T(n) = n + 2 T(n/2) a = 2, b = 2, f(n) = n = Θ(n log22 ) (Caso 2 del Teorema Master) T(n) = Θ(n log n) 2) T(n) = c + 3 T(n/9) a = 3, b = 9, f(n) = c = Ο(n log93 - ε ) (Caso 1 del Teorema Master) 28 T(n) = Θ(√ n) da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura Esempi 3) T(n) = n + 3 T(n/9) a = 3, b = 9, f(n) = n = Ω(n log93 + ε) 3(n/9) ≤ c n per c = 1/3 (Caso 3 del Teorema Master) T(n) = Θ(n) 4) T(n) = n log2 n + 2 T(n/2) Il Teorema Master non può essere applicato! f (n) = n log2 n = Ω ( n log22 ) = Ω ( n ) f (n) = n log2 n non è Ω ( n log22 + ε ) = Ω ( n 1+ε ) da Demetrescu et al. McGraw Hill 2004 29 Algoritmi e strutture dati Luigi Laura Dimostrazione Teorema Master T(n) = a T(n/b) + f (n) se n > 1 1 se n = 1 1. T(n) = Θ(n logba ) se f (n) = O(nlogba - ε ) per ε > 0 30 da Demetrescu et al. McGraw Hill 2004 Algoritmi e strutture dati Luigi Laura T(n) = a T(n/b) + f (n) = a2 T(n/b2) + a f (n/b) + f (n) = = a3 T(n/b3) + a2 f (n/b2) + a f (n/b) + f (n) = = Σ i=0,…, log n ai f (n/bi) b da Demetrescu et al. McGraw Hill 2004 31 Algoritmi e strutture dati Luigi Laura T(n) = Σ i=0,…, log b n ai f (n/bi) f (n) = O(n logba - ε ) log a - ε ai f (n/bi) = O( ai (n/bi ) b )= i = O ( n logba - ε ( a b ε / b logba ) ) = i = O ( n logba - ε (b ε) ) T(n) = Σ i O ( n logba - ε (b ε ) ) = O ( n logb a - ε Σ ( bε) i = … = O ( n logba - ε ( n ε ) ) = O ( n logba ) 32 da Demetrescu et al. McGraw Hill 2004 ) Algoritmi e strutture dati Luigi Laura Riepilogo • Esprimiamo quantità di una certa risorsa di calcolo (tempo, spazio) usata da un algoritmo in funzione della dimensione n dell’istanza di ingresso • La notazione asintotica permette di esprimere quantità di risorsa usata dall’algoritmo in modo sintetico, ignorando dettagli non influenti • A parità di dimensione n dell’istanza di ingresso, quantità di risorsa usata può essere diversa, da cui caso peggiore, caso medio • Quantità di risorsa usata da algoritmi ricorsivi può essere espressa tramite relazioni di ricorrenza, risolvibili tramite metodi generali 33 Algoritmi e strutture dati 34 da Demetrescu et al. McGraw Hill 2004 Luigi Laura da Demetrescu et al. McGraw Hill 2004