Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 1 Usa la tecnica del.

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Il problema della ricerca Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
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.
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.
Capitolo 1 Unintroduzione informale agli algoritmi 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.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
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.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
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.
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 Stesso approccio.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
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 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 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.
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.
Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
Algoritmi e Strutture Dati
Teoria degli algoritmi e della computabilità Terza giornata: Ricerca e ordinamento ottimi. P vs NP, algoritmi di approssimazione, e il potere della randomizzazione.
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 8 Code con priorità Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Il problema della ricerca 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:
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 1 Progettare algoritmi.
Capitolo 4 Ordinamento: lower bound Ω(n log n) e MergeSort ((*) l’intera lezione) Algoritmi e Strutture Dati.
MergeSort Usa la tecnica del divide et impera:
Transcript della presentazione:

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del divide et impera: 1 Divide: dividi larray a metà 2 Risolvi i due sottoproblemi ricorsivamente 3 Impera: fondi le due sottosequenze ordinate MergeSort

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 2 Esempio di esecuzione Input ed output delle chiamate ricorsive

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 3 Due array ordinati A e B possono essere fusi rapidamente: –estrai ripetutamente il minimo di A e B e copialo nellarray di output, finché A oppure B non diventa vuoto –copia gli elementi dellarray non vuoto alla fine dellarray di output Procedura Merge Notazione: dato un array A e due indici x y, denotiamo con A[x;y] la porzione di A costituita da A[x], A[x+1],…,A[y]

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 4 Merge (A, i 1, f 1, f 2 ) 1. Sia X un array ausiliario di lunghezza f 2 -i i=1 3. i 2 =f while (i 1 f 1 e i 2 f 2 ) do 5. if (A[i 1 ] A[i 2 ]) 6. then X[i]=A[i 1 ] 7. incrementa i e i 1 8. else X[i]=A[i 2 ] 9. incrementa i e i if (i 1 <f 1 ) then copia A[i 1 ;f 1 ] alla fine di X 11. else copia A[i 2 ;f 2 ] alla fine di X 12. copia X in A[i 1 ;f 2 ] fonde A[i 1 ;f 1 ] e A[f 1 +1;f 2 ] output in A[i 1 ;f 2 ] Osservazione: sto usando un array ausiliario

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 5 Lemma La procedure Merge fonde due sequenze ordinate di lunghezza n 1 e n 2 eseguendo al più n 1 + n 2 -1 confronti dim Ogni confronto consuma un elemento di A. Nel caso peggiore tutti gli elementi tranne lultimo sono aggiunti alla sequenza X tramite un confronto. Il numero totale di elementi è n 1 + n 2. Quindi il numero totale di confronti è n 1 + n numero di confronti nel caso peggiore è (n 1 + n 2 ) Il numero di operazioni (confronti + copie)? (n 1 + n 2 )

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 6 MergeSort (A, i, f) 1. if (i f) then return 2. m = (i+f)/2 3. MergeSort(A,i,m) 4. MergeSort(A,m+1,f) 5. Merge(A,i,m,f)

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 7 Il numero di confronti del MergeSort è descritto dalla seguente relazione di ricorrenza: C(n) = 2 C(n/2) + O(n) Usando il Teorema Master si ottiene C(n) = O(n log n) Tempo di esecuzione a=b=2, f(n)=O(n) caso 2

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 8 …alcune osservazioni… La complessità temporale del MergeSort misurata come numero di operazioni (confronti + copie) o come numero di passi elementari è sempre O(n log n) Il MergeSort non ordina in loco –occupazione di memoria ausiliaria (oltre input) pari a O(n)

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 9 Usa la tecnica del divide et impera: 1 Divide: scegli un elemento x della sequenza (perno) e partiziona la sequenza in elementi x ed elementi >x 2 Risolvi i due sottoproblemi ricorsivamente 3 Impera: restituisci la concatenazione delle due sottosequenze ordinate QuickSort Rispetto al MergeSort, divide complesso ed impera semplice

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 10 QuickSort (A) 1. scegli elemento x in A 2. partiziona A rispetto a x calcolando: 3. A 1 ={y A : y x} 4. A 2 ={y A : y > x} 5. if (|A 1 | > 1) then QuickSort(A 1 ) 6. if (|A 2 | > 1) then QuickSort(A 2 ) 7. copia la concatenazione di A 1 e A 2 in A non partiziona in loco!

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 11 Partizione in loco Scorri larray in parallelo da sinistra verso destra e da destra verso sinistra –da sinistra verso destra, ci si ferma su un elemento maggiore del perno –da destra verso sinistra, ci si ferma su un elemento minore del perno Scambia gli elementi e riprendi la scansione

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 12 Partizione in loco: un esempio perno

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 13 Partition (A, i, f ) 1. x=A[i] 2. inf =i 3. sup= f while (true) do 5. do (inf=inf + 1) while (A[inf] x) 6. do (sup=sup-1) while (A[sup] > x) 7. if (inf < sup) then scambia A[inf] e A[sup] 8. else break 9. scambia A[i] e A[sup] 10. return sup Tempo di esecuzione: O(n) partiziona A[i;f] rispetto a A[i] Proprietà: In ogni istante, gli elementi A[i],…,A[inf-1] sono del perno, mentre gli elementi A[sup+1],…,A[f] sono > del perno mette il perno al centro restituisce lindice del centro

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 14 QuickSort (A, i, f ) 1. if (i f) then return 2. m=Partition(A,i,f) 3.QuickSort(A,i,m-1) 4.QuickSort(A, m +1,f)

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 15 Esempio di esecuzione Lalbero delle chiamate ricorsive può essere sbilanciato

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 16 Nel caso peggiore, il perno scelto ad ogni passo è il minimo o il massimo degli elementi nellarray Il numero di confronti è pertanto: C(n)=C(n-1) + C(0) + O(n) =C(n-1)+O(1)+O(n) =C(n-1)+O(n) Svolgendo per iterazione si ottiene C(n) = O(n 2 ) Analisi nel caso peggiore complessità nel caso migliore?

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 17 Caso migliore: O(n log n), partizionamento sempre bilanciato Totale: cn log n

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 18 …intuizioni sul caso medio… problema: la partizione può essere sbilanciata la probabilità che ad ogni passo si presenti la partizione peggiore è molto bassa per partizioni che non sono troppo sbilanciate lalgoritmo è veloce domanda: quale è la complessità dellalgoritmo supponendo che lalgoritmo di partizionamento produca sempre una partizione proporzionale 9-a-1? E se la partizione fosse sempre proporzionale a 99-a-1? Nota: sembrano partizioni piuttosto sbilanciate…

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 19 …la complessità è ancora O(n log n)

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 20 Teorema Lalgoritmo quickSort randomizzato ordina in loco un array di lunghezza n eseguendo O(n 2 ) confronti nel caso peggiore e O(n log n) confronti attesi Idea: scegli il perno x a caso fra gli elementi da ordinare

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 21 quickSort randomizzato Complessità temporale non dipende dallordine dellinput nessuna assunzione sulla distribuzione di probabilità delle istanze nessun input specifico per il quale si verifica il caso peggiore il caso peggiore determinato solo dal generatore di numeri casuali

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 22 analisi Assunzioni: –scelte casuali del perno indipendenti –insieme di elementi distinti (semplifica lanalisi, ma non necessaria) T(n): variabile aleatoria (v.a.) per tempo di esecuzione dellalgoritmo con input di dimensione n vogliamo stimare E[T(n)]

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 23 analisi Per ogni k=0,1,…,n-1, definiamo la v.a. Xk=Xk= 1 0 se partition genera una partizione k,n-k-1 altrimenti E[X k ]= 0 Pr{X k =0}+1 Pr{X k =1}= 1/n

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 24 analisi T(n)= T(0)+T(n-1)+O(n) se ho partizione (0,n-1) se ho partizione (1,n-2) se ho partizione (n-1,0) T(1)+T(n-2)+O(n) T(n-1)+T(0)+O(n)..... T(n)= X k (T(k)+T(n-k-1)+O(n)) k=0 n-1

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 25 analisi E[T(n)]= 2/n E[T(k)] + O(n) k=0 n-1 si dimostra con il metodo della sostituzione che E[T(n)] a n log n usando la proprietà: si fa vedere che: k log k 1/2 n 2 log n – 1/8 n 2 k=2 n-1