Analisi ammortizzata Lezione n°2

Slides:



Advertisements
Presentazioni simili
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
Advertisements

1 Analisi ammortizzata Si considera il tempo richiesto per eseguire, nel caso pessimo, una intera sequenza di operazioni. Se le operazioni costose sono.
Prof.ssa Rossella Petreschi Lezione del 3 /10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 18 del testo Cormen, Leiserson, Rivest.
Prof.ssa Rossella Petreschi Lezione del 29/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 19 del testo Cormen, Leiserson, Rivest,
Huffman Canonico: approfondimento. Come abbiamo visto, Huffman canonico ci permette di ottenere una decompressione più veloce e con un uso più efficiente.
Prof.ssa Rossella Petreschi Lezione del 29 /10/2014 del Corso di Algoritmica Lezione n°8.
CONTROLLO DELLA CONCORRENZA
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
© 2007 SEI-Società Editrice Internazionale, Apogeo
Alberi autoaggiustanti
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Inserzione e Cancellazione
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Alberi di ricerca di altezza logaritmica
Analisi di sequenze di operazioni Union-Find
Lezione n°9 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Rappresentazione di alberi
Correzione 1° Esonero Lezione n°13
Rappresentazione di alberi binari
B-alberi e alberi autoaggiustanti
Complessità ammortizzata degli algoritmi Union Find
File hash.
Lezione n°14 Reti di flusso Prof.ssa Rossella Petreschi
La gestione degli insiemi disgiunti
Alcuni modelli probabilistici
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Sulla complessità Lezione n°2
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°4 Prof.ssa Rossella Petreschi
realizzato dal prof.Conti Riccardo
Introduzione L’8254 è un interval timer event/counter, progettato per risolvere i problemi del controllo del timing, comuni ad ogni microcomputer. E’ costituito.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Lezione n°12 Prof.ssa Rossella Petreschi
Operazioni su Naturali
Rappresentazione di alberi
Algoritmi per il flusso nelle reti
Algoritmi per il flusso nelle reti
Lezione n°6 Prof.ssa Rossella Petreschi
Matrici Definizioni Matrici Rettangolari Quadrate 02/01/2019
Scheduling in Linux (Kernel 2.4 e 2.6)
Analisi ammortizzata Lezione n°3
Gestione dinamica di tabelle
Backtracking Lezione n°13 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Automi e stringhe Lezione n°24 Prof.ssa Rossella Petreschi
* 07/16/96 Sez. 2: Ordinamento La consultazione di banche dati è sempre più cruciale in tutte le applicazioni dell’Informatica. Se vogliamo consultare.
Estensione di strutture dati e
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Alberi di ricerca Lezione n°4
Capitolo 1 Introduzione alla fisica
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°7 Splay-Trees e Heaps Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Il problema del flusso nelle reti
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Unione per ranghi compressi
Tabelle dinamiche Lezione n°3
Transcript della presentazione:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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