Capitolo 4 Ordinamento Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Il problema della ricerca Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Problema dellordinamento Input: Sequenza di n numeri Output: Permutazione π = tale che: a 1 a 2 …… a n Subroutine in molti problemi E possibile effettuare.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Capitolo 1 Unintroduzione.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Il problema della ricerca Algoritmi e Strutture Dati.
Il problema della ricerca Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Boruvka Algoritmi.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Visite di grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Diremo che f(n) =
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Didattica dei Fondamenti dell’Informatica 2 Seconda giornata: progettare un algoritmo corretto, efficiente, e possibilmente ottimo! Guido Proietti
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Algoritmi e Strutture Dati Luciano Gualà
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Analisi asintotica e Metodi di analisi Algoritmi e Strutture Dati.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Quinta giornata Risolvere efficientemente un problema in P: ancora sulla sequenza di Fibonacci.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Sesta giornata Risolvere efficientemente un problema in P: Il problema dell’ordinamento: Insertion.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento: lower bound Ω(n log n) e MergeSort ((*) l’intera lezione) Algoritmi e Strutture Dati.
Transcript della presentazione:

Capitolo 4 Ordinamento Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

Algoritmi 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

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

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

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 5 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

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 i primi k+1 elementi sono ordinati 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 dalla struttura dellalgoritmo.

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)

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 8 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?

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 9 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 )

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 10 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

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 11 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

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 12 Correttezza Si dimostra facendo vedere che dopo il generico passo k (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

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 13 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) = (n 2 ) k=0 n-2 Complessità nel caso migliore? T best (n)= (n 2 )

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 14 BubbleSort Esegue una serie di scansioni dellarray –In ogni scansione confronta coppie di elementi adiacenti, scambiandoli se non sono nellordine corretto –Dopo una scansione in cui non viene effettuato nessuno scambio larray è ordinato Idea: dopo la k-esima scansione, i k elementi più grandi sono correttamente ordinati ed occupano le k posizioni più a destra

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 15 Esempio di esecuzione

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 16 BubbleSort (A) 1. for i=1 to n-1 do 2. for j=2 to n-i+1 do 3. if (A[j-1] > A[j]) then scambia A[j-1] e A[j] 4. if (non ci sono stati scambi) then break dopo la i-esima scansione, gli elementi A[n-i+1],…,A[n] sono correttamente ordinati e sono i più grandi linee 3: mette in posizione j il massimo fra A[j-1] e A[j] i-esima scansione confronta le prime n-i coppie il massimo degli elementi A[1],…,A[n-i+1] è messo in posizione n-i+1

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 17 Correttezza Lemma Dopo li-esima scansione, gli elementi A[n-i+1],…,A[n] sono correttamente ordinati e occupano la loro posizione definitiva, ovvero: per ogni h,k, con 1 h k e n-i+1 k n, risulta A[h] A[k] Dim (Per induzione su i) Caso i=1 Dopo la prima scansione in A[n] cè il massimo Caso i>1 Ipotesi induttiva: A[h] A[k] per ogni h, k con 1 h k e n-i+2 k n Il massimo fra A[1],…,A[n-i+1] è messo in posizione n-i+1 A[h] A[n-i+1] per ogni h n-i+1

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 18 Complessità n-i confronti e al più n-i scambi T(n) = (n-i) = (n 2 ) i=1 n-1 Complessità nel caso migliore? T best (n)= (n) BubbleSort (A) 1. for i=1 to n-1 do 2. for j=2 to n-i+1 do 3. if (A[j-1] > A[j]) then scambia A[j-1] e A[j] 4. if (non ci sono stati scambi) then break (quando larray è già ordinato)