La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Prof.ssa Rossella Petreschi Lezione del 3 /10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 18 del testo Cormen, Leiserson, Rivest.

Presentazioni simili


Presentazione sul tema: "Prof.ssa Rossella Petreschi Lezione del 3 /10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 18 del testo Cormen, Leiserson, Rivest."— Transcript della presentazione:

1 Prof.ssa Rossella Petreschi Lezione del 3 /10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 18 del testo Cormen, Leiserson, Rivest “Introduzione agli algoritmi” Edizioni: Jackson Libri Analisi ammortizzata 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

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)

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(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)

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).

7 Metodo del potenziale D 0 :struttura dati iniziale su cui verrà eseguita la sequenza di operazioni D i :struttura dati che si ottiene come risultato della operazione i-esima sulla struttura dati D i-1  :funzione potenziale che associa un numero reale  (D i ) a D i Analisi ammortizzata: costo ammortizzato della i-esima operazione  i = c i +  (D i ) -  (D i -1) costo ammortizzato di n operazioni  i =  (c i +  (D i ) -  (D i-1 )) =  c i +  (D n ) -  (D 0 )), per i = 1,…n (serie telescopica)

8 Operazioni su pile (metodo del potenziale) PUSH(P,x):  ( D i ) -  ( D i-1 ) = (p + 1) - p = 1;  i = c i +  ( D i ) -  ( D i-1 )= 1+1 = 2 POP(P):  ( D i ) -  ( D i-1 ) = (p - 1) - p = -1;  i = c i +  ( D i ) -  ( D i-1 )= 1-1 = 0 MULTIPOP(P,t):  i = c i +  ( D i ) -  ( D i-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 = ∑ c i +  ( D n ) -  ( D 0 )) ≤ n + n - 0 = 2n (per i = 1,…n)

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)2 i, per i = 0,…,k-1 0000 0001 0010 0011 0100 …. 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

10 Incremento di un contatore (metodo degli aggregati) A(i) viene complementato  n/2 i  volte per i=0,1,…,  logn  A(i) non viene complementato per i >  logn  Numero totale di operazioni di modifica di bit  n/2 i  ≤ n  1/2 (per i = 0,…,  logn  )< n  1/2 i = 2n (per i = 0,…) (serie geometrica decrescente infinita:  x i = 1/1-x, per i=0,…) 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)

11 Incremento di un contatore (metodo degli accantonamenti) Porre un bit a 1 ca = 2 ca= c osto a mmortizzato 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

12 Incremento di un contatore (metodo del potenziale) t i + 1 : costo effettivo della i-esima operazione, ovvero t i bit posti a 0 e al più 1 bit posto ad 1 1 - t i : differenza di potenziale dopo la i-esima operazione, ovvero differenza fra il numero di bit uguali ad 1 (b i ) prima e dopo la i-esima operazione  (D i ) -  (D i-1 ) = (b i-1 - t i + 1) - b i-1 = 1 - t i  i = c i +  (D i ) -  (D i-1 ) = (t i + 1)+ (1 - t i ) = 2 Analisi ammortizzata: Una sequenza di n operazioni INCREMENTO su di un contatore inizialmente posto a 0 può costare al più O(n)


Scaricare ppt "Prof.ssa Rossella Petreschi Lezione del 3 /10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 18 del testo Cormen, Leiserson, Rivest."

Presentazioni simili


Annunci Google