Title: a1:a2
1Insertion-Sort
a1a2
?
?
a2a3
a1a3
?
?
?
?
lta2,a1,a3gt
a2a3
a1a3
lta1,a2,a3gt
?
?
?
?
lta1,a3,a2gt
lta2,a3,a1gt
lta3,a1,a2gt
lta3,a2,a1gt
Selection-Sort
a1a2
?
?
a1a3
a2a3
?
?
?
?
a1a2
a2a1
a2a3
a1a3
?
?
?
?
?
?
lta2,a3,a1gt
lta1,a3,a2gt
lta3,a2,a1gt
lta2,a1,a3gt
lta3,a1,a2gt
lta1,a2,a3gt
2Esercizio 2
- Consideriamo una funzione f(n) tale che
- f(n) ?(n log2n)
- La relazione precedente implica anche
- f(n) ?(n logBn) B base generica
- -----------------------------------------
- Infatti
- f(n) ?(n log2n) ? ? c, n0 gt 0 tali che ? n ?
n0 - 0 ? c n
log2n ? f(n) - Notiamo che
- log2n logBn / logB2
3Ricorda Un algoritmo che risolve un certo
problema si dice ottimale se il suo tempo di
esecuzione coincide (in senso asintotico) con il
lower bound del problema. Esercizio Fusione
di due sequenze ordinate Considerare il problema
della fusione di 2 sequenze ordinate di lunghezza
n/2 in una sequenza ordinata di lunghezza n.
Scrivere un algoritmo, analizzarne la
complessità, valutare se lalgoritmo scritto è un
algoritmo ottimale.
- Alcune domande preliminari
- Lower bound? Bohquello banale è pari ad O(n)
- Upper bound? Vediamoparto con un algoritmo
banale
Merge1(A,B) For i? 1 to n/2 do Ci ?
Ai Cn/2i ? Bi Insertion-Sort(C)
- Lalgoritmo è corretto?
- SI
- Complessità temporale e spaziale dellalgoritmo?
- T(n2) e T(n), rispettivamente, come lInsertion
Sort - Lalgoritmo è ottimale?
- ? Direi di NO
4Un altro algoritmo di fusione
Merge2(A,B) i ? 1 j ? 1 While (i?n/2) and
(j?n/2) do if (Ai lt Bj)
then Cij-1 ? Ai
i ? i 1 else
Cij-1 ? Bj j ?
j 1 If (i gt n/2) then for k ? j to
n/2 do Ckn/2 ?
Bk else for k ? i to n/2
do Ckn/2 ? Ak
- Lalgoritmo è corretto?
- SI
- Complessità temporale e spaziale dellalgoritmo?
- T(n)
- Lalgoritmo è ottimale?
- ? SI!!
5Algoritmi di ordinamento ottimali
Problema dell ordinamento per confronto Lower
bound - ?(n log n) albero di
decisione Upper bound O(n2)
IS,SS Proviamo a costruire un algoritmo
ottimale.
- Notiamo che IS e SS utilizzano un approccio
incrementale alla k-esima iterazione essi
producono una sequenza ordinata di k elementi
L approccio incrementale non è lunico possibile
- Approccio divide-et-impera
- - Il problema è diviso in un certo numero di
sotto-problemi (divide) - I sottoproblemi vengono risolti separatamente
(impera) - Le soluzioni dei sottoproblemi vengono combinate
per ottenere la soluzione del problema iniziale
(combina).
6Algoritmo Merge-Sort
Merge-Sort(A, p, r) If (p lt r) then q
?(pr)/2 ? Merge-Sort(A, p,q)
Merge-Sort(A, q1, r)
Merge(A, p, q, r) Merge(A,
p, q, r)
Assume che
Ap q ordinata
Aq1 r ordinata
Genera
Ap r ordinata
Per ordinare A si lancia Merge-Sort(A,1,n)
Funzionamento del Merge-Sort per n8 valore dei
parametri p,r
Merge-Sort
1,8
p,r
1,4
5,8
5,6
7,8
1,2
3,4
3,3
7,7
4,4
8,8
5,5
6,6
1,1
2,2
7Funzionamento del Merge-Sort progressione delle
chiamate ricorsive
p1 1 r1 8 q1 4
Merge-Sort
p2 1 r2 4 q2 2
p2 5 r2 8 q2 6
p3 5 r3 6 q3 5
p3 7 r3 8 q3 7
p3 1 r3 2 q3 1
p3 3 r3 4 q3 3
p4 3 r4 3 q4
p4 7 r4 7 q4
p4 5 r4 5 q4
p4 4 r4 4 q4
p4 8 r4 8 q4
p4 1 r4 1 q4
p4 2 r4 2 q4
p4 6 r4 6 q4
8Funzionamento del Merge-Sort un esempio
n 8 A lt 5,2,4,6,1,3,8,7 gt
Merge-Sort
5,2,4,6,1,3,8,7
1,2,3,4,5,6,7,8
5,2,4,6
1,3,8,7
2,4,5,6
1,3,7,8
5,2
1,3
8,7
4,6
2,5
4,6
1,3
7,8
8
7
5
1
3
4
6
2
9Complessità temporale del Merge Sort
Merge-Sort(A, p, r) If (p lt r) then q
?(pr)/2 ? Merge-Sort(A, p,q)
Merge-Sort(A, q1, r)
Merge(A, p, q, r)
Ci aspettiamo che il comportamento asintotico del
Merge-Sort sia migliore del comportamento
asintotico di IS e SS. Infatti, lapproccio
ricorsivo dovrebbe aggirare i problemi indotti
dallapproccio incrementale.
10Complessità temporale del Merge-Sort
Merge-Sort(A, p, r) If (p lt r) then q
?(pr)/2 ? Merge-Sort(A, p,q)
Merge-Sort(A, q1, r)
Merge(A, p, q, r)
Il Merge-Sort è un algoritmo ricorsivo ? Il
tempo di esecuzione del MS verifica un equazione
di ricorrenza Tms(n) d(n) 2Tms(n/2)
c(n) d(n) ? tempo necessario a
dividere in ? ?(1)
2 sequenze lunghe n/2
c(n) ? tempo necessario per combinare
? ?(n) 2 sequenze
ordinate di n/2 elementi (Merge()) Tms(n) 2
Tms(n/2) f(n)
f(n) d(n) c(n) ?(n) Questa equazione vale
per tutti i valori di n eccetto che per n1
11Riformulazione del teorema master per f(n)T(n)
Siano a, b,c costanti non negative. La soluzione
dell equazione di ricorrenza T(n) c
per n 1 aT(n/b)
T(n) per n gt 1 è T(n
logba) se a gt b T(n) T(n log
n) se a b T(n)
se a lt b
12Nel caso del Merge-Sort, ab2 ? La complessità
temporale dellalgoritmo Merge-Sort è T(n)
?(n log n) ? Ciò implica che lalgoritmo
Merge-Sort è un algoritmo di ordinamento
ottimale!!