Tabelle dinamiche Lezione n°3

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

Prof.ssa Rossella Petreschi Lezione del 15 /10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Paragrafo 7.4 del testo Kingston “Algorithms and.
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,
Prof.ssa Rossella Petreschi Lezione del 5/12/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 11 del testo Anany Levitin “The design.
Prof.ssa Rossella Petreschi Lezione del 29 /10/2014 del Corso di Algoritmica Lezione n°8.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Alberi autoaggiustanti
Alberi di ricerca di altezza logaritmica
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Inserzione e Cancellazione
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Branch and Bound Lezione n°19 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
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
Lezione n°7 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 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
Lezione n°14 Reti di flusso Prof.ssa Rossella Petreschi
La gestione degli insiemi disgiunti
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 e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Lezione n°4 Prof.ssa Rossella Petreschi
Lezione n°12 Prof.ssa Rossella Petreschi
UNION FIND Lezione n°8 Prof.ssa Rossella Petreschi
Rappresentazione di alberi
Algoritmi e Strutture Dati
Algoritmi per il flusso nelle reti
Algoritmi e Strutture Dati
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
Corrispondenza fra stringhe
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
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 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
Analisi ammortizzata Lezione n°2
Transcript della presentazione:

Tabelle dinamiche Lezione n°3 Prof.ssa Rossella Petreschi Lezione del 13 /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

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

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

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

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

Esempio Dopo una sequenza di 2k-1 +1 operazioni di inserzione su una tabella T, si prosegua con una sequenza di 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.2011/2012

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

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

Inserimento (metodo del potenziale) (Ti-1) ≥ 1/2 i = 3 (Ti-1) < 1/2 e (Ti) < 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.2011/2012

Cancellazione (metodo del potenziale) (Ti-1) < 1/2 e 1/4 < (Ti) < 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)) = 2 (Ti-1) < 1/2, ma la i-esima operazione attiva una contrazione quindi (Ti) = 1/2 i = ci + (Ti) - (Ti-1) = (num(Ti)+1) + (2num(Ti) - size(Ti)) - (size(Ti-1)/2 - num(Ti-1))= (num(Ti)+1) + (2num(Ti) - 2num(Ti)) – (2num(Ti) - (num(Ti) -1) = 2 (Ti-1) > 1/2 e (Ti) > 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 (Ti-1) = 1/2 e (Ti) < 1/2 i = ci + (Ti) - (Ti-1) = 1+ (size(Ti)/2 - num(Ti)) - (2 num(Ti-1) - size(Ti-1)) = 1+ (size(Ti)/2 - size(Ti)/2 +1)- (2 num(Ti-1) - 2num(Ti-1)) = 2 ASD-A.A.2011/2012

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 O(n) ASD-A.A.2011/2012