Sei sulla pagina 1di 17

Algoritmi e Strutture Dati

Capitolo 2 Modelli di calcolo e metodologie di analisi

Algoritmi e strutture dati

Giuseppe F. Italiano

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

1 !

Algoritmi e strutture dati

Giuseppe F. Italiano

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
f(n) = !( g(n) ) cg(n) f(n)

n0
3!

n
da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

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

2 !

Algoritmi e strutture dati

Giuseppe F. Italiano

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!

n!
da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

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

3 !

Algoritmi e strutture dati

Giuseppe F. Italiano

Metodi di analisi

7!

da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

Ricerca sequenziale
Ricerca di elemento x in lista L non ordinata

Quanti confronti per trovare x in L ? Dipende da dove si trova x (allinizio, alla fine, non c) Vorremmo una risposta che non sia dipende
8!
da Demetrescu et al. McGraw Hill 2004

4 !

Algoritmi e strutture dati

Giuseppe F. Italiano

Caso peggiore, migliore e medio


! Misuriamo risorse di calcolo (tempo di esecuzione / occupazione di memoria) richieste da un algoritmo in funzione della dimensione n dellistanza dingresso ! A parit di dimensione, istanze diverse potrebbero richiedere risorse diverse ! Distinguiamo ulteriormente tra analisi nel caso peggiore, migliore e medio
9!
da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

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 lalgoritmo ! D garanzie sulle prestazioni
10!
da Demetrescu et al. McGraw Hill 2004

5 !

Algoritmi e strutture dati

Giuseppe F. Italiano

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 lalgoritmo ! Non ci d molta informazione

11!

da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

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 dellinput
12!
da Demetrescu et al. McGraw Hill 2004

6 !

Algoritmi e strutture dati

Giuseppe F. Italiano

Caso medio
Tavg(n) = $ istanze I, |I| = n { P(I) t (I) } ! Ipotesi su distribuzione statistica dellinput? ! 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
13!
da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

Ricerca sequenziale
Ricerca di elemento x in lista L non ordinata

Tbest(n) = 1 ! Tworst(n) = n Tavg(n) = ???!

(x in prima posizione)! (x%L oppure in ultima posizione)!

14!

da Demetrescu et al. McGraw Hill 2004

7 !

Algoritmi e strutture dati

Giuseppe F. Italiano

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
15!
da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

Ricerca sequenziale

Tbest(n) = 1 ! Tworst(n) = n Tavg(n) = (n+1)/2

x in prima posizione! x%L oppure in ultima posizione! 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

8 !

Algoritmi e strutture dati

Giuseppe F. Italiano

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
17!
da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

Analisi ricerca binaria


Tbest(n) = 1 lelemento centrale uguale a x! ! Tworst(n) = ??? !

Tavg(n) = ??? !
18!
da Demetrescu et al. McGraw Hill 2004

9 !

Algoritmi e strutture dati

Giuseppe F. Italiano

int binarySearch(int[ ] a, unsigned length, int key) { unsigned int low = 0; unsigned int high = length - 1; while (low <= high) { int mid = (low + high) / 2; int midVal = a[mid]; if (midVal < key) { low = mid + 1; } else if (midVal > key) { high = mid - 1; } else { return mid; // key found } } return -(low + 1); // key not found. }
19!
da Demetrescu et al. McGraw Hill 2004

Questo codice corretto?

Algoritmi e strutture dati

Giuseppe F. Italiano

Analisi di algoritmi ricorsivi

20!

da Demetrescu et al. McGraw Hill 2004

10 !

Algoritmi e strutture dati

Giuseppe F. Italiano

Esempio
Lalgoritmo di ricerca binaria pu essere riscritto ricorsivamente come:

Come analizzarlo?
21!
da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

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...
22!
da Demetrescu et al. McGraw Hill 2004

11 !

Algoritmi e strutture dati

Giuseppe F. Italiano

1. Metodo delliterazione
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) !
23!
da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

Analisi ricerca binaria


Tbest(n) = 1 lelemento centrale uguale a x! !

Tworst(n) = O( log n ) x%L oppure viene trovato ! allultimo confronto! Tavg(n) = log n -1+1/n assumendo che le istanze! siano equidistribuite!

24!

da Demetrescu et al. McGraw Hill 2004

12 !

Algoritmi e strutture dati

Giuseppe F. Italiano

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!
25!
da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

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) =!
26!

a T(n/b) + f (n) se n > 1! 1 se n = 1!


!
da Demetrescu et al. McGraw Hill 2004

13 !

Algoritmi e strutture dati

Giuseppe F. Italiano

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) = #(n logba log n) se f (n) = #(nlogba ) 3. T(n) = #(f(n)) se f (n) = "(n logba + ) ) per ) > 0 e a f (n/b) " c f (n) per c < 1 e n sufficientemente grande
27
da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

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 ) 2. T(n) = #( f (n) log n ) 3. T(n) = #( f (n) ) se vince n logba se f (n) = #(n logba ) se vince f (n)
logba

N.B. nei casi 1. e 3. T(n) = #( f (n) + n


28!

da Demetrescu et al. McGraw Hill 2004

14 !

Algoritmi e strutture dati

Giuseppe F. Italiano

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)
!

T(n) = #(%n)

29!

da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

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 + ) ) = " ( n1+) )
30!
da Demetrescu et al. McGraw Hill 2004

15 !

Algoritmi e strutture dati

Giuseppe F. Italiano

Dimostrazione Teorema Master


a T(n/b) + f (n) se n > 1 1 se n = 1

T(n) =

1. T(n) = #(n logba ) se f (n) = O(nlogba - )*) per ) > 0

31!

da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

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,, logb n ai f (n/bi)
n a

n b n b2
32!

...
a

n b n b2 n b2

n b n b2 n b2 n b2

n b2

...

n b2

...

...

n b2

da Demetrescu et al. McGraw Hill 2004

16 !

Algoritmi e strutture dati

Giuseppe F. Italiano

T(n)

+ i=0,, logb n ai f (n/bi)

f (n) = O(n logba - )* ) ai f (n/bi) = O( ai (n/bi )logba - )* ) = = O ( n logba - )* ( a b )* / b logba ) ) = = O ( n logba - )* (b)*) i )
b (b ) ) = O ( n b + ( b )*) ) T(n) = +* O ( n = = O ( n logba - )* ( n )*) ) = O ( n logba )

log a - )*

)* i

log a - )*

33!

da Demetrescu et al. McGraw Hill 2004

Algoritmi e strutture dati

Giuseppe F. Italiano

Riepilogo
! Esprimiamo quantit di una certa risorsa di calcolo (tempo, spazio) usata da un algoritmo in funzione della dimensione n dellistanza di ingresso ! La notazione asintotica permette di esprimere quantit di risorsa usata dallalgoritmo in modo sintetico, ignorando dettagli non influenti ! A parit di dimensione n dellistanza 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
34!
da Demetrescu et al. McGraw Hill 2004

17 !