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