32
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Embed Size (px)

Citation preview

Page 1: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Algoritmi e Strutture Dati

Capitolo 2Modelli di calcolo e

metodologie di analisi

Page 2: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl

Riepilogo algoritmi Fibonacci

fibonacci6

fibonacci5

fibonacci4

fibonacci3

fibonacci2

Θ(log n)

Θ(n)

Θ(n)

Θ(n)

Θ(n)

Θ(log n)*

Θ(1)

Θ(1)

Θ(n)

Numero di linee di codice

Occupazione di memoria

fibonacci1 Θ(1)Θ(1)

Θ(n)

* Θ(log n) per le variabili di lavoro e Θ(log n) per le chiamate ricorsive

Page 3: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl3

Modello di calcolo• Per valutare la complessità di un algoritmo, bisogna

prima di tutto stabilire un modello di calcolo di riferimento su cui esso viene eseguito; noi useremo il classico modello RAM (random access machine)

• La RAM è un tipo particolare di macchina a registri in grado di eseguire un programma finito di istruzioni di input/output, operazioni aritmetiche, accesso e modifica del contenuto della propria memoria ad accesso diretto, la quale è strutturata come un array di dimensione infinita in cui ogni cella può contenere un qualunque valore intero/reale;

• La RAM è un’astrazione dell’architettura di von Neumann

Page 4: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl4

Criterio di costo uniforme

• Nel modello a costi uniformi, ogni istruzione ha un costo unitario

• Complessità temporale misurata come numero di istruzioni eseguite– istruzione ingresso/uscita (lettura o stampa)– operazione aritmetico/logica– accesso/modifica del contenuto della memoria

• Complessità spaziale misurata come numero massimo di celle di memoria della RAM occupate durante l’esecuzione

Page 5: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl5

Dimensione dell’input• Misureremo le risorse di calcolo usate da un algoritmo

(tempo di esecuzione / occupazione di memoria ) in funzione della dimensione dell’istanza in input

• Esistono due modalità di caratterizzazione della dimensione dell’input:– Quantità di memoria effettiva utilizzata per codificare l’input

(ad esempio, numero di bit necessari per rappresentare un valore in input)

– Parametro caratterizzante la dimensione dell’input (ad esempio, numero di elementi di una sequenza da ordinare)

Page 6: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl6

Domanda di approfondimento• Qual è la complessità temporale degli algoritmi Fibonacci6, Fibonacci4 e Fibonacci2 in funzione della rappresentazione dell’input?

• Abbiamo appena affermato che la complessità temporale viene misurata in funzione della dimensione dell’input; nel caso dei tre algoritmi in questione, l’input è un numero n, che può essere rappresentato usando k=log n bit. Quindi:– Fibonacci6 costa T(n)=Θ(log n)=Θ(k), ed è quindi polinomiale (più

precisamente, lineare) nella dimensione dell’input;

– Fibonacci4 costa T(n)=Θ(n)=Θ(2k), ed è quindi esponenziale nella dimensione dell’input;

– Fibonacci2 costa T(n)=Θ(n)=Θ(2k), ed è quindi superesponenziale nella

dimensione dell’input.

Page 7: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl7

Notazione asintotica

Page 8: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl8

• Complessità temporale e spaziale saranno espresse in notazione asintotica rispetto alla dimensione dell’input

• La notazione asintotica è un’astrazione utile per descrivere l’ordine di grandezza di una funzione ignorando i dettagli non influenti, come costanti moltiplicative e termini di ordine inferiore

• Ai fini dell’analisi asintotica, sarà sufficiente considerare le cosiddette operazioni dominanti, ovvero quelle che nel caso peggiore vengono eseguite più spesso

• Queste si trovano annidate nei cicli più interni dello pseudocodice che descrive l’algoritmo

Notazione asintotica e operazioni dominanti

Page 9: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl9

f(n) = O(g(n)) se due costanti c>0 e n0≥0 tali che f(n) ≤ c g(n) per ogni n ≥ n0

Notazione asintotica O

cg(n)

f(n)

n0 n

f(n) = ( g(n) )

Page 10: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Un caso notevole: i polinomi

Sia f(n) = ad nd + ad-1 nd-1 + … + a0 un polinomio di grado d (con ad>0); dimostriamo che f(n)=O(nd)

Se scegliamo c = ad + |ad-1| + … + |a0|

c nd = ad nd + |ad-1| nd+…+ |a0| nd ad nd + |ad-1| nd-1+…+ |a0| ad nd + ad-1 nd-1 + … + a0 = f(n)

n 1=n0 f(n) c nd

Copyright © 2004 - The McGraw - Hill Companies, srl10

Page 11: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl11

Esempi

• Sia f(n) = 2n2 + 3n; vogliamo dimostrare che f(n)=O(n2).

Scegliendo c = a2 + |a1| + |a0| = 2+3+0=5

avremo che 2n2 + 3n ≤ 5n2 per ogni n ≥ n0=1.

• f(n) = O(n3) (c=1, n0=3)

• f(n) = O(2n) (c=4, n0=3)

• Invece, f(n) O(n)

Page 12: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl12

Legame con il concetto di limite

ngnf ngnf

limn O

ngnf

lim ngnf nO

esiste) (se ngnf

lim ngnf nO

Page 13: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl13

f(n) = (g(n)) se due costanti c>0 e n0≥0 tali che f(n) ≥ c g(n) per ogni n ≥ n0

Notazione asintotica

n0 n

f(n) = ( g(n) )f(n)

c g(n)

Page 14: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Un caso notevole: i polinomi

Sia f(n) = ad nd + ad-1 nd-1 + … + a0 un polinomio di grado d (con ad>0); dimostriamo che f(n)=Ω(nd)

Infatti: f(n)/nd = ad + ad-1 n-1 + … + a0 n-d n0: n n0 ad - |ad-1|n-1 - … - |a0| n-d > 0

Se scegliamo c = ad - |ad-1| n0-1 - … - |a0 | n0

-d

c nd = ad nd -|ad-1| nd n0-1 -…- |a0| nd n0

-d

e poiché per n n0 si ha nd n0-k nd-k

c nd ad nd - |ad-1| nd-1-…- |a0| ad nd + ad-1 nd-1 + … + a0

n n0 c nd f(n)

Copyright © 2004 - The McGraw - Hill Companies, srl14

Page 15: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl15

Esempi

• Sia f(n) = 2n2 - 5n; vogliamo dimostrare che f(n)=(n2).

f(n)/n2 = (2n2 - 5n)/n2 = 2 - 5/n

ma 2 - 5/n > 0 per n ≥ 3 (quindi n0=3);

Scegliendo c = a2 - |a1|/n0 - |a0|/n02 = 2-3/3=1

avremo che 2n2 - 3n ≥ 1n2 per n ≥ n0=3.

• f(n) = (n) (c=1, n0=2)

• f(n) =(log n) (c=1, n0=2)

• Invece, f(n) (n3)

Page 16: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl16

Legame con il concetto di limite

ngnf ngnf

limn 0

0 ngnf

lim ngnf n

0 esiste) (se ngnf

lim ngnf n

Page 17: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl17

f(n) = (g(n)) se tre costanti c1,c2>0 e n0≥0 tali che c1 g(n) ≤ f(n) ≤ c2 g(n) per ogni n ≥ n0

Notazione asintotica

n0 n

f(n) = ( g(n) )f(n)

c1 g(n)

c2 g(n)

Page 18: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl18

Relazioni tra O, Ω e Θ

ngOnf g(n) nf

ngΘnf g(n)O nf

ngnf g(n) nf

ngΘnf g(n) nf

ngOnf e ngnf g(n) nf

Page 19: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl19

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, n0 tale che n n0 0 f(n) c g(n)

Notare:

0ngnf

lim ngonf n

ngO ngo

Page 20: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl20

Notazione ω

Data una funzione g(n): N R, si denota con ω(g(n)) l’insieme delle funzioni f(n): N R:

ω(g(n)) = f(n) : c > 0, n0 tale che n n0 0 c g(n) f(n)

Notare:

ngnf

lim ngnf n

ng ng

Page 21: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl21

Riassumendo …

menteasintotica cngnf

c0 ngΘnf 21

menteasintotica ngnf

c0 ngnf 1

menteasintotica cngnf

0 ngOnf 2

0 ngnf

lim ngonf n

ngnf

lim ngnf n

Page 22: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl22

Analogie

O

>

Page 23: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Graficamente

Copyright © 2004 - The McGraw - Hill Companies, srl23

Page 24: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl24

Proprietà della notazione asintoticaTransitività

Riflessività

Simmetria

Simmetria trasposta

nhnf nhng e ngnf

nhOnf nhOng e ngOnf

nhnf nhng e ngnf

nhnf nhng e ngnf ooo

nhnf nhng e ngnf

nfnf

nfΟnf nfnf

nfng ngnf

nfng ngOnf

nfng ngonf

Page 25: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

d

n

n na

lim

Copyright © 2004 - The McGraw - Hill Companies, srl25

Logaritmi

Esponenziali

Polinomi

Fattoriali

P(n) = ad nd + ad-1 nd-1 + … + a0

ad > 0

f(n) = an

a >1

P(n) = O(nd), P(n) = (nd) P(n) = (nd) P(n) = O(nk), k≥d, P(n) ≠ O(nk), k<dP(n) = (nk), k≤d, P(n) ≠ (nk), k>d

an = (nd) d>0an = (nd) d>0

f(n) = logbn b>1

1dc,

nnlog

lim d

cb

n ,0

(logbn)c = o(nd) c,d>0(logbn)c = O(nd) c,d>0

f(n) = n! = n*(n-1)*……*2*1 n! = o(nn) n! = (an)

Relazioni asintotiche notevoli

Page 26: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl26

Metodi di analisi

Page 27: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl27

• Come detto, misureremo le risorse di calcolo usate da un algoritmo in funzione della dimensione delle istanze

• Ma istanze diverse, a parità di dimensione, potrebbero richiedere risorse diverse! Ad esempio, se devo cercare un elemento x in un insieme di n elementi in input, il numero di confronti che farò dipenderà dalla posizione che x occupa nella sequenza.

• Distinguiamo quindi ulteriormente tra analisi nel caso peggiore, migliore e medio

Caso peggiore, migliore e medio

Page 28: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl28

• Sia tempo(I) il tempo di esecuzione di un algoritmo sull’istanza I

Tworst(n) = max istanze I di dimensione n tempo(I)

• Intuitivamente, Tworst(n) è il tempo di esecuzione sulle istanze di ingresso che comportano più lavoro per l’algoritmo

• Definizione analoga può essere data per lo spazio

Caso peggiore

Page 29: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl29

• Sia tempo(I) il tempo di esecuzione di un algoritmo sull’istanza I

Tbest(n) = min istanze I di dimensione n tempo(I)

• Intuitivamente, Tbest(n) è il tempo di esecuzione sulle istanze di ingresso che comportano meno lavoro per l’algoritmo

Caso migliore

Page 30: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl30

• Sia P(I) la probabilità di occorrenza del-l’istanza I

Tavg(n) = ∑ istanze I di dimensione n P(I) tempo(I)

• Intuitivamente, Tavg(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

Page 31: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl31

• Denoteremo con T(n) il tempo di esecuzione dell’algoritmo su una generica istanza di ingresso di dimensione n. Varrà quindi:

T(n) ≤ Tworst(n)

T(n) ≥ Tbest(n)• Analogamente, per l’occupazione di memoria:

S(n) ≤ Sworst(n)

S(n) ≥ Sbest(n)

Complessità temporale e spaziale di un algoritmo

Page 32: Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl32

Esercizio di approfondimento

Sia dato un mazzo di n carte scelte in un universo U di 2n carte distinte, e si supponga di dover verificare se una certa carta xU appartenga o meno al mazzo. Progettare un algoritmo per risolvere tale problema, e analizzarne il costo (in termine di numero di confronti) nel caso migliore, peggiore e medio.