La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algoritmi e Strutture Dati

Presentazioni simili


Presentazione sul tema: "Algoritmi e Strutture Dati"— Transcript della presentazione:

1 Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano

2 Lower bound Delimitazione inferiore alla quantità di una certa risorsa di calcolo necessaria per risolvere un problema W(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 W(n log n) confronti Copyright © The McGraw - Hill Companies, srl

3 …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 Copyright © The McGraw - Hill Companies, srl

4 …per il problema dell’ordinamento…
Upper bound: O(n2) Insertio Sort, Selection Sort, Boubble Sort Lower bound: (n) banale: dimensione dell’input Abbiamo un gap lineare tra upper bound e lower bound! Possiamo fare meglio? Copyright © The McGraw - Hill Companies, srl

5 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 ; ai  aj ; 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. Copyright © The McGraw - Hill Companies, srl

6 Confronta due elementi ai ed aj (ad esempio effettua il test ai  aj);
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 Copyright © The McGraw - Hill Companies, srl

7 Alberi di decisione Descrive le diverse sequenze di confronti che A potrebbe fare su istanze di lunghezza n Copyright © The McGraw - Hill Companies, srl

8 …alcune definizioni… radice Sotto-albero sinistro 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. Copyright © The McGraw - Hill Companies, srl

9 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 per l’ordinamento di n elementi contiene almeno n! foglie Copyright © The McGraw - Hill Companies, srl

10 Altezza in funzione delle foglie
Un albero binario con k foglie tale che ogni nodo interno ha esattamente due figli ha altezza almeno log2 k Dimostrazione per induzione su k Copyright © The McGraw - Hill Companies, srl

11 Il lower bound W(n log n)
L’altezza h dell’albero di decisione è almeno log2 (n!) Formula di Stirling: n!  (2pn)1/2 ·(n/e)n h  log2(n!) > log2 (n/e)n = = n log2 (n/e) = n! > (n/e)n = n log2 n – n log2 e = = W(n log n) Copyright © The McGraw - Hill Companies, srl

12 Esercizio Fornire l’albero di decisione del seguente algoritmo per istanze di dimensione 3.
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 Copyright © The McGraw - Hill Companies, srl

13 Soluzione           a1:a2 a2:a3 a1:a3 <a1,a2,a3> a1:a3
Copyright © The McGraw - Hill Companies, srl


Scaricare ppt "Algoritmi e Strutture Dati"

Presentazioni simili


Annunci Google