La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.

Presentazioni simili


Presentazione sul tema: "Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi."— Transcript della presentazione:

1 Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi

2 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 2 Modello di calcolo Lanalisi della complessità di un algoritmo è basata sul concetto di passo elementare Bisogna stabilire un modello di calcolo di riferimento su cui è eseguito lalgoritmo Macchina a registri (RAM: random access machine) –un programma finito –un nastro di ingresso e uno di uscita –una memoria strutturata come un array ogni cella può contenere un qualunque valore intero/reale –un registro detto accumulatore (contiene operandi istruzione corrente) –un registro detto contatore delle istruzioni (contiene indirizzo istruzione successiva) la RAM è unastrazione dellarchitettura di von Neumann

3 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 3 Criterio di costo uniforme Complessità temporale misurata come numero di passi elementari eseguiti Complessità spaziale misurata come numero massimo di celle di memoria occupate durante lesecuzione Passi elementari: –istruzione ingresso/uscita (lettura o stampa) –operazione aritmetico/logica –accesso/modifica del contenuto della memoria Complessità temporale e spaziale espresse in notazione asintotica

4 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 4 Notazione asintotica

5 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 5 f(n) = tempo di esecuzione / occupazione di memoria di un algoritmo su input di dimensione n La notazione asintotica è unastrazione utile per descrivere lordine di grandezza di f(n) ignorando i dettagli non influenti, come costanti moltiplicative e termini di ordine inferiore Notazione asintotica

6 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 6 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

7 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 7 Esempi: Sia f(n) = 2n 2 + 3n, allora f(n)=O(n 3 ) (c=1, n 0 =3) f(n)=O(n 2 ) (c=3, n 0 =3) f(n) O(n)

8 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 8 Notare:

9 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 9 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)

10 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 10 Esempi: Sia f(n) = 2n 2 – 3n, allora f(n)= (n) (c=1, n 0 =2) f(n)= (n 2 ) (c=1, n 0 =3) f(n) (n 3 )

11 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 11 Notare:

12 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 12 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)

13 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 13 Esempi: Sia f(n) = 2n 2 – 3n, allora f(n)= (n 2 ) (c 1 =1, c 2 =2, n 0 =3) f(n) (n) f(n) (n 3 )

14 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 14 Notare che:

15 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 15 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:

16 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 16 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:

17 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 17 Riassumendo ……

18 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 18 Proprietà della notazione asintotica Transitività Riflessività Simmetria Simmetria trasposta

19 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 19 Se T(n) = a d n d + a d-1 n d-1 + … + a 0 è un polinomio di grado d (con a d >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 0 -1 - … - |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:

20 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 20 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 ) 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 )

21 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 21 Delimitazioni inferiori e superiori

22 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 22 Delimitazioni superiori (upper bound) Definizione Un algoritmo A ha costo di esecuzione O(f(n)) su istanze di dimensione n e rispetto ad una certa risorsa di calcolo, se la quantità r di risorsa sufficiente per eseguire A su una qualunque istanza di dimensione n verifica la relazione r(n)=O(f(n)) Definizione Un problema P ha una complessità O(f(n)) rispetto ad una risorsa di calcolo se esiste un algoritmo che risolve P il cui costo di esecuzione rispetto quella risorsa è O(f(n))

23 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 23 Delimitazioni inferiori (lower bound) Definizione Un algoritmo A ha costo di esecuzione (f(n)) su istanze di dimensione n e rispetto ad una certa risorsa di calcolo, se la massima quantità r di risorsa necessaria per eseguire A su istanze di dimensione n verifica la relazione r(n)= (f(n)) Definizione Un problema P ha una complessità (f(n)) rispetto ad una risorsa di calcolo se ogni algoritmo che risolve P ha costo di esecuzione (f(n)) rispetto quella risorsa

24 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 24 Ottimalità di un algoritmo Definizione Dato un problema P con complessità (f(n)) rispetto ad una risorsa di calcolo, un algoritmo che risolve P è ottimo se ha costo di esecuzione O(f(n)) rispetto quella risorsa

25 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 25 Metodi di analisi

26 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 26 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

27 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 27 Sia tempo(I) il tempo di esecuzione di un algoritmo sullistanza 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 lalgoritmo Caso peggiore

28 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 28 Sia tempo(I) il tempo di esecuzione di un algoritmo sullistanza 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 lalgoritmo Caso migliore

29 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 29 Sia P (I) la probabilità di occorrenza del- listanza 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

30 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 30 Ricerca di un elemento x in una lista L non ordinata Esempio 1 T best (n) = 1 x è in prima posizione T worst (n) = n x L oppure è in ultima posizione T avg (n) = (n+1)/2 assumendo che le istanze siano equidistribuite (x L )

31 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 31 Ricerca di un elemento x in un array L ordinato Esempio 2 (1/2) Confronta x con lelemento centrale di L e prosegue nella metà sinistra o destra in base allesito del confronto

32 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 32 Esempio 2 (2/2) T best (n) = 1 lelemento centrale è uguale a x T worst (n) = log n x L oppure viene trovato allultimo confronto T avg (n) = log n -1+1/n assumendo che le istanze siano equidistribuite Poiché la dimensione del sotto-array su cui si procede si dimezza dopo ogni confronto, dopo li-esimo confronto il sottoarray di interesse ha dimensione n/2 i Risulta n/2 i = 1 per i=log 2 n

33 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 33 Analisi di algoritmi ricorsivi

34 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 34 Lalgoritmo di ricerca binaria può essere riscritto ricorsivamente come: Esempio Come analizzarlo?

35 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 35 Il tempo di esecuzione può essere descritto tramite una equazione di ricorrenza: Equazioni di ricorrenza c + T(n/2) se n>1 1 se n=1 T(n) = Vari metodi per risolvere equazioni di ricorrenza: iterazione, sostituzione, teorema Master...

36 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 36 Idea: srotolare la ricorsione, ottenendo una sommatoria dipendente solo dalla dimensione n del problema iniziale Metodo delliterazione 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/2 i ) = i c + T(n/2 i ) Per i=log 2 n: T(n) = c log n + T(1) = O(log n)

37 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 37 Esercizi Risolvere usando il metodo delliterazione le seguenti equazioni di ricorrenza: T(n)= n + T(n-1), T(1)=1; T(n)= 9 T(n/3) + n (soluzione sul libro di testo: Esempio 2.4)

38 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 38 Idea: indovinare una soluzione, ed usare induzione matematica per provare che la soluzione dellequazione di ricorrenza è effettivamente quella intuita Metodo della sostituzione Esempio: T(n) = n + T(n/2), T(1)=1 Assumiamo che la soluzione sia T(n) c n per una costante c opportuna Passo base: T(1)=1 c 1 per ogni c 1 Passo induttivo: T(n)= n + T(n/2) n+c (n/2) = (c/2+1) n Quindi T(n) c n per c2

39 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 39 Esercizio Risolvere usando il metodo della sostituzione la seguente equazione di ricorrenza: T(n)= 9 T(n/3) + n, T(1)=1; –(soluzione sul libro di testo: Esempio 2.7)

40 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 40 Teorema Master Permette di analizzare algoritmi basati sulla tecnica del divide et impera: - dividi il problema (di dimensione n) in a sottoproblemi di dimensione n/b - risolvi i sottoproblemi ricorsivamente - ricombina le soluzioni Sia f(n) il tempo per dividere e ricombinare istanze di dimensione n. La relazione di ricorrenza è data da: a T(n/b) + f(n) se n>1 1 se n=1 T(n) =

41 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 41 Algoritmo fibonacci6 a=1, b=2, f(n)=O(1)

42 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 42 La relazione di ricorrenza: Teorema Master ha soluzione: a T(n/b) + f(n) se n>1 1 se n=1 T(n) = 1. T(n) = (n ) se f(n)=O(n ) per >0 log b a log b a - 2. T(n) = (n log n) se f(n) = (n ) log b a 3. T(n) = (f(n)) se f(n)= (n ) per >0 e a f(n/b) c f(n) per c<1 e n sufficientemente grande log b a +

43 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 43 1) T(n) = n + 2T(n/2) a=2, b=2, f(n)=n= (n ) T(n)= (n log n) (caso 2 del teorema master) Esempi log 2 2 2) T(n) = c + 3T(n/9) a=3, b=9, f(n)=c= (n ) T(n)= (n) (caso 1 del teorema master) log 9 3 - 3) T(n) = n + 3T(n/9) a=3, b=9, f(n)=n= (n ) (caso 3 del teorema master) log 9 3 + T(n)= (n) 3(n/9) c n per c=1/3

44 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 44 4) T(n) = n log n + 2T(n/2) a=2, b=2, f(n) = (n ) ma f(n) (n ), > 0 Esempi log 2 2 log 2 2+ non si può applicare il teorema Master!

45 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 45 Idea: –disegnare lalbero delle chiamate ricorsive indicando la dimensione di ogni nodo –studiare il tempo speso per tutte le chiamate di un dato livello dellalbero –studiare il numero di livelli dellalbero Esempio: T(n) = T(n/3) + T(2n/3) + n, T(1) = 1 Unaltra tecnica utile: Analisi dellalbero della ricorsione

46 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 46 Esempio: T(n) = T( n) + O(1), T(1) = 1 Cambiamento di variabile T(n) = T(n 1/2 ) + O(1) n=2 x x =log 2 n T(2 x ) = T(2 x/2 ) + O(1) R(x):=T(2 x ) R(x) = R(x/2) + O(1) R(x) = O(log x) T(n) = O(log log n)


Scaricare ppt "Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi."

Presentazioni simili


Annunci Google