La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Analisi ammortizzata Lezione n°2

Presentazioni simili


Presentazione sul tema: "Analisi ammortizzata Lezione n°2"— Transcript della presentazione:

1 Analisi ammortizzata Lezione n°2
Prof.ssa Rossella Petreschi Lezione del 10 /10/2011 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 18 del testo Cormen, Leiserson, Rivest “Introduzione agli algoritmi” Edizioni: Jackson Libri ASD-A.A.2011/2012

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.2011/2012

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.2011/2012

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.2011/2012

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.2011/2012

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.2011/2012

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.2011/2012

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) = (p - 1) - p = -1; i = ci + (Di) - (Di-1)= 1-1 = 0 MULTIPOP(P,t): i = ci + (Di) - (Di-1) = t+((p-t)-p)=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)) ≤ n + n - 0 = 2n (per i = 1,…n) ASD-A.A.2011/2012

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.2011/2012

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 = 2n (per i = 0,…) (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.2011/2012

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.2011/2012

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.2011/2012

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 size(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.2011/2012

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.2011/2012

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.2011/2012

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 spostamentodovuto 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.2011/2012


Scaricare ppt "Analisi ammortizzata Lezione n°2"

Presentazioni simili


Annunci Google