Capitolo 4 Ordinamento Algoritmi e Strutture Dati.

Slides:



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

Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
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.
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.
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 Copyright © The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.
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 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 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 6 Il problema.
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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Alberi AVL (Adelson-Velskii.
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 Alberi AVL (Adelson-Velskii.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
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.
Didattica dei Fondamenti dell’Informatica 2 Seconda giornata: progettare un algoritmo corretto, efficiente, e possibilmente ottimo! Guido Proietti
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.
Algoritmi e Strutture Dati Luciano Gualà
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 Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
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:
1 Ordinamento (Sorting) INPUT: Sequenza di n numeri OUTPUT: Permutazione π = tale che a 1 ’  a 2 ’  … …  a n ’ Continuiamo a discutere il problema dell’ordinamento:
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 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 1 Soluzione esercizio.
1 Ordinamento (Sorting) Input: Sequenza di n numeri Output: Permutazione π = tale che: a i 1  a i 2  ……  a i n Continuiamo a discutere il problema dell’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.
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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Capitolo 1 Un’introduzione.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Algoritmi e Strutture Dati
Transcript della presentazione:

Capitolo 4 Ordinamento Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 2 Richiamo: Delimitazione superiore alla complessità computazionale (temporale) di un algoritmo Ricorda: Un algoritmo A ha tempo di esecuzione T(n)=O(f(n)) su istanze di dimensione n se la quantità T(n) di tempo sufficiente per eseguire A su ogni istanza di dimensione n (e quindi in particolare anche nel caso peggiore) verifica la relazione T(n)=O(f(n)) Se scriverò che un algoritmo ha complessità T(n) = O(f(n)), intenderò che per ogni istanza più di quello non posso spendere.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 3 Ricorda: Un algoritmo A ha tempo di esecuzione T(n)= (f(n)) su istanze di dimensione n se la quantità di tempo necessaria per eseguire A nel caso peggiore (e quindi non è detto che debba essere necessaria per ogni istanza di dimensione n: istanze facili potrebbero richiedere meno risorse!) verifica la relazione T worst (n)= (f(n)) Convenzioni: 1.Se scriverò che un algoritmo ha complessità T(n) = O(f(n)), intenderò che su ALCUNE istanze costerà Θ(f(n)), ma sulle rimanenti costerà o(f(n) (esempio, lIS). 2.Se scriverò che un algoritmo ha complessità T(n)=Θ(f(n)), intenderò che su TUTTE le istanze costerà Θ(f(n)) (esempio, il SS) Richiamo: Delimitazione inferiore alla complessità computazionale (temporale) di un algoritmo

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 4 Ricorda: (upper bound di un problema) Un problema P ha una delimitazione superiore alla complessità temporale O(f(n)) se esiste un algoritmo che risolve P il cui tempo di esecuzione è O(f(n)) Ricorda: (lower bound di un problema) Un problema P ha una delimitazione inferiore alla complessità temporale (complessità intrinseca) (f(n)) se ogni algoritmo (anche quelli non ancora progettati!) che risolverà P avrà almeno unistanza con tempo di esecuzione (f(n)) Richiamo: Complessità computazionale di un problema

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 5 Convenzione Da ora in poi, quando parlerò di UB di un problema, mi riferirò alla complessità del MIGLIORE ALGORITMO che sono stato in grado di progettare sino a quel momento (ovvero, quello con minore complessità nel caso peggiore). Da ora in poi, quando parlerò di LB di un problema, mi riferirò alla PIÙ GRANDE delimitazione inferiore che sono stato in grado di dimostrare sino a quel momento.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 6 Quindi, per il problema dellordinamento… Upper bound temporale: O(n 2 ) –Insertion Sort, Selection Sort Lower bound temporale: (n) –banale: dimensione dellinput Abbiamo un gap lineare tra upper bound e lower bound! Possiamo fare meglio?

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 7 Ordinamento per confronti Dati due elementi a i ed a j, per determinarne lordinamento relativo effettuiamo una delle seguenti operazioni di confronto: a i a j ; a i a j ; a i a j ; a i a j ; a i a j Non si possono esaminare i valori degli elementi o ottenere informazioni sul loro ordine in altro modo. Notare: Tutti gli algoritmi di ordinamento considerati fino ad ora sono algoritmi di ordinamento per confronto.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 8 Consideriamo un generico algoritmo A, che ordina eseguendo solo confronti: dimostreremo che A esegue (nel caso peggiore) (n log n) confronti Lower bound (n log n) per lordinamento

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 9 Gli algoritmi di ordinamento per confronto possono essere descritti in modo astratto in termini di alberi di decisione. Un generico algoritmo di ordinamento per confronto lavora nel modo seguente: - Confronta due elementi a i ed a j (ad esempio effettua il test a i a j ); - A seconda del risultato – riordina e/o decide il confronto successivo da eseguire. Albero di decisione - Descrive i confronti che lalgoritmo esegue quando opera su un input di una determinata dimensione. I movimenti dei dati e tutti gli altri aspetti dellalgoritmo vengono ignorati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 10 Alberi di decisione Descrive le diverse sequenze di confronti che A potrebbe fare su istanze di lunghezza n Nodo interno (non foglia): i:j –modella il confronto tra a i e a j Nodo foglia: –modella una risposta (output) dellalgoritmo: permutazione degli elementi Input: a 1,a 2,a 3 Riconoscete lalgoritmo associato?

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 11 Osservazioni Lalbero di decisione non è associato ad un problema Lalbero di decisione è associato ad un algoritmo e a una dimensione dellistanza Lalbero di decisione descrive le diverse sequenze di confronti che un certo algoritmo può eseguire su istanze di una certa dimensione

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 12 Alcune definizioni radice Sotto-albero sinistro Sotto-albero destro Altezza di un albero: valore massimo della profondità dei nodi. Profondità di un nodo: lunghezza del cammino che lo congiunge alla radice.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 13 Per una particolare istanza, i confronti eseguiti da A su quella istanza rappresentano un cammino radice – foglia Lalgoritmo segue un cammino diverso a seconda delle caratteristiche dellinput –Caso peggiore: cammino più lungo –Caso migliore: cammino più breve Il numero di confronti nel caso peggiore è pari allaltezza dellalbero di decisione Proprietà

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 14 Lemma: Un albero binario con k foglie in cui ogni nodo interno ha esattamente due figli, ha altezza h(k) log 2 k. Dim: Dimostrazione per induzione su k: –Caso base k=1: banale h(k)=0 log 2 1=0 –Caso k>1: supposto vero per k-1 foglie, dimostriamolo per k; poiché la radice ha 2 figli, almeno uno dei due suoi sottoalberi deve contenere almeno la metà (parte intera sup.) delle foglie, e quindi h(k) 1+h( k/2 ) (hp induttiva) 1+log 2 (k/2) =1+log 2 k-log 2 2=log 2 k. QED Altezza in funzione delle foglie

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 15 Consideriamo lalbero di decisione di un qualsiasi algoritmo che risolve il problema dellordinamento di n elementi Laltezza h(n) dellalbero di decisione è almeno log 2 (n!): infatti, se lalgoritmo è corretto, deve contemplare tutti i possibili output, ovvero le n! permutazioni della sequenza di n elementi in input, e quindi deve avere almeno n! foglie Il lower bound (n log n) h(n) log 2 (n!) Formula di Stirling: n! (2 n) 1/2 ·(n/e) n > (n/e) n > log 2 (n/e) n = n log 2 (n/e) = = n log 2 n – n log 2 e = = (n log n) QED =

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 16 Problema dellordinamento: –Lower bound - (n log n) albero di decisione –Upper bound – O(n 2 ) IS,SS Proviamo a costruire un algoritmo ottimo, usando la tecnica del divide et impera: 1 Divide: dividi larray a metà 2 Risolvi il sottoproblema ricorsivamente 3 Impera: fondi le due sottosequenze ordinate Un algoritmo ottimo: il MergeSort

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 17 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 18 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 ancora completamente svuotato alla fine dellarray di output Fusione di sequenze ordinate 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 19 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 Algoritmo di fusione di sequenze ordinate

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 20 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 QED Numero di confronti: C(n=n 1 + n 2 )=O(n 1 + n 2 )=O(n), ma anche C(n)= Ω (min{n 1,n 2 }) Numero di operazioni (confronti + copie)? T(n)= (n 1 + n 2 )

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 21 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 22 Il numero di confronti del MergeSort è descritto dalla seguente relazione di ricorrenza: C(n) = 2 C(n/2) + Θ(n) C(1)=1 (si noti che f(n)=Θ(n), in quanto il numero di confronti nelle fusioni è C(n)=O(n), ed anche C(n)= Ω (min{n 1,n 2 })= Ω (min{n/2, n/2})= Ω (n)) Usando il caso 2 del Teorema Master (infatti a=b=2, e quindi f(n)=Θ(n)=Θ(n log 2 2 )), si ottiene C(n) = Θ(n log 2 2 log n) = Θ(n log n) Infine, per il tempo di esecuzione totale, si ha ancora: T(n) = 2 T(n/2) + Θ(n) T(1)=1 T(n) = Θ(n log n) Tempo di esecuzione

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 23 Osservazioni finali Il MergeSort è un algoritmo (asintoticamente) ottimo rispetto al numero di confronti eseguiti nel caso peggiore Il MergeSort non ordina in loco –occupazione di memoria pari a 2n Esercizio: costruire lalbero di decisione per il SS su una sequenza di 3 elementi.