a1:a2 - PowerPoint PPT Presentation

About This Presentation
Title:

a1:a2

Description:

Insertion-Sort a1:a2 a2:a3 a1:a3 a1:a3 a2:a3 Selection-Sort – PowerPoint PPT presentation

Number of Views:37
Avg rating:3.0/5.0
Slides: 13
Provided by: Francesco79
Category:
Tags: merge | sort

less

Transcript and Presenter's Notes

Title: a1:a2


1
Insertion-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
2
Esercizio 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

3
Ricorda 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

4
Un 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!!

5
Algoritmi 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).

6
Algoritmo 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
7
Funzionamento 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
8
Funzionamento 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
9
Complessità 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.
10
Complessità 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
11
Riformulazione 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

12
Nel 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!!
Write a Comment
User Comments (0)
About PowerShow.com