Algoritmi e Strutture Dati Capitolo 4 Ordinamento Copyright

  • Slides: 14
Download presentation
Algoritmi e Strutture Dati Capitolo 4 Ordinamento Copyright © 2004 - The Mc. Graw

Algoritmi e Strutture Dati Capitolo 4 Ordinamento Copyright © 2004 - The Mc. Graw - Hill Companies, srl

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Lower bound •

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Lower bound • Delimitazione inferiore alla quantità di una certa risorsa di calcolo necessaria per risolvere un problema • (n log n) è un lower bound al numero di confronti richiesti per ordinare n oggetti • Consideriamo un generico algoritmo A, che ordina eseguendo solo confronti: dimostreremo che A esegue (nel caso peggiore) (n log n) confronti 2 Copyright © 2004 - The Mc. Graw - Hill Companies, srl

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano …alcuni richiami… Definizione

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano …alcuni richiami… Definizione (upper bound) Un problema P ha una complessità O(f(n)) rispetto ad una risorsa di calcolo se esiste un algoritmo che risolve P il cui costo di esecuzione rispetto quella risorsa (nel caso peggiore) è O(f(n)) Definizione (lower boud) Un problema P ha una complessità (f(n)) rispetto ad una risorsa di calcolo se ogni algoritmo che risolve P ha costo di esecuzione (nel caso peggiore) (f(n)) rispetto quella risorsa 3 Copyright © 2004 - The Mc. Graw - Hill Companies, srl

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano …per il problema

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano …per il problema dell’ordinamento… • Upper bound: O(n 2) – Insertion Sort, Selection Sort, Quick Sort • Un upper bound migliore: O(n log n) – Merge Sort • Lower bound: (n) – banale: dimensione dell’input Abbiamo un gap di log n tra upper bound e lower bound! Possiamo fare meglio? 4 Copyright © 2004 - The Mc. Graw - Hill Companies, srl

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Ordinamento per confronti

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Ordinamento per confronti Dati due elementi ai ed aj, per determinarne l’ordinamento relativo effettuiamo una delle seguenti operazioni di confronto: ai aj ; ai aj 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. 5 Copyright © 2004 - The Mc. Graw - Hill Companies, srl

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Gli algoritmi di

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano 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 ai ed aj (ad esempio effettua il test ai aj); - A seconda del risultato – riordina e/o decide il confronto successivo da eseguire. Albero di decisione - Descrive i confronti che l’algoritmo esegue quando opera su un input di una determinata dimensione. I movimenti dei dati e tutti gli altri aspetti dell’algoritmo vengono ignorati 6 Copyright © 2004 - The Mc. Graw - Hill Companies, srl

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Alberi di decisione

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano 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 ai e aj • Nodo foglia: – modella una risposta (output) dell’algoritmo: permutazione degli elementi Input: a 1, a 2, a 3 7 Copyright © 2004 - The Mc. Graw - Hill Companies, srl

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Osservazioni • L’albero

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Osservazioni • L’albero di decisione non è associato ad un problema • L’albero di decisione non è associato solo ad un algoritmo • L’albero di decisione è associato ad un algoritmo e a una dimensione dell’istanza • L’albero di decisione descrive le diverse sequenze di confronti che un certo algoritmo può eseguire su istanze di una certa dimensione 8 Copyright © 2004 - The Mc. Graw - Hill Companies, srl

Algoritmi e strutture dati Nonsense. Sort (A) Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

Algoritmi e strutture dati Nonsense. Sort (A) Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esempio if n 3 then 1. 2. if A[1]>A[n] then 3. scambia A[1] con A[n] 4. scambia A[2] con A[n] 5. Albero di decisione di Nonsense. Sort con n > 2 else 1: n 6. scambia A[1] con A[2] 7. if A[1] > A[n] then 8. scambia A[1] con A[2] n, 1, 3, …, n-1, 2 2: n > 2, 1, 3, …, n 9 > 1, 2, 3, …, n Copyright © 2004 - The Mc. Graw - Hill Companies, srl

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano …alcune definizioni… Sotto-albero

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano …alcune definizioni… Sotto-albero sinistro radice Sotto-albero destro Profondità di un nodo: lunghezza del cammino che lo congiunge alla radice. Altezza di un albero: valore massimo della profondità dei nodi. 10 Copyright © 2004 - The Mc. Graw - Hill Companies, srl

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Proprietà • Per

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Proprietà • Per una particolare istanza, i confronti eseguiti da A su quella istanza rappresentano un cammino radice – foglia • L’algoritmo segue un cammino diverso a seconda delle caratteristiche dell’input – Caso peggiore: cammino più lungo – Caso migliore: cammino più breve • Il numero di confronti nel caso peggiore è pari all’altezza dell’albero di decisione • Un albero di decisione di un algoritmo che risolve il problema dell’ordinamento di n elementi contiene almeno n! foglie 11 Copyright © 2004 - The Mc. Graw - Hill Companies, srl

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Altezza in funzione

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Altezza in funzione delle foglie • Un albero binario con k foglie tale che ogni nodo interno ha esattamente due figli ha altezza almeno log 2 k • Dimostrazione per induzione su k 12 Copyright © 2004 - The Mc. Graw - Hill Companies, srl

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Il lower bound

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Il lower bound W(n log n) • Consideriamo l’albero di decisione di un qualsiasi algoritmo che risolve il problema dell’ordinamento di n elementi • L’altezza h dell’albero di decisione è almeno log 2 (n!) • Formula di Stirling: n! (2 pn)1/2 ·(n/e)n h log 2(n!) > log 2 (n/e)n = n! > (n/e)n = n log 2 (n/e) = = n log 2 n – n log 2 e = = (n log n) 13 Copyright © 2004 - The Mc. Graw - Hill Companies, srl

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esercizio Fornire l’albero

Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Esercizio Fornire l’albero di decisione del seguente algoritmo per istanze di dimensione 3. Insertion. Sort 2 (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 14 Copyright © 2004 - The Mc. Graw - Hill Companies, srl