La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Problema dellordinamento Input: Sequenza di n numeri Output: Permutazione π = tale che: a 1 a 2 …… a n Subroutine in molti problemi E possibile effettuare.

Presentazioni simili


Presentazione sul tema: "Problema dellordinamento Input: Sequenza di n numeri Output: Permutazione π = tale che: a 1 a 2 …… a n Subroutine in molti problemi E possibile effettuare."— Transcript della presentazione:

1 Problema dellordinamento Input: Sequenza di n numeri Output: Permutazione π = tale che: a 1 a 2 …… a n Subroutine in molti problemi E possibile effettuare ricerche in array ordinati in tempo O(log n) Esempi: ordinare una lista di nomi alfabeticamente, o un insieme di numeri, o un insieme di compiti desame in base al cognome dello studente

2 Insertion sort Insertion-Sort(A) For j 2 to length[A] do k A[j] i j – 1 while i > 0 e A[i] > k do A[i+1] A[i] i i – 1 A[i+1] k Insertion sort = Algoritmo di ordinamento A = array che contiene la sequenza da ordinare L insertion sort descrive in maniera formale la procedura con cui ordiniamo una mano di carte da gioco: L indice j indica la carta corrente. L elemento A[j] è copiato nella variabile k; Gli elementi A[1 … j-1] rappresentano le carte già ordinate; Confrontiamo k = A[j] con tutti gli elementi A[1 … j-1] partendo da j-1; Gli elementi più grandi di k vengono uno ad uno spostati a destra fino a che non troviamo la giusta posizione della carta corrente.

3 Insertion sort Insertion-Sort(A) For j 2 to length[A] do k A[j] i j – 1 while i > 0 e A[i] > k do A[i+1] A[i] i i – 1 A[i+1] k Insertion sort = Algoritmo di ordinamento Esempio input: A = j= 2 5 2 4 6 1 3 2 5 4 6 1 3 j= 3 2 5 4 6 1 3 2 4 5 6 1 3 j= 4 2 4 5 6 1 3 2 4 5 6 1 3 j= 5 2 4 5 6 1 3 1 2 4 5 6 3 j= 6 1 2 4 5 6 3 1 2 3 4 5 6 A = array che contiene la sequenza da ordinare Notare: Lalgoritmo di insertion sort è corretto! (si dimostra banalmente per induzione)

4 Insertion-Sort(A) For j 2 to length[A] do k A[j] i j – 1 while i > 0 e A[i] > k do A[i+1] A[i] i i – 1 A[i+1] k Analisi di Insertion sort Costo N.volte c1 n- 1 c2 n -1 c3 n -1 c4 c5 c6 c7 n -1 t j = numero di volte che, per un fissato j, viene eseguito il test del ciclo while (dipende dall input). T(n) = tempo di esecuzione dellalgoritmo.

5 Analisi di Insertion Sort Caso migliore - A= ordinata non decrescente t j 1 ; j = 2, 3, ……,n Il tempo di esecuzione è una funzione lineare della dimensione dell input n, cioè T best (n)=O(n) Nota: è anche vero che T best (n)=Ω(n), e quindi T best (n)= Θ (n) Espressione generale

6 Analisi di Insertion Sort Espressione generale Caso peggiore - A= ordinata decrescente t j j ; j= 2, 3, ……, n Il tempo di esecuzione è una funzione quadratica della dimensione dell input n, cioè T worst (n)=O(n 2 ) Nota: è anche vero che T worst (n)=Ω(n 2 ), e quindi T worst (n)= Θ (n 2 )

7 Analisi di Insertion Sort Espressione generale Caso medio - A= casuale In media t j = j/2 ; j= 2, 3, ……, n Il tempo di esecuzione è una funzione quadratica della dimensione dell input n, cioè T avg (n)=Θ(n 2 ) Ricordiamo che oltre alla complessità temporale dobbiamo valutare anche la complessità spaziale di un algoritmo, ovvero lo spazio di memoria necessario per ospitare le strutture di dati utilizzate dallalgoritmo. La complessità spaziale dellInsertion Sort è Θ (n)

8 Notare Se la complessità spaziale di un certo algoritmo è (g(n)) e tale algoritmo per sua natura è costretto ad ispezionare lintero input, allora la complessità temporale dellalgoritmo è (g(n)). Conseguenze: Nel caso dellInsertion Sort: T(n) = (S(n)) dove T(n) = compl.temp S(n) = compl.spaziale La complessità spaziale di qualsiasi algoritmo che risolve il problema dellordinamento è (n). Qualsiasi algoritmo che risolve il problema dellordinamento ha complessità temporale T(n)= (n)

9 Esercizi di approfondimento Illustrare levoluzione di Insertion-Sort applicata allarray A= Riscrivere la procedura di Insertion-Sort per ordinare in modo non crescente Reverse Insertion-Sort(A) For j 2 to length[A] do k A[j] i j – 1 while i > 0 e A[i] < k do A[i+1] A[i] i i – 1 A[i+1] k


Scaricare ppt "Problema dellordinamento Input: Sequenza di n numeri Output: Permutazione π = tale che: a 1 a 2 …… a n Subroutine in molti problemi E possibile effettuare."

Presentazioni simili


Annunci Google