Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Lezione 3
Analisi degli algoritmi
Oggi parleremo di …
2
Algoritmo 4: analisi completa
2
6 return sum O(1)
Tempo di
Algoritmo Esecuzione Limite asintotico
3 2 7
Count_1 N N 2 O(N2)
2 2
Count_2 6N+2 O(N)
Count_3 5 O(1)
4
Stima del limite asintotico superiore
5
Tempo di esecuzione
Operazioni Semplici
6
Tempo di esecuzione: ciclo for
Ciclo-for
inizializza O(1)
O(1)
test
g(n)
volte
reinizializza O(1)
corpo O(f(n))
T(n) = O(g (n) f (n))
8
Ciclo while: esempio
(1) i0
(2) while x A[i] do
(3) i i+1
(1) O(1)
test in (2) O(1)
(3) O(1)
iterazioni massimo n
O(ciclo-while) = O(1) + n O(1) = O(n)
9
Tempo di esecuzione: cicli innestati
inizializza O (1)
O (1)
test
reinizializza O (1)
10
Cicli innestati: esempio
for i 1 to n do
O(n )
2
for j 1 to n do
ki+j O(n)
T(n) = O (n n) = O (n2)
11
Tempo di esecuzione: if-then-else
if-then-else
test
if (A[1][i] = 0) then
for i 1 to n do
for j 1 to n do
O ( n ) O(n )
2
A[i][j] 0
else
for i 1 to n do
A[i][i] 1 O (n )
if : T(n) = O(n2)
else : T(n) = O(n)
O(f1 (n))
O(f3 (n))
O(max(fi (n)) i = 1, …., m
O(fm (n))
14
Blocchi sequenziali: esempio
for i 1 to n do
O (n )
A[1] 0
for i 1 to n do
for j 1 to n do
O (n ) O (n )
2
15
Ordinamento per selezione
algoritmo selectionSort(array A)
for i 0 to n-2 do
O(n )
min i 2
for j i+1 to n-1 do
O (n)
if (A[j] < A[min]) then min j
scambia A[min] con A[i]
T(n)=O(n2)
16
E per gli algoritmi ricorsivi?
17
Algoritmi ricorsivi e complessità
Esempio: Fattoriale
O(1) se n 1
T ( n)
O(1) T ( n 1) se n 1
18
Soluzione di equazioni di ricorrenza
Il metodo è iterativo
Si itera la regola induttiva di T(n) in termini di n e del caso base
Richiede manipolazione delle somme.
19
Soluzione di equazioni di ricorrenza
Base: T(1) = a
Induzione: T(m) = b + T(m-1)
20
Soluzione di equazioni di ricorrenza
II. Sostituire T(n-1), T(n-2)... fino al caso base e sostituirlo
T(n) = b + T(n-1) =
b + b + T(n-2) = 2×b + T(n-2) =
2×b + b + T(n-3) = 3×b + T(n-3) =
3×b + b + T(n-4) = 4×b + T(n-4) =
……
T(n) = (n-1) × b + T(1)
T(n) = (n-1) × b + a
T(n) = b × n - b + a = O(n) 21
Soluzione di equazioni di ricorrenza
Esempio 1: Fattoriale
algoritmo fact(intero n) intero
O (1) se n 1
T ( n)
O (1) T (n 1) se n 1
Equazione di ricorrenza
Base: T(1) = a
Induzione: T(m) = b + T(m-1) 22
Esempio 1: Analisi del fattoriale
23
Esempio 2
T (n) T (n 1) n per n 2 con T (1) 1
T (n) T (n 1) n T (n 1) T (n 2) (n 1)
T (n 2) (n 1) n T (n 2) T (n 3) (n 2)
T (n 3) (n 2) (n 1) n
T (1) 2 ... (n 2) (n 1) n
1 2 ... (n 2) (n 1) n
n(n 1)
T(n)=O(n2)
2
24
Esempio 3
n
T ( n) T 1 per n 2 con T (1) 0
2
h Ipotesi: n=2h h0
2
T (2 ) T ( ) 1
h
2
h 1
T (2 ) 1
h2 h2
T (2 ) 1 1 T (2 ) 2
h 3
T (2 ) 3
E’ la complessità
dell’algoritmo di ricerca
binaria!
T (2 h h ) h
T (1) h
T(n)=O(logn)
log n
25
Esempio 3
T ( n) ? per n2h
27