Algoritmi e Strutture Dati

Slides:



Advertisements
Presentazioni simili
Il problema della ricerca Algoritmi e Strutture Dati.
Advertisements

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
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.
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 Ordinamenti ottimi.
Capitolo 4 Ordinamento 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 4 Ordinamento Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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.
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:
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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 8 Code con.
Il problema della ricerca 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 Boruvka Algoritmi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 8 Code con.
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.
Capitolo 10 Tecniche algoritmiche 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.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Usa la tecnica del.
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à
Introduzione agli algoritmi e strutture dati 2/ed T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein Copyright © 2005 – The McGraw-Hill Companies srl.
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 1 Soluzione esercizio.
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 1 Capitolo 1 Un’introduzione.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Analisi asintotica e Metodi di analisi Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Progettare algoritmi.
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:

Algoritmi e Strutture Dati Capitolo 4 Ordinamento

Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Esempi: ordinare una lista di nomi alfabeticamente, o un insieme di numeri, o un insieme di compiti d’esame in base al cognome dello studente Subroutine in molti problemi E’ possibile effettuare ricerche in array ordinati in tempo O(log n) Copyright © 2004 - The McGraw - Hill Companies, srl

Il problema dell’ordinamento Input: una sequenza di n numeri <a1,a2,…,an> Output: una permutazione (riarrangiamento) <a1’,a2’,…,an’> della sequenza di input tale che a1’ a2’… an’ Copyright © 2004 - The McGraw - Hill Companies, srl

SelectionSort Approccio incrementale: estende l’ordinamento da k a k+1 elementi, scegliendo il minimo degli n-k elementi non ancora ordinati e mettendolo in posizione k+1 Copyright © 2004 - The McGraw - Hill Companies, srl

al generico passo k, A[1],…,A[k] sono già ordinati SelectionSort (A) for k=0 to n-2 do m = k+1 for j=k+2 to n do if (A[j] < A[m]) then m=j 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 è l’indice dell’array in cui si trova il minimo il minimo è messo in posizione k+1 Copyright © 2004 - The McGraw - Hill Companies, srl

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 dell’array Induzione su k: k=0: banale. All’inizio il primo elemento è il minimo. (i) e (ii) banalmente verificate. k>0. All’inizio del passo k i primi k elementi sono ordinati e sono i k elementi più piccoli nell’array (ipotesi induttiva). Allora la tesi segue dal fatto che l’algoritmo seleziona il minimo dai restanti n-k elementi e lo mette in posizione k+1. Infatti: (ii) i k+1 elementi restano i minimi nell’array (i) l’elemento in posizione k+1 non è mai più piccolo dei primi k Copyright © 2004 - The McGraw - Hill Companies, srl

Complessità temporale Come misurarla? Numero confronti Numero operazioni (confronti + spostamenti) Numero passi elementari (darà lo stesso risultato del precedente) Copyright © 2004 - The McGraw - Hill Companies, srl

Complessità T(n) =  (n-k-1)=  k =  (n2) Tbest(n)=  (n2) SelectionSort (A) for k=0 to n-2 do m = k+1 for j=k+2 to n do if (A[j] < A[m]) then m=j scambia A[m] con A[k+1] n-k-1 confronti n-k operazioni uno scambio n-2 n-1 T(n) =  (n-k-1)=  k =  (n2) k=0 k=1 Complessità nel caso migliore? Tbest(n)=  (n2) Copyright © 2004 - The McGraw - Hill Companies, srl

InsertionSort Approccio incrementale: estende l’ordinamento da k a k+1 elementi, posizionando l’elemento (k+1)-esimo nella posizione corretta rispetto ai primi k elementi Copyright © 2004 - The McGraw - Hill Companies, srl

al generico passo k, A[1],…,A[k] sono già ordinati InsertionSort (A) for k=1 to n-1 do x = A[k+1] for j=1 to k+1 do if (A[j] > x) then break if (j < k+1) then for t=k downto j do A[t+1]= A[t] 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 Copyright © 2004 - The McGraw - Hill Companies, srl

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. All’inizio il primo elemento è ordinato k>0. All’inizio del passo k i primi k elementi sono ordinati (ipotesi induttiva). Allora la tesi segue banalmente dalla struttura dell’algoritmo. Copyright © 2004 - The McGraw - Hill Companies, srl

T(n) =  (k+1) =  (n2) Tbest(n)=  (n2) Possiamo fare meglio? InsertionSort (A) for k=1 to n-1 do x = A[k+1] for j=1 to k+1 do if (A[j] > x) then break if (j < k+1) then for t=k downto j do A[t+1]= A[t] A[j]=x al più k+1 confronti k+1 operazioni nessun confronto n-1 T(n) =  (k+1) =  (n2) k=1 Numero di operazioni nel caso migliore? Tbest(n)=  (n2) Possiamo fare meglio? Copyright © 2004 - The McGraw - Hill Companies, srl

Caso migliore Caso peggiore Si verifica quando l’array è già ordinato InsertionSort2 (A) for k=1 to n-1 do x = A[k+1] j = k while j > 0 e A[j] > x do A[j+1] = A[j] j= j-1 A[j+1]=x Caso migliore Si verifica quando l’array è già ordinato Tbest(n)= (n) Caso peggiore array ordinato in ordine decrescente T(n)= (n2) Copyright © 2004 - The McGraw - Hill Companies, srl

Esercizio Dimostrare la correttezza e stimare la complessità temporale nel caso peggiore e nel caso migliore del seguete algoritmo BubbleSort (A) for i=1 to n-1 do scambi= false for j=2 to n-i+1 do if (A[j-1] > A[j]) then scambia A[j-1] e A[j]; scambi=true if (scambi=false) then break Copyright © 2004 - The McGraw - Hill Companies, srl