Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort 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
Algoritmi e Strutture Dati
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 Ordinamenti lineari.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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.
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 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.
Capitolo 8 Code con priorità Algoritmi e Strutture Dati.
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.
Capitolo 8 Code con priorità 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 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:
Algoritmi e strutture Dati - Lezione 7
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 Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 8 Code con.
Capitolo 4 Ordinamento: Selection e Insertion Sort 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 Capitolo 6 Il problema.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Usa la tecnica del.
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.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
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:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 8 Code con.
Algoritmi e strutture Dati - Lezione 7 1 Algoritmi di ordinamento ottimali L’algoritmo Merge-Sort ha complessità O(n log(n))  Algoritmo di ordinamento.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
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:
Capitolo 8 Code con priorità Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Soluzione esercizio.
Il problema della ricerca Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Progettare algoritmi.
Capitolo 6 Il problema del dizionario Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento: lower bound Ω(n log n) e MergeSort ((*) l’intera lezione) Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Capitolo 6 Alberi di ricerca Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Capitolo 8 Code con priorità Algoritmi e Strutture Dati.
Progettare algoritmi veloci usando strutture dati efficienti
Algoritmi e Strutture Dati
Progettare algoritmi veloci usando strutture dati efficienti
Progettare algoritmi veloci usando strutture dati efficienti
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
Transcript della presentazione:

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 2 Punto della situazione Problema dell’ordinamento: –Lower bound –  (n log n) Albero di decisione –Upper bound – O(n log n) Mergesort (non in loco) –Algoritmi quadratici Insertion, Selection (in loco) Proviamo a costruire un nuovo algoritmo ottimo, che ordini in loco

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 3 Stesso approccio incrementale (invertito) del SelectionSort –seleziona gli elementi dal più grande al più piccolo –usa una struttura dati efficiente (heap binario): estrazione in tempo O(log n) del massimo Tipo di dato –Specifica una collezione di oggetti e le operazioni di interesse su tale collezione (es. inserisci, cancella, cerca) Struttura dati –Organizzazione dei dati che permette di memorizzare la collezione e supportare le operazioni usando meno risorse di calcolo possibile Obiettivo: progettare una struttura dati H su cui eseguire efficientemente le operazioni: –dato un array A, generare velocemente H –trovare il più grande oggetto in H –estrarre il più grande oggetto da H HeapSort

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 4 Alberi: qualche altra definizione d=2  albero binario albero d-ario: albero in cui tutti i nodi interni hanno (al più) d figli Un albero d-ario è completo se tutti nodi interni hanno esattamente d figli e le foglie sono tutte allo stesso livello

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 5 Struttura dati heap (catasta) binario associata ad un insieme S: albero binario radicato con le seguenti proprietà: 1) completo fino al penultimo livello (struttura rafforzata: foglie sull’ultimo livello tutte compattate a sinistra) 2) gli elementi di S sono memorizzati nei nodi dell’albero (ogni nodo v memorizza uno e un solo elemento, denotato con chiave(v)) 3) chiave(padre(v)) ≥ chiave(v) per ogni nodo v (proprietà di ordinamento parziale dell’heap) Heap Binario

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl In questa direzione è presente un ordinamento In questa direzione non è presente un ordinamento …un esempio il massimo è contenuto nella radice!

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 7 Proprietà salienti degli heap 1)Il massimo è contenuto nella radice 2)ogni nodo interno contiene un valore maggiore o uguale del valore contenuto in tutti i suoi discendenti. 3)L’albero ha altezza  (log n) 4)Gli heap con struttura rafforzata possono essere rappresentati in un array di dimensione pari a n

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 8 Osservazione La struttura dati presentata è più propriamente denominata max-heap, per via del fatto che il massimo è contenuto nella radice In alcuni contesti, avrà più senso definire la struttura duale min-heap, in cui la relazione di ordine parziale diventa: chiave(padre(v)) ≤ chiave(v) per ogni nodo v e conseguentemente la radice conterrà il minimo.

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 9 Altezza di un heap binario h = altezza albero binario Se l’albero è completo: n = … + 2 h = =2 h · ((1/2) h + (1/2) h-1 + … +(1/2)+ 1)= =2 h · [1-(1/2) h+1 ]/(1-1/2) = 2 h · (2-(1/2) h ) = 2 h+1 –1  log n=log(2 h+1 –1)  h =  (log n) Se l’albero è quasi completo: 2 h -1 < n < 2 h+1 –1  h =  (log n)

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 10 è sufficiente un vettore di dimensione n Rappresentazione con array posizionale sin(i) = 2i des(i) = 2i+1 padre(i)=  i/2  in generale dimensione vettore diverso da numero elementi nello pseudocodice numero oggetti indicato con heapsize[A]

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 11 fixHeap(nodo v, heap H) if (v è una foglia) then return else sia u il figlio di v con chiave massima if ( chiave(v) < chiave(u) ) then scambia chiave(v) e chiave(u) fixHeap(u,H) La procedura fixHeap Se tutti i nodi di H tranne v soddisfano la proprietà di ordinamento parziale dell’heap, possiamo ripristinarla come segue: Tempo di esecuzione:  h  O(log n)

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 12 FixHeap - esempio i= i=

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 13 fixHeap (i,A) 1. s=sin(i) 2. d=des(i) 3. if (s  heapsize[A] e A[s] >A[i]) 4. then massimo=s 5. else massimo=i 6. if (d  heapsize[A] e A[d] >A[massimo]) 7. then massimo=d 8. if (massimo  i) 9. then scambia A[i] e A[massimo] 10. fixHeap(massimo,A) …uno pseudocodice di fixHeap più dettagliato

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 14 Copia nella radice la chiave contenuta nella foglia più a destra dell’ultimo livello –nota: è l’elemento in posizione n (n: dimensione heap) Rimuovi la foglia Ripristina la proprietà di ordinamento a heap richiamando fixHeap sulla radice Estrazione del massimo Tempo di esecuzione: O(log n)

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 15 heapify(heap H) if (H è vuoto) then return else heapify(sottoalbero sinistro di H) heapify(sottoalbero destro di H) fixHeap(radice di H,H) Costruzione dell’heap Algoritmo ricorsivo basato sul divide et impera

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 16 Complessità heapify Tempo di esecuzione: T(n')= 2T(n'/2)+O(log n') T(n') =  (n') (caso 1 del Teorema Master: Sia n'  n l’intero tale che un heap con n' elementi ha 1. altezza h 2. è completo fino all’ultimo livello Sia h l’altezza di un heap con n elementi Vale: T(n)  T(n') e n'  2n Quindi: T(n)  T(n') =  (n')=  (2n)=  (n) se f(n)=O(n ) per  >0, allora T(n) =  (n ) log b a log b a - 

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 17 Costruisce un heap tramite heapify Estrae ripetutamente il massimo per n-1 volte –ad ogni estrazione memorizza il massimo nella posizione dell’array che si è appena liberata L’algoritmo HeapSort

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 18 heapSort (A) 1. Heapify(A) 2. Heapsize[A]=n 3. for i=n down to 2 do 4. scambia A[1] e A[i] 5. Heapsize[A] = Heapsize[A] fixHeap(1,A) ordina in loco in tempo O(n log n)  (n) n-1 estrazioni di costo O(log n)

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 19 Esempio i= Input: A= Heapify(A)  A 0 = Scambia(A[1],A[n])

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl i= Heap-size = Heap-size i= FixHeap(A,1)

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl i= Scambia(A[1],A[n-1]) i= Heap-size = Heap-size -1 14

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl i= FixHeap(A,1) 14 E cosi via ……