La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Capitolo 4 Ordinamento Algoritmi e Strutture Dati.

Presentazioni simili


Presentazione sul tema: "Capitolo 4 Ordinamento Algoritmi e Strutture Dati."— Transcript della presentazione:

1 Capitolo 4 Ordinamento Algoritmi e Strutture Dati

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

3 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati 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

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

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

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

7 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati 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 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

8 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 8 Osservazioni Lalbero di decisione non è associato ad un problema Lalbero di decisione non è associato solo ad un algoritmo 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

9 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 9 Esempio NonsenseSort (A) 1. if n 3 then 2. if A[1]>A[n] then 3. scambia A[1] con A[n] 4. scambia A[2] con A[n] 5. else 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,1,3,…,n 1,2,3,…,n 1: n 2: n > > Albero di decisione di NonsenseSort con n > 2

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

11 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 11 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 Un albero di decisione di un algoritmo che risolve il problema dellordinamento di n elementi contiene almeno n! foglie Proprietà

12 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 12 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 Altezza in funzione delle foglie

13 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 13 Consideriamo lalbero di decisione di un qualsiasi algoritmo che risolve il problema dellordinamento di n elementi Laltezza h dellalbero di decisione è almeno log 2 (n!) Formula di Stirling: n! (2 n) 1/2 ·(n/e) n Il lower bound (n log n) h log 2 (n!) 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) =

14 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 14 Esercizio Fornire lalbero di decisione del seguente algoritmo per istanze di dimensione 3. InsertionSort2 (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

15 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 15 a1:a2 a2:a3a1:a3 a2:a3 a1:a3 Soluzione


Scaricare ppt "Capitolo 4 Ordinamento Algoritmi e Strutture Dati."

Presentazioni simili


Annunci Google