La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Capitolo 4 Ordinamento Algoritmi e Strutture Dati.

Presentazioni simili


Presentazione sul tema: "Capitolo 4 Ordinamento Algoritmi e Strutture Dati."— Transcript della presentazione:

1 Capitolo 4 Ordinamento Algoritmi e Strutture Dati

2 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 2 Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Ordinamento 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

3 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 3 Il problema dellordinamento Input: una sequenza di n numeri Output: una permutazione (riarrangiamento) della sequenza di input tale che a 1 a 2 … a n

4 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 4 SelectionSort Approccio incrementale: estende lordinamento da k a k+1 elementi, scegliendo il minimo degli n-k elementi non ancora ordinati e mettendolo in posizione k+1

5 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 5 SelectionSort (A) 1. for k=0 to n-2 do 2. m = k+1 3. for j=k+2 to n do 4. if (A[j] < A[m]) then m=j 5. scambia A[m] con A[k+1] al generico passo k, A[1],…,A[k] sono già ordinati linee 2-4: ricerca del minimo fra gli elementi A[k+1],…,A[n] m è lindice dellarray in cui si trova il minimo il minimo è messo in posizione k+1

6 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 6 Correttezza Si dimostra facendo vedere che dopo il generico passo k (k=0,…,n-2) si ha: (i) i primi k+1 elementi sono ordinati e (ii) contengono i k+1 elementi più piccoli dellarray Induzione su k: –k=0: banale. Allinizio il primo elemento è il minimo. (i) e (ii) banalmente verificate. –k>0. Allinizio del passo k i primi k elementi sono ordinati e sono i k elementi più piccoli nellarray (ipotesi induttiva). Allora la tesi segue dal fatto che lalgoritmo seleziona il minimo dai restanti n-k elementi e lo mette in posizione k+1. Infatti: (ii) i k+1 elementi restano i minimi nellarray (i) lelemento in posizione k+1 non è mai più piccolo dei primi k

7 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 7 Complessità temporale Come misurarla? –Numero confronti –Numero operazioni (confronti + spostamenti) –Numero passi elementari (darà lo stesso risultato del precedente)

8 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 8 Complessità SelectionSort (A) 1. for k=0 to n-2 do 2. m = k+1 3. for j=k+2 to n do 4. if (A[j] < A[m]) then m=j 5. scambia A[m] con A[k+1] n-k-1 confronti uno scambio n-k operazioni T(n) = (n-k-1)= k = (n 2 ) k=0 n-2 Complessità nel caso migliore? T best (n)= (n 2 ) k=1 n-1

9 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 9 InsertionSort Approccio incrementale: estende lordinamento da k a k+1 elementi, posizionando lelemento (k+1)-esimo nella posizione corretta rispetto ai primi k elementi

10 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 10 InsertionSort (A) 1. for k=1 to n-1 do 2. x = A[k+1] 3. for j=1 to k+1 do 4. if (A[j] > x) then break 5. if (j < k+1) then 6. for t=k downto j do A[t+1]= A[t] 7. A[j]=x al generico passo k, A[1],…,A[k] sono già ordinati elemento x=A[k+1] inserito nella posizione che gli compete righe 3 e 4: individuano la posizione j in cui va messo x riga 6: fa spazio per inserire x

11 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 11 Correttezza Si dimostra facendo vedere che dopo il generico passo k i primi k+1 elementi sono ordinati (fra di loro) Induzione su k: –k=0: banale. Allinizio il primo elemento è ordinato –k>0. Allinizio del passo k i primi k elementi sono ordinati (ipotesi induttiva). Allora la tesi segue banalmente dalla struttura dellalgoritmo.

12 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 12 InsertionSort (A) 1. for k=1 to n-1 do 2. x = A[k+1] 3. for j=1 to k+1 do 4. if (A[j] > x) then break 5. if (j < k+1) then 6. for t=k downto j do A[t+1]= A[t] 7. A[j]=x T(n) = (k+1) = (n 2 ) al più k+1 confronti nessun confronto k+1 operazioni k=1 n-1 Numero di operazioni nel caso migliore? T best (n)= (n 2 ) Possiamo fare meglio?

13 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 13 InsertionSort2 (A) 1. for k=1 to n-1 do 2. x = A[k+1] 3. j = k 4. while j > 0 e A[j] > x do 5. A[j+1] = A[j] 6. j= j-1 7. A[j+1]=x Caso migliore –Si verifica quando larray è già ordinato –T best (n)= (n) Caso peggiore –array ordinato in ordine decrescente –T(n)= (n 2 )

14 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 14 Esercizio Dimostrare la correttezza e stimare la complessità temporale nel caso peggiore e nel caso migliore del seguete algoritmo BubbleSort (A) 1. for i=1 to n-1 do 2. scambi= false 3. for j=2 to n-i+1 do 4. if (A[j-1] > A[j]) then scambia A[j-1] e A[j]; scambi=true 5. if (scambi=false) then break


Scaricare ppt "Capitolo 4 Ordinamento Algoritmi e Strutture Dati."

Presentazioni simili


Annunci Google