Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Emanuela Merelli
Analisi di Algoritmi
spazio di memoria
(quantità di memoria utilizzata durante l’esecuzione)
e
tempo computazionale
(tempo di esecuzione)
Analisi di Algoritmi
Dimensione dell’input
Modello di Calcolo
Assumiamo di utilizzare
Definizione di tempo
Tempo di esecuzione
passo ∼
= una linea di pseudocodice
Parte I
Il problema dell’ordinamento
Il problema dell’ordinamento
Definition
Dato un insieme di n numeri ha1 , a2 , . . . , an i, trovare un’opportuna
permutazione ha10 , a20 , . . . , an0 i tale che a10 ≤ a20 ≤ . . . ≤ an0
Input: ha1 , a2 , . . . , an i
ordinati
elemento da inserire
30 10 40 20
10 30 40 20
10 30 40 20
10 20 30 40
Insertion Sort
for j ← 2 to lenght[A]
do key ← A[j]
. Si inserisce A[j] nella sequenza ordinata A[1..j-1]
i ← j-1
while i > 0 e A[i] > key
do A[i+1] ← A[i]
i ← i-1
A[i+1] ← key
Istanza A = {5, 2, 4, 6, 1, 3}
j = 2 5 2 4 6 1 3
j = 3 2 5 4 6 1 3
j = 4 2 4 5 6 1 3
j = 5 2 4 5 6 1 3
j = 6 1 2 4 5 6 3
j = 7 1 2 3 4 5 6
Insertion Sort
Insertion Sort
Insertion-sort(A,n)
statement costo
1. for j = 2 to n { c1
2. key = A[j] c2
3. i = j-1 c3
4. while (i > 0) and (A[i] > key ) { c4
5. A[i + 1] = A[i] c5
6. i =i −1 c6
7. }
8. A[i + 1] = key c8
9. }
Insertion Sort
Insertion-sort
Insetion-sort(A,n)
tj
A[j]
Insetion-sort(A,n)
T (n) = an + b
dove a e b sono delle costanti
T (n) è una funzione lineare in n
Pn Pn
T (n) = c1 n + (c2 + c3 + c8 )(n − 1) + c4 j=2 tj + (c5 + c6 ) j=2 (tj − 1)
Pn Pn
= c1 n + (c2 + c3 + c8 )(n − 1) + c4 j=2 j + (c5 + c6 ) j=2 (j − 1)
Fact
n n
X X n(n + 1) n2 n
j= j −1= −1= + −1
2 2 2
j=2 j=1
n n−1
X X (n − 1)n n2 n
(j − 1) = j= = −
2 2 2
j=2 j=1
Pn Pn
T (n) = c1 n + (c2 + c3 + c8 )(n − 1) + c4 j=2 j + (c5 + c6 ) j=2 (j − 1)
2 2
= c1 n + (c2 + c3 + c8 )(n − 1) + c4 ( n2 + n2 − 1) + (c5 + c6 )( n2 − n2 )
c4 +c5 +c6 2 c4 −c5 −c6
= 2 n + (c1 + c2 + c3 + 2 + c8 )n − (c2 + c3 + c4 + c8 )
T (n) = an2 + bn + c
dove a, b e c sono delle costanti
T (n) è una funzione quadratica in n
n n n
X 1X 1 X 1 n2 n n2 n 1
j/2 = j= ( j − 1) = ( + − 1) = + −
2 2 2 2 2 4 4 2
j=2 j=2 j=1
n n n n−2 n−2
X X j −2 1X 1X 1X
(j/2 − 1) = = j −2= j= j=
2 2 2 2
j=2 j=2 j=2 j=0 j=1
1 (n − 2)(n − 1) 1 n2 − 3n + 2 n2 3n 1
= = − +
2 2 2 2 4 4 2
Pn
T (n) = c1 n + (c2 + c3 + c8 )(n − 1) + c4 j=2 j/2
Pn
+(c5 + c6 ) j=2 (j/2 − 1)
2
= c1 n + (c2 + c3 + c8 )(n − 1) + c4 ( n4 + n4 − 12 )+
2
(c5 + c6 )( n4 − 3n 1
4 + 2)
T (n) = an2 + bn + c
dove a, b e c sono delle costanti
T (n) è una funzione quadratica in n