La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Capitolo 4 Ordinamento: lower bound (n log n) e MergeSort Algoritmi e Strutture Dati.

Presentazioni simili


Presentazione sul tema: "Capitolo 4 Ordinamento: lower bound (n log n) e MergeSort Algoritmi e Strutture Dati."— Transcript della presentazione:

1 Capitolo 4 Ordinamento: lower bound (n log n) e MergeSort Algoritmi e Strutture Dati

2 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 2 Stato dellarte Insertion Sort 2 Insertion Sort 1 Θ(n) Caso migliore T(n) Selection Sort Θ(n 2 ) Caso medio Θ(n 2 ) Caso peggiore Θ(n 2 ) O(n 2 ) S(n) Θ(n) Bubble-Sort Θ(n 2 ) Θ(n)

3 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 3 Delimitazioni superiori (upper bound) Definizione (complessità di un algoritmo) Un algoritmo A ha costo di esecuzione O(g(n)) su istanze di dimensione n e rispetto ad una certa risorsa di calcolo (spazio o tempo), se la quantità f(n) di risorsa sufficiente per eseguire A su qualunque istanza di dimensione n (e quindi in particolare anche nel caso peggiore) verifica la relazione f(n)=O(g(n)). Definizione (upper bound di un problema) Un problema P ha una delimitazione superiore alla complessità O(g(n)) rispetto ad una certa risorsa di calcolo (spazio o tempo) se esiste un algoritmo che risolve P il cui costo di esecuzione rispetto a quella risorsa è O(g(n)).

4 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 4 Delimitazioni inferiori (lower bound) Definizione Un algoritmo A ha costo di esecuzione (g(n)) su istanze di dimensione n e rispetto ad una certa risorsa di calcolo (spazio o tempo), se la quantità f(n) di risorsa 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 f worst (n)= (g(n)). Definizione (lower bound o complessità intrinseca di un problema) Un problema P ha una delimitazione inferiore alla complessità (g(n)) rispetto ad una certa risorsa di calcolo (spazio o tempo) se ogni algoritmo che risolve P ha costo di esecuzione (g(n)) rispetto a quella risorsa.

5 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 5 Ottimalità di un algoritmo Definizione Dato un problema P con complessità intrinseca (g(n)) rispetto ad una certa risorsa di calcolo (spazio o tempo), un algoritmo che risolve P è ottimo (in termini di complessità asintotica, ovvero a meno di costanti moltiplicative e di termini additivi/sottrattivi di magnitudine inferiore) se ha costo di esecuzione O(g(n)) rispetto a quella risorsa.

6 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 6 Convenzioni 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). Se scriverò che un algoritmo ha complessità T(n)=Θ(f(n)), intenderò che su TUTTE le istanze costerà Θ(f(n)) (esempio, il SS) 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.

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

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

9 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 9 Consideriamo un generico algoritmo A, che ordina eseguendo solo confronti: dimostreremo che A esegue (nel caso peggiore) (n log n) confronti Un generico algoritmo di ordinamento per confronti 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. Un algoritmo di ordinamento per confronti può essere descritto in modo astratto usando un albero di decisione, nel quale i nodi interni rappresentano i confronti, mentre le foglie rappresentano gli output prodotti Lower bound (n log n) per lordinamento

10 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Descrive le diverse sequenze di confronti che A esegue su unistanza di lunghezza n; i movimenti dei dati e tutti gli altri aspetti dellalgoritmo vengono ignorati Nodo interno (non foglia): i:j (modella il confronto tra a i e a j ) Nodo foglia: i 1,i 2,…,i n (modella una risposta (output) dellalgoritmo, ovvero una permutazione degli elementi) Lalbero di decisione è associato ad un algoritmo e alla dimensione n dellistanza Albero di decisione

11 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 11 Esempio Input Riconoscete lalgoritmo associato? È proprio lInsertion Sort 2! Esercizio per casa: costruire lalbero di decisione per il SS su una sequenza di 3 elementi.

12 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 12 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 (ovvero alla lunghezza, in termini di numero di archi, del più lungo cammino radice-foglia) Proprietà

13 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 13 Lemma: Un albero strettamente binario (ovvero, in cui ogni nodo interno ha esattamente due figli) con k foglie ha altezza h(k) log 2 k. Dim: Dimostrazione per induzione su k: –Caso base k=1 (albero-nodo ): 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, 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

14 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 14 Consideriamo lalbero di decisione di un qualsiasi algoritmo che risolve il problema dellordinamento di n elementi Tale albero deve avere almeno n! foglie: infatti, se lalgoritmo è corretto, deve contemplare tutti i possibili output, ovvero le n! permutazioni della sequenza di n elementi in input Dal lemma precedente, avremo che laltezza h(n) dellalbero di decisione sarà: Il lower bound (n log n) h(n) log 2 (#foglie) 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 =

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

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

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

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

19 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 19 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) (si noti che vale anche C(n)=Ω(min{n 1,n 2 })) Numero di operazioni (confronti + copie)? T(n)= (n 1 + n 2 ) Costo dellalgoritmo di merge

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

21 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 21 Il numero di confronti del MergeSort è descritto dalla seguente relazione di ricorrenza: C(n) 2 C(n/2) + Θ(n) C(1)=0 (si noti che f(n)=Θ(n), in quanto il numero di confronti nelle fusioni è ovviamente C(n)=O(n), ma 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 ) Θ(n log b a )), si ottiene C(n) = O(n log 2 2 log n) = O(n log n) (si noti che utilizzo la notazione O in quanto nella relazione di ricorrenza compare il simbolo ) Infine, per il tempo di esecuzione totale (confronti + copie), si ha: T(n) = 2 T(n/2) + Θ(n) T(1)=1 T(n) = Θ(n log n) (si noti che in questo caso utilizzo la notazione Θ in quanto nella relazione di ricorrenza compare il simbolo =) Tempo di esecuzione

22 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Più precisamente… 1.Nel caso peggiore, il MS esegue (n log n - 2 log n + 1) confronti, che corrisponde ad un numero compreso tra (n log n - n + 1) e (n log n + n + O(log n)) 2.Nel caso medio, il MS esegue (n log n - 2 log n + 1) – ·n confronti 3.Nel caso migliore (array già ordinato), il MS esegue n-1 confronti

23 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, e utilizza memoria ausiliaria (loccupazione di memoria finale è pari a 2n)


Scaricare ppt "Capitolo 4 Ordinamento: lower bound (n log n) e MergeSort Algoritmi e Strutture Dati."

Presentazioni simili


Annunci Google