Analisi asintotica e Metodi di analisi Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 2 Notazione asintotica
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 3 f(n) = tempo di esecuzione / occupazione di memoria di un algoritmo su input di dimensione n La notazione asintotica è un’astrazione utile per descrivere l’ordine di grandezza di f(n) ignorando i dettagli non influenti, come costanti moltiplicative e termini di ordine inferiore Notazione asintotica
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 4 f(n) = O( g(n) ) se due costanti c>0 e n 0 ≥0 tali che f(n) ≤ c g(n) per ogni n ≥ n 0 Notazione asintotica O
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 5 Notare:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 6 f(n) = ( g(n) ) se due costanti c>0 e n 0 ≥0 tali che f(n) ≥ c g(n) per ogni n ≥ n 0 Notazione asintotica n0n0 n f(n) = ( g(n) ) f(n) c g(n)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 7 Notare:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 8 f(n) = ( g(n) ) se tre costanti c 1,c 2 >0 e n 0 ≥0 tali che c 1 g(n) ≤ f(n) ≤ c 2 g(n) per ogni n ≥ n 0 Notazione asintotica n0n0 n f(n) = ( g(n) ) f(n) c 1 g(n) c 2 g(n)
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 9 Notare che:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 10 Notazione o Data una funzione g(n): N R, si denota con o(g(n)) l’ insieme delle funzioni f(n): N R: o(g(n)) = {f(n) : c > 0, n 0 tale che n n 0 0 f(n) c g(n) } Notare:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 11 Notazione Data una funzione g(n): N R, si denota con (g(n)) l’ insieme delle funzioni f(n): (g(n)) = {f(n) : c > 0, n 0 tale che n n 0 0 c g(n) f(n) } Notare:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 12 Riassumendo ……
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 13 Se T(n) = a d n d + a d-1 n d-1 + … + a 0 è un polinomio di grado m (con a m >0), allora T(n) = (n d ) Infatti: T(n) / n d = a d + a d-1 n -1 + … + a 0 n -d n 0 : n n 0 a d - |a d-1 |n -1 - … - |a 0 | n -d > 0 Se scegliamo: c 1 = a d - |a d-1 | n … - |a 0 | n 0 -d c 2 = a d + |a d-1 | + … + |a 0 | n n 0 c 1 n d T(n) c 2 n d Esempio:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 14 Logaritmi …… Esponenziali …… Polinomi …… Fattoriali …… P(n) = a d n d + a d-1 n d-1 + … + a 0 a d > 0 f(n) = a n a >1 P(n) = (n d ) P(n) = O(n d ) P(n) = (n d ) a n = (n d ) a n = (n d ) f(n) = log b (n) b>1 log b (n) = o(n d ) log b (n) = O(n d ) f(n) = n! = n*(n-1)*……*2*1 n! = o(n n ) n! = (a n )
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 15 Proprietà della notazione asintotica Transitività Riflessività Simmetria Simmetria trasposta
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 16 Sia f(n)=3n –f(n)=O(n 2 ): basta scegliere c=4 e n 0 =4 Infatti, 3n ≤ 4n 2 per ogni n≥4 –f(n)= (n 2 ): scegliere c=1 e n 0 =0 Infatti, 3n ≥ 1n 2 per ogni n≥0 ═> f(n)= (n 2 ): infatti f(n)= (g(n)) se e solo se f(n)= (g(n)) e f(n)= (g(n)) –f(n)=O(n 3 ) basta scegliere c=1 e n 0 =4 Infatti, 3n ≤ 1n 3 per ogni n≥4 …ma f(n) ≠ (n 3 ) Notazione asintotica: esempi
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 17 Metodi di analisi
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 18 Misureremo le risorse di calcolo usate da un algoritmo ( tempo di esecuzione / occupazione di memoria ) in funzione della dimensione n delle istanze Istanze diverse, a parità di dimensione, potrebbero però richiedere risorse diverse Distinguiamo quindi ulteriormente tra analisi nel caso peggiore, migliore e medio Caso peggiore, migliore e medio
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 19 Sia tempo(I) il tempo di esecuzione di un algoritmo sull’istanza I T worst (n) = max istanze I di dimensione n {tempo(I)} Intuitivamente, T worst (n) è il tempo di esecuzione sulle istanze di ingresso che comportano più lavoro per l’algoritmo Caso peggiore
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 20 Sia tempo(I) il tempo di esecuzione di un algoritmo sull’istanza I T best (n) = min istanze I di dimensione n {tempo(I)} Intuitivamente, T best (n) è il tempo di esecuzione sulle istanze di ingresso che comportano meno lavoro per l’algoritmo Caso migliore
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 21 Sia P (I) la probabilità di occorrenza del- l’istanza I T avg (n) = ∑ istanze I di dimensione n { P (I) tempo(I) } Intuitivamente, T avg (n) è il tempo di esecuzione nel caso medio, ovvero sulle istanze di ingresso “tipiche” per il problema Richiede di conoscere una distribuzione di probabilità sulle istanze Caso medio