Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoMichela Rocca Modificato 6 anni fa
1
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Analisi ammortizzata Lezione n°2 Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi ASD a.a.2010/2011- Lezione n°2
2
Definizione Si definisce complessità ammortizzata su una sequenza di k operazioni, data una struttura dati di dimensione n, la media dei tempi delle operazioni della sequenza. Il tempo così calcolato tiene conto che: in generale i dati non possono sempre presentarsi nelle condizioni più sfavorevoli per k volte consecutive e quindi il costo richiesto per eseguire le operazioni più costose può essere ammortizzato dall’esecuzione delle operazioni meno costose; si deve studiare l’effetto sulla sequenza peggiore di tutte, quindi è un’analisi di caso pessimo sulla catena e non sulla singola operazione; quest’analisi non ha alcuna connotazione probabilistica e quindi differisce dall’analisi del caso medio ASD a.a.2010/2011- Lezione n°2
3
3 metodi Consideriamo tre diversi metodi per il calcolo dell’analisi ammortizzata a seconda che il costo ammortizzato di una singola operazione sia calcolato al termine della sequenza di k operazioni e sia uguale per ogni singola operazione (Metodo degli aggregati) sia precalcolato tramite “crediti prepagati” ai singoli oggetti della struttura dati (Metodo degli accantonamenti)o alla struttura dati nel suo complesso (Metodo del potenziale) ASD a.a.2010/2011- Lezione n°2
4
Operazioni su pile ( caso peggiore)
PUSH(P,x): inserisce l’oggetto x in testa alla pila O(1) POP(P): toglie l’oggetto in testa alla pila O(1) MULTIPOP(P,t): toglie t oggetti dalla testa della pila O(min(t,p)) Analisi del caso peggiore: Una sequenza di k operazioni PUSH,POP e MULTIPOP su una pila di dimensione n costa O(kmin(t,p)) ovvero O(n2). ASD a.a.2010/2011- Lezione n°2
5
Operazioni su pile (metodo degli aggregati)
PUSH(P,x): inserisce l’oggetto x in testa alla pila O(1) POP(P): toglie l’oggetto in testa alla pila O(1) MULTIPOP(P,t): toglie t oggetti dalla testa della pila O(min(t,p) Analisi ammortizzata: Una sequenza di operazioni PUSH,POP e MULTIPOP su una pila di dimensione n può costare al più O(n). Il tempo ammortizzato di ogni singola operazione, è O(n)/n = O(1) ASD a.a.2010/2011- Lezione n°2
6
Operazioni su pile (metodo degli accantonamenti)
PUSH(P,x): inserisce l’oggetto x in testa alla pila ca = 2 (contro O(1)) POP(P): toglie l’oggetto in testa alla pila ca = 0 (contro O(1)) MULTIPOP(P,t): toglie t oggetti dalla testa della pila ca = 0 (contro O(min(t,p))) Analisi ammortizzata: Una sequenza di operazioni PUSH,POP e MULTIPOP su una pila di dimensione n può costare al più O(n). ASD a.a.2010/2011- Lezione n°2
7
Metodo del potenziale D0:struttura dati iniziale su cui verrà eseguita la sequenza di operazioni Di:struttura dati che si ottiene come risultato della operazione i-esima sulla struttura dati Di-1 :funzione potenziale che associa un numero reale (Di) a Di Analisi ammortizzata: costo ammortizzato della i-esima operazione i = ci + (Di) - (Di-1) costo ammortizzato di n operazioni i = (ci + (Di) - (Di-1)) = ci + (Dn) - (D0)), per i = 1,…n (serie telescopica) ASD a.a.2010/2011- Lezione n°2
8
Operazioni su pile (metodo del potenziale)
PUSH(P,x): (Di) - (Di-1) = (p + 1) - p = 1; i = ci + (Di) - (Di-1)= 1+1 = 2 POP(P): (Di) - (Di-1) = = -1; i = ci + (Di) - (Di-1)= 1-1 = 0 MULTIPOP(P,t): i = 0 Analisi ammortizzata: Una sequenza di operazioni PUSH,POP e MULTIPOP su una pila di dimensione n ha un costo O(n), in quanto i = ci + (Dn) - (D0)), per i = 1,…n ≤ n + n - 0 = 2n ASD a.a.2010/2011- Lezione n°2
9
Incremento di un contatore binario ( caso peggiore)
Il contatore è realizzato da un vettore di bit A dove A(0) rappresenta il bit meno significativo, pertanto: x = A(i)2i, per i = 0,…,k-1 …. INCREMENTO: a partire da i=0 e finchè (i<k e A(i)=1) commuta A(i) in 0 e incrementa i; se i<k poni A(i)=1 Analisi del caso peggiore: Una sequenza di n operazioni INCREMENTO su di un contatore inizialmente a 0 richiede tempo O(nk)perché O(k)è il tempo nel caso pessimo della singola operazione ASD a.a.2010/2011- Lezione n°2
10
Incremento di un contatore (metodo degli aggregati)
A(i) viene complementato ën/2iûvolte per i=0,1,…, ëlognû A(i) non viene complementato per i >ëlognû Numero totale di operazioni di modifica di bit ën/2iû (per i = 0,…, ëlognû)≤ n 1/2i (per i = 0,…) = 2n (serie geometrica decrescente infinita = 1/1-x) Analisi ammortizzata: Una sequenza di n operazioni INCREMENTO su di un contatore inizialmente posto a 0 può costare al più O(n). Il tempo ammortizzato di ogni singola operazione, è O(n)/n = O(1) ASD a.a.2010/2011- Lezione n°2
11
Incremento di un contatore (metodo degli accantonamenti)
Porre un bit a 1 ca = 2 Porre un bit a 0 ca = 0 Analisi ammortizzata: Una sequenza di n operazioni INCREMENTO su di un contatore inizialmente posto a 0 può costare al più O(n) poiché: INCREMENTO commuta al più un solo bit ad 1 Il totale del credito è sempre ≥ 0 perché il numero totale di 1 non è mai negativo ASD a.a.2010/2011- Lezione n°2
12
Incremento di un contatore (metodo del potenziale)
ti + 1 : costo effettivo della i-esima operazione, ovvero ti bit posti a 0 e al più 1 bit posto ad 1 1 - ti : differenza di potenziale dopo la i-esima operazione, ovvero differenza fra il numero di bit uguali ad 1 (bi) prima e dopo la i-esima operazione (Di) - (Di-1)) ≤ (bi-1 - ti + 1) - bi-1 ≤ 1 - ti i = ci + (Di) - (Di-1)≤ (ti + 1)+ (1 - ti ) = 2 Analisi ammortizzata: Una sequenza di n operazioni INCREMENTO su di un contatore inizialmente posto a 0 può costare al più O(n) ASD a.a.2010/2011- Lezione n°2
13
Tabelle dinamiche Tabelle su cui è possibile effettuare operazioni d’ inserimento (di cancellazione) di un elemento in (da) una singola posizione. fattore di carico (T): num (T)/ size (T) (se num(T)= 0, (T) = 1) num (T): numero di elementi caricati in T size (T): numero totale di posizioni di T Una tabella è piena quando (T) = 1 ASD a.a.2010/2011- Lezione n°2
14
Inserimento in tabella ( caso peggiore)
Costo ci della i-esima operazine di inserimento ci = 1 se lo spazio è sufficiente ci = i = (i-1) + 1 se lo spazio non è sufficiente, dove (i-1) è il costo per copiare tutti i vecchi elementi nella nuova tabella Analisi del caso peggiore: Una sequenza di n operazioni di inserimento su una tabella inizialmente vuota richiede tempo O(n2)perché O(n)è il tempo nel caso pessimo della singola operazione di inserimento ASD a.a.2010/2011- Lezione n°2
15
Inserimento in tabella (metodo degli aggregati)
c(i)= i se i-1 è una potenza di 2 (perché la tabella, quando espande, raddoppia) 1 altrimenti Analisi ammortizzata: Una sequenza di n operazioni di inserimento su di una tabella inizialmente vuota richiede costo totale 3n. c(i) ≤ n+ 2j ≤ n+(2 ëlognû+1 -1)/(2-1) ≤ n + 2ëlognû 2 =n+2n = 3n, per i = 1,…,n e j = 0,…, ëlognû ( xk = x(n+1)-1/x-1, k=0,…,n) Il tempo ammortizzato di ogni singola operazione, è 3n/n = 3 ASD a.a.2010/2011- Lezione n°2
16
Inserimento in tabella (metodo degli accantonamenti)
Inserimento di un elemento ca = 3 dove 1 per il proprio inserimento nella tabella corrente; 1 per l’eventuale spostamento dovuto ad una futura espansione; 1 per uno degli elementi nella vecchia metà della tabella. Analisi ammortizzata: Una sequenza di n operazioni di inserimento su di una tabella inizialmente vuota costa 3n ASD a.a.2010/2011- Lezione n°2
17
Inserimento in tabella (metodo del potenziale)
Definiamo:(T) = 2num(T) - size(T) Subito dopo una espansione: (T) = 2size(T)/2 - size(T)=0 Immediatamente prima di una espansione: (T) = 2num(T) - num(T)= num(T) Se lo i-esimo inserimento non attiva una espansione: i = ci + (Ti) - (Ti-1) = 1+(2num(Ti) - size(Ti)) - (2num(Ti-1) - size(Ti-1)) = 1 + (2num(Ti) - size(Ti)) - (2(num(Ti)-1) - size(Ti)) = 3 Se lo i-esimo inserimento attiva una espansione: i = ci + (Ti) - (Ti-1)= num(Ti) +(2num(Ti) - size(Ti)) - (2num(Ti-1) - size(Ti-1))= num(Ti) +(2num(Ti) - (2num(Ti) -2)) -(2(num(Ti)-1) - (num(Ti)-1)) = num(Ti) (num(Ti)-1) = 3 Analisi ammortizzata: Una sequenza di n operazioni di inserzione su di un tabella inizialmente vota può costare al più O(n) ASD a.a.2010/2011- Lezione n°2
18
Contrazione di una tabella
L’operazione di contrazione (quando il fattore di carico è troppo piccolo) consiste nel: creare una nuova tabella con un numero di posizioni minore di quella vecchia; copiare tutti gli elementi della vecchia tabella nella nuova. Idealmente si vorrebbe che: il fattore di carico sia sempre limitato inferiormente da una costante; il costo ammortizzato di una operazione rimanga limitato superiormente da una costante. ASD a.a.2010/2011- Lezione n°2
19
Dimezzare e Duplicare Euristica
Duplicare (dimezzare) il numero di posizioni nella nuova tabella; (T) ≥ 1/2, quindi non si spreca mai più della metà dello spazio nella tabella Nel dimezzare : il fattore di carico è quindi sempre limitato inferiormente da una costante; ma il costo ammortizzato di una operazione non sempre rimane limitato superiormente da una costante. ASD a.a.2010/2011- Lezione n°2
20
Esempio Dopo una sequenza di 2k-1 +1 operazioni di inserzione su una tabella T, si prosegua con una sequenza di 2k-1-1 operazioni del tipo DDIIDDIID… Al termine dei primi 2k-1 inserimenti num(T) = size(T)= n/2, quindi il 2k-1+1-esimo inserimento crea una espansione verso una tabella di dimensione n. Dopo di che, secondo l’euristica, ogni coppia di operazioni di eliminazione porterà ad una contrazione verso una tabella di dimensione n/2, mentre ogni coppia di operazioni di inserimento porterà ad una nuova espansione verso una tabella di dimensione n. Poiché il costo di ogni operazione di contrazione/espansione è pari a (n) ed n sono le operazioni, il costo totale sarà(n2)e il costo ammortizzato di ogni singola operazione rimarrà (n). ASD a.a.2010/2011- Lezione n°2
21
Euristica modificata Espansione (se la tabella è piena, ovvero (T) = 1 ): Si duplica il numero di posizioni nella nuova tabella, conseguentemente (T) ≥ 1/2. Contrazione (se la tabella troppo vuota, ovvero (T) = 1/4): Si dimezza il numero di posizioni nella nuova tabella, conseguentemente (T) ≥ 1/2. poniamo num(T) = 0 implica size(T) =0 e (T)=1 ASD a.a.2010/2011- Lezione n°2
22
La funzione potenziale
Definiamo: (T) = 2num(T) - size(T) se (T) ≥ 1/2 (T) = size(T)/2 - num(T) se (T) < 1/2 Vale: il costo ammortizzato totale di una sequenza di operazioni rispetto alla funzione potenziale è un limite superiore del costo effettivo delle operazioni in quanto (T) ≥ 0 sempre, dove (T) = 0 se la tabella è vuota (T) = 0 se (T) = 1/2 (T) = num(T) se (T) = 1 ((T) può supportare l’espansione) (T) = num(T) se (T) = 1/4 ((T) può supportare la cancellazione) ASD a.a.2010/2011- Lezione n°2
23
Inserimento (metodo del potenziale)
(Ti-1) ≥ 1/2 i = 3 (Ti-1) < 1/2 i = ci + (Ti) - (Ti-1) = 1 + (size(Ti)/2 - num(Ti)) - (size(Ti-1)/2 - num(Ti-1)) = 1 + (size(Ti)/2 - num(Ti)) - (size(Ti)/2 - (num(Ti)-1)) = 0 (Ti-1) < 1/2 e (Ti) ≥ 1/2 i = ci + (Ti) - (Ti-1) = 1 + (2num(Ti) - size(Ti)) - (size(Ti-1)/2 - num(Ti-1)) = 1 + (2(num(Ti-1)+1) - size(Ti-1)) - (size(Ti-1)/2 - num(Ti-1)) = = 3num(Ti-1) - 3/2size(Ti-1)+3 = 3 (Ti-1) size(Ti-1) - 3/2size(Ti-1) + 3 < < 3/2size(Ti-1) - 3/2size(Ti-1) + 3 = 3 ASD a.a.2010/2011- Lezione n°2
24
Cancellazione (metodo del potenziale)
(Ti-1) < 1/2 e (Ti) > 1/4 i = ci + (Ti) - (Ti-1) = 1 + (size(Ti)/2 - num(Ti)) - (size(Ti-1)/2 - num(Ti-1)) = 1 + (size(Ti)/2 - num(Ti)) - (size(Ti)/2 - (num(Ti)+1)) = 2 (Ti-1) < 1/2 e (Ti) = 1/4 i = ci + (Ti) - (Ti-1) = (num(Ti)+1) + (size(Ti)/2 - num(Ti))-(size(Ti-1)/2 - num(Ti-1))= (num(Ti)+1) + ((num(Ti)+1) - num(Ti))-((2num(Ti)+2) - (num(Ti)+1))= 1 (Ti-1) ≥ 1/2 i = ci + (Ti) - (Ti-1) = 1+ (2 num(Ti) - size(Ti))- (2 num(Ti-1) - size(Ti-1)) = 1+ ((2 (num(Ti-1)-1) - size(Ti-1))- (2 num(Ti-1) - size(Ti-1))= -1 ≤ 0 ASD a.a.2010/2011- Lezione n°2
25
Per concludere Abbiamo mostrato come tutte le operazioni di inserimento e di cancellazione su una tabella abbiano costo ammortizzato limitato superiormente da una costante. Quindi una qualunque sequenza di n operazioni su una tabella dinamica richiede tempo ammortizzato (n) ASD a.a.2010/2011- Lezione n°2
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.