La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

TECNICA DIVIDE ET IMPERA. 5 2 8 0 4 7 1 9 3 2 6 0 47255 285 2 80 4 75 2 8 0 4 71 9 3 2 62 61 9 31 93629140 5 2 8 0 4 7 1 9 3 2 6 5 2 8 0 4 71 9 3 2 6.

Presentazioni simili


Presentazione sul tema: "TECNICA DIVIDE ET IMPERA. 5 2 8 0 4 7 1 9 3 2 6 0 47255 285 2 80 4 75 2 8 0 4 71 9 3 2 62 61 9 31 93629140 5 2 8 0 4 7 1 9 3 2 6 5 2 8 0 4 71 9 3 2 6."— Transcript della presentazione:

1 TECNICA DIVIDE ET IMPERA

2 Soluzione2: Algoritmo Merge-Sort

3 Merge-Sort(A,p,r) if p < r q =  (p+r)/2  Merge-Sort(A,p,q) Merge-Sort(A,q+1,r) Merge(A,p,q,r)

4 L   R A[p..q]A[q+1..r]          6 9   6 9   6 9   9   9   9    A[p..r]

5 Merge(A,p,q,r) n 1 = q – p + 1 n 2 = r – q for i = 1 to n 1 L[i] = A[p + i – 1] for j = 1 to n 2 R[j] = A[q + j] L[n 1 + 1] = R[n 2 + 1] =  i = j = 1 for k = p to r if L[i]  R[j] A[k] = L[i] i = i + 1 else A[k] = R[j] j = j + 1

6 Merge-Sort(A,p,r) if p < r // altrimenti A[p..r] è ordinato q =  (p+r)/2  Merge-Sort(A,p,q) Merge-Sort(A,q+1,r) Merge(A,p,q,r) Analisi di Merge-Sort: correttezza non ordinati 1 p rn A ordinati 1 p rn A 1 p rn q A

7 Merge(A,p,q,r) n 1 = q – p + 1 n 2 = r – q for i = 1 to n 1 L[i] = A[p + i – 1] for j = 1 to n 2 R[j] = A[q + j] L[n 1 + 1] = R[n 2 + 1] =  i = j = 1 for k = p to r if L[i]  R[j] A[k] = L[i] i = i + 1 else A[k] = R[j] j = j p rnq A 1 p rn A L ∞ R ∞ 1n1n1 1n2n2 1 p rn A L ∞ R ∞ 1n1n1 1n2n2 k ij 1 p rn A L ∞ R ∞ 1n1n1 1n2n2 k ij

8 Merge(A,p,q,r) // complessità// n 1 = q – p + 1// n 2 = r – q// for i = 1 to n 1 // L[i] = A[p + i – 1]// for j = 1 to n 2 // R[j] = A[q + j]// L[n 1 + 1] = R[n 2 + 1] =  // i = j = 1// for k = p to r // if L[i]  R[j]// A[k] = L[i]// i = i + 1// else A[k] = R[j]// j = j + 1//

9 Merge-Sort(A,p,r) //complessità// if p < r // q =  (p+r)/2  // Merge-Sort(A,p,q) // Merge-Sort(A,q+1,r)// Merge(A,p,q,r) //

10

11 Dunque esiste N tale che per ogni n > N. Qualunque siano i valori delle costanti a', b', c', a", b" e c" l’algoritmo Merge-Sort è superiore a Insertion-Sort per array di dimensione sufficientemente grande.

12 Possiamo dire che “cresce come” n 2 mentre “cresce come” n log 2 n. nn2n2 n log 2 n IS n 2 ns MS n log 2 n ns  s0.033  s  s0.664  s ms 10  s s 133  s · m20ms · s · anni30s

13 dunque esiste N tale che per ogni n > N. Qualunque siano i valori delle costanti a', b', c', a", b" l’algoritmo Insertion-Sort è superiore a Merge-Sort per array (quasi) ordinati e sufficientemente grandi.

14 Insertion-Sort è anche superiore a Merge-Sort per array piccoli in quanto le costanti a', b', c' in sono generalmente molto maggiori delle costanti a", b" e c" in. Questo suggerisce una modifica di Merge-Sort in cui le porzioni di array di dimensione minore di una certa costante k si ordinano con Insertion-Sort invece di usare ricorsivamente Merge-Sort.

15 Soluzione3: Algoritmo Merge-Ins-Sort Merge-Ins-Sort(A,p,r) if p < r if r-p+1 < 32 InsertSort(A,p,r) else q =  (p+r)/2  Merge-Ins-Sort(A,p,q) Merge-Ins-Sort(A,q+1,r) Merge(A,p,q,r)


Scaricare ppt "TECNICA DIVIDE ET IMPERA. 5 2 8 0 4 7 1 9 3 2 6 0 47255 285 2 80 4 75 2 8 0 4 71 9 3 2 62 61 9 31 93629140 5 2 8 0 4 7 1 9 3 2 6 5 2 8 0 4 71 9 3 2 6."

Presentazioni simili


Annunci Google