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

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Il problema della ricerca Algoritmi e Strutture Dati.
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.
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.
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.
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 Copyright © The McGraw - Hill Companies, srl Capitolo 6 Interrogazioni.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 8 Code con.
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 6 Il problema.
Visite di grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) 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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Alberi AVL (Adelson-Velskii.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Rotazioni.
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
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 K 4 è planare? Sì!
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) 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:
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.
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:
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 Capitolo 4 Ordinamento: Heapsort 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 4 Ordinamento: lower bound Ω(n log n) e MergeSort ((*) l’intera lezione) Algoritmi e Strutture Dati.
Progettare algoritmi veloci usando strutture dati efficienti
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 dellordinamento: –Lower bound – (n log n) Albero di decisione –Upper bound – O(n log n) Mergesort (non in loco e complessità Θ(n log n)) –Algoritmi quadratici Insertion, Selection (in loco) Proviamo a costruire un nuovo algoritmo ottimo, che ordini in loco e che costi O(n log n))

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… –… ma usa una struttura dati efficiente (heap binario), per cui lestrazione del massimo avviene in tempo O(log n), invece che O(n) Struttura dati (efficiente) –Organizzazione specifica (e memorizzazione) di una collezione di dati che consente di supportare le operazioni previste su di essi usando meno risorse di calcolo possibile Obiettivo: progettare una struttura dati H su cui eseguire efficientemente le operazioni: –dato un array A, genera H –estrai il più grande oggetto da H –ripristina lorganizzazione specifica dei dati in H (ovvero mantieni invariate le proprietà strutturali di 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) Quasi completo, ovvero completo fino al penultimo livello, con tutte le foglie sullultimo livello compattate a sinistra 2) gli elementi di S sono memorizzati nei nodi dellalbero (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 dellheap) 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)Ogni nodo interno contiene un valore maggiore o uguale del valore contenuto in tutti i suoi discendenti (deriva banalmente dalla proprietà di ordinamento parziale) Lelemento massimo è contenuto nella radice 2)Lalbero binario associato ad un heap di n elementi ha altezza (log 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 Abbiamo già dimostrato che un albero binario con k foglie in cui ogni nodo interno ha esattamente due figli, ha altezza h(k) log k. Adesso vogliamo dimostrare che un albero binario quasi completo di n nodi in cui ogni nodo interno ha esattamente due figli (eccezion fatta per al più un nodo), ha altezza h:= h(n) = (log n) Ma se lalbero è 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 Quindi, se lalbero è quasi completo: 2 h -1 < n < 2 h+1 –1 h = log n 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] (che può essere minore della dimensione dellarray)

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 dellheap (N.B.: significa che v è lunico nodo il cui valore è MINORE di quello di almeno uno dei figli), 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) Pseudocodice di fixHeap per larray posizionale

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 14 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 dellheap Algoritmo ricorsivo basato sul divide et impera

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 15 Complessità heapify Tempo di esecuzione: T(n')= 2T(n'/2)+O(log n') T(n') = (n') (caso 1 del Teorema Master: Sia n' n lintero tale che un heap con n' elementi ha 1. altezza h 2. è completo fino allultimo livello Sia h laltezza di un heap con n elementi Vale: T(n) T(n') e n' 2n Quindi: T(n) T(n') = (n')= (2n)= (n) T(n)=O(n) se f(n)=O(n ) per >0, allora T(n) = (n ) log b a log b a - Ma ovviamente T(n) = Ω(n) T(n)=Θ(n)

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 16 Copia nella radice la chiave contenuta nella foglia più a destra dellultimo livello –nota: è lelemento 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 17 Costruisce un heap tramite heapify Estrae ripetutamente il massimo per n-1 volte –ad ogni estrazione memorizza il massimo nella posizione dellarray che si è appena liberata Lalgoritmo 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 così via, sino ad arrivare a Esercizio: E possibile definire unistanza di input su cui lheapsort costa o(n log n)? Risposta: NO: Si può dimostrare che nel caso migliore lheapsort richiede circa ½ n log n operazioni