Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi

Slides:



Advertisements
Presentazioni simili
Tavole dinamiche Spesso non si sa a priori quanta memoria serve per memorizzare dei dati in un array, in una tavola hash, in un heap, ecc. Può capitare.
Advertisements

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ò.
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
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Lezione n°10 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
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
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
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Complessità ammortizzata degli algoritmi Union Find
File hash.
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 Prof.ssa Rossella Petreschi
Informatica per Scienze Geologiche LT a.a
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
Algoritmi Avanzati a.a.2010/2011 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
Algoritmi per il flusso nelle reti
Algoritmi per il flusso nelle reti
Lezione n°6 Prof.ssa Rossella Petreschi
Scheduling in Linux (Kernel 2.4 e 2.6)
Analisi ammortizzata Lezione n°3
Gestione dinamica di tabelle
Algoritmi e Strutture Dati
Backtracking Lezione n°13 Prof.ssa Rossella Petreschi
LE SUCCESSIONI Si consideri la seguente sequenza di numeri:
Algoritmi Avanzati 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.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
APPUNTI SUL LINGUAGGIO C Implementazioni di Liste Concatenate
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Backtracking Lezione n°17 Prof.ssa Rossella Petreschi
Alberi di ricerca Lezione n°4
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
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Unione per ranghi compressi
Tabelle dinamiche Lezione n°3
Analisi ammortizzata Lezione n°2
Transcript della presentazione:

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

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

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

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

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

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

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) = 0 - 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

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.2010/2011- Lezione n°2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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