Algoritmi e Strutture Dati - dis.uniroma1.itlaura/assets/files/slideasd/cap8.pdf · Struttura: è...
-
Upload
truongliem -
Category
Documents
-
view
217 -
download
0
Transcript of Algoritmi e Strutture Dati - dis.uniroma1.itlaura/assets/files/slideasd/cap8.pdf · Struttura: è...
Code con priorità
Algoritmi e Strutture Dati
Luigi Laura
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 20042
Tipo di dato CodaPriorità (1/2)
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 20043
Tipo di dato CodaPriorità (2/2)
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 20044
Tre implementazioni
d-heap: generalizzazione degli heapbinari visti per l’ordinamento
heap binomiali
heap di Fibonacci
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 20045
d-heap
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 20046
Definizione
Un d-heap è un albero radicato d-ario con le seguentiproprietà:
1. Struttura: è completo almeno fino al penultimolivello
2. Contenuto informativo: ogni nodo v contiene unelemento elem(v) ed una chiave chiave(v) presa daun dominio totalmente ordinato
3. Ordinamento a heap: per ogni nodo v (diversodalla radice) chiave(v) ≥ chiave(parent(v))
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 20047
Esempio
Heap d-ario con 18 nodi e d = 3
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 20048
Proprietà
1. Un d-heap con n nodi ha altezza O(logd n)
2. La radice contiene l’elemento con chiave minima(per via della proprietà di ordinamento a heap)
3. Può essere rappresentato implicitamente tramitevettore posizionale grazie alla proprietà di struttura
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 20049
Procedure ausiliarie
Utili per ripristinare la proprietà di ordinamento a heapsu un nodo v che non la soddisfi T(n) = O(logd n)
T(n) = O(d logd n)
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200410
findMin
T(n) = O(1)
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200411
insert(elem e, chiave k)
T(n) = O(logd n) ( muoviAlto )
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200412
delete(elem e) e deleteMin
T(n) = O(d logd n) ( muoviBasso )
Può essere usata anche per implementare cancellazionedel minimo
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200413
decreaseKey(elem e, chiave d)
T(n) = O(logd n) ( muoviAlto )
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200414
increaseKey(elem e, chiave d)
T(n) = O(d logd n) ( muoviBasso )
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200415
Heap binomiali
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200416
Alberi binomialiAlbero binomiale Bh (definito ricorsivamente) :1. B0 consiste di un unico nodo2. Per i ≥ 0, Bi+1 ottenuto fondendo due alberi binomiali
Bi con radice di uno figlia della radice dell’altro
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200417
Proprietà strutturali
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200418
Definizione di heap binomiale
Un heap binomiale è una foresta di alberi binomialicon le seguenti proprietà:
1. Struttura: ogni albero Bi nella foresta è un alberobinomiale
2. Unicità: per ogni i, esiste al più un Bi nella foresta3. Contenuto informativo: ogni nodo v contiene un
elemento elem(v) ed una chiave chiave(v) presa daun dominio totalmente ordinato
4. Ordinamento a heap: per ogni nodo v (diverso dauna delle radici) chiave(v) ≥ chiave(parent(v))
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200419
Proprietà
In un heap binomiale con n nodi, vi sono alpiù log2 n alberi binomiali, ciascuno congrado ed altezza O(log n)
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200420
Procedura ausiliaria
Utile per ripristinare la proprietà di unicità in un heapbinomiale
T(n) è proporzionale al numero di alberi binomiali in input
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200421
Realizzazione (1/3)
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200422
Realizzazione (2/3)
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200423
Realizzazione (3/3)
Tutte le operazioni richiedono tempo T(n) = O(log n)Durante l’esecuzione della procedura ristruttura esistonoinfatti al più tre Bi, per ogni i ≥ 0
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200424
Analisi Ammortizzata
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200425
Metodologie di analisi di algoritmi
Finora abbiamo visto tre tipi di analisi:
• Analisi nel caso peggiore
• Analisi nel caso medio
• Analisi nel caso atteso (algoritmi randomizzati)
Ne vedremo un altro:
• Analisi ammortizzata
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200426
Analisi ammortizzata• Strutture dati con garanzia assoluta sui loro
tempi di esecuzione: analisi di caso peggioreper operazione (esempio: analisi di heap inheapsort)
• Analisi ammortizzata:• non ci interessa tanto caratterizzare tempo richiesto nel
caso peggiore da un’operazione sulla struttura dati• quanto caratterizzare tempo totale richiesto dalle
operazioni sulla struttura dati• ovvero tempo medio di un’operazione, dove la media è
sulla sequenza di operazioni
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200427
Analisi ammortizzata
• Supponiamo di avere una sequenza di σoperazioni su una particolare struttura dati
• La sequenza richiede tempo totale O(σ t) peressere eseguita
• Diremo che il tempo ammortizzato per ognioperazione della sequenza è O(t)
• Media sulla sequenza: O(σ t) / σ = O(t)• Nota: una singola operazione potrebbe
richiedere più di O(t) nel caso peggiore!
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200428
Analisi ammortizzata
• Sequenza di σ operazioni richiede tempo O(σt)
• Tempo ammortizzato: O(σ t) / σ = O(t)• OK per molte applicazioni• Abbiamo bisogno di utilizzare strutture dati su
sequenze di operazioni• Analizzare prestazioni su sequenze di
prestazioni
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200429
Esempio 1
Pila con le seguenti due operazioni• push(x): push elemento x sulla pila• multipop(k): esegui k pop sulla pila (se la pila
ha almeno k elementi)Analisi nel caso peggiore:• push(x): O(1)• multipop(k): O( min{ k, |P| } ) = O(n) dove |P|
è la dimensione della pila
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200430
Esempio 1
Analisi nel caso peggiore:• push(x): O(1)• multipop(k): O( min { k, |P| } ) = O(n) dove |P| è
la dimensione della pilaQuanto tempo richiederà una sequenza di σ
operazioni? O(σ n) ?No!
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200431
Analisi ammortizzata dell’Esempio 1
Intuizione:• Prima di togliere un elemento x con una
multipop dobbiamo averlo inserito con unapush(x)
• Ogni sequenza di σ push e multipop richiede intotale tempo O(σ )
• Tempo ammortizzato per operazione:O(σ ) / σ = Ο(1)
• Vedremo un’analisi più formale di questo
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200432
Metodologie di analisi ammortizzata
Tre tipologie di analisi diverse:• Metodo cumulativo:
Sequenza di σ operazioni richiede tempo O(σ t)Tempo ammortizzato: O(σ t) / σ = O(t)
• Metodo del banchiere:Per eseguire un passo dobbiamo pagare 1 EURAllocare EUR in modo da pagare per tutti i passi
• Metodo del potenziale:Analogia con analisi potenziale (Fisica)
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200433
Metodo del Banchiere per Esempio 1Quando esegui push(x) “sborsa” 2 EUR:• 1 EUR per pagare lavoro richiesto da push(x)• 1 EUR conservato nell’elemento xQuando esegui multipop(k) “sborsa” 0 EUR:• lavoro richiesto da multipop(k) pagato dagli
EUR conservati negli elementi!1. Per ogni operazione “sborsi” al più O(1) EUR2. Tutti gli EUR “sborsati” sufficienti a pagare per
lavoro richiesto dalle operazioni
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200434
Metodo del PotenzialeDefinisci potenziale Φ per struttura dati D
Φ(D) misura potenzialità di D ad eseguire lavoro(configurazione attuale)
Durante operazione i-esima, struttura dati passa daconfigurazione Di a configurazione Di+1
Passa da potenziale Φ(Di) a potenziale Φ(Di+1)Tenere in conto variazione di potenziale
Δ Φ = Φ(Di+1) - Φ(Di)Operazione può essere molto costosa ma mette strutturadati in grado di eseguire più efficientemente operazionifuture (costo operazione compensato da Δ Φ )
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200435
Metodo del PotenzialeTipicamente potenziale Φ soddisfa le:
Φ(D0) = 0 e Φ(Di) ≥ 0 per ogni i Definiamo tempo ammortizzato ai dell’operazione i-
esima: ai = ti + Φ(Di+1) - Φ(Di) dove ti è il tempo (attuale) operazione i-esima Sommando su sequenza di operazioni
Σi ai = Σi ti + Σi ( Φ(Di+1) - Φ(Di) ) Σi ai = Σi ti + ( Φ(Dn) - Φ(D0) ) Σi ai ≥ Σi ti
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200436
Metodo del Potenziale per Esempio 1
Definiamo potenziale Φ della pila P: Φ(P) = |P|Nota che: Φ(P0) = 0 e Φ(Pi) ≥ 0 per ogni i
Tempo ammortizzato ai di operazione i-esima: ai = ti + Φ(Di+1) - Φ(Di)
Costo ammortizzato di push(x) : ai = ti + Φ(Di+1) - Φ(Di) = 1 + 1 = 2 Costo ammortizzato di multipop(k) : ai = ti + Φ(Di+1) - Φ(Di) = k + ( -k) = 0
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200437
Heap di Fibonacci
Luigi LauraAlgoritmi e strutture dati
da Demetrescu et al. McGraw Hill 200438
Heap di FibonacciHeap binomiale rilassato: si ottiene da un heap
binomiale rilassando la proprietà di unicità dei Bied utilizzando un atteggimento più “pigro” durantel’operazione insert (perché ristrutturare subito laforesta quando potremmo farlo dopo?)
Heap di Fibonacci: si ottiene da un heap binomialerilassato rilassando la proprietà di struttura dei Biche non sono più necessariamente alberi binomiali
Analisi sofisticata: i tempi di esecuzione sonoammortizzati su sequenze di operazioni