Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi

Slides:



Advertisements
Presentazioni simili
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 22/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Advertisements

Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 19/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 07/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Simulazione di lettura e scrittura concorrente Tecnica dell’accelerated cascading Lezione.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Albero ricoprente di costo minimo Lezione n°12.
Fondamenti di Informatica A - Massimo Bertozzi ALBERI E ALBERI BINARI DI RICERCA (BST)
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.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Somme prefisse Lezione n°2.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi L’ausilio delle occorrenze Circuiti di ordinamento Lezione n°5.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2015/2016 Prof.ssa Rossella Petreschi
Alberi autoaggiustanti
Algoritmi Avanzati a.a.2014/2015 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
Branch and Bound Lezione n°14 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Alberi di ricerca di altezza logaritmica
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
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
Alberi binari Definizione Sottoalberi Padre, figli
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Rappresentazione di alberi
Rappresentazione di alberi binari
B-alberi e alberi autoaggiustanti
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Complessità ammortizzata degli algoritmi Union Find
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi
La gestione degli insiemi disgiunti
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
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
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Lezione n°4 Prof.ssa Rossella Petreschi
Lezione n°11 Prof.ssa Rossella Petreschi
Lezione n°12 Prof.ssa Rossella Petreschi
ABBINAMENTO Lezione n°13
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Rappresentazione di alberi
Algoritmi e Strutture Dati
Lezione n°6 Prof.ssa Rossella Petreschi
Alberi n-ary Lezioni di C.
Algoritmi e Strutture Dati
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi
Progettare algoritmi veloci usando strutture dati efficienti
Algoritmi Avanzati Prof.ssa Rossella Petreschi
Estensione di strutture dati e
Algoritmi Avanzati a.a. 2010/11
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
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
HeapSort Stesso approccio incrementale del selectionSort Tipo di dato
Transcript della presentazione:

Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi CONTRAZIONE DI ALBERI Lezione n°11 Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi 1

L’operazione di rake Sia T un albero binario 0/2 radicato in r e sia u una foglia in T tale che p(u)  r. L’operazione Rake(u) trasforma T in T' eliminando u e p(u) e unendo il fratello di u al padre del padre. p f u n AA 2010-2011

Se T non è 0/2 Si possono aggiungere tanti nodi quanti ne servono per garantire la proprietà 0/2. Ciò richiede tempo costante con O(n) processori e incremento di occupazione di memoria lineare. AA 2010-2011

L’operazione di Contrazione Tramite ripetute applicazioni del rake vogliamo ridurre l’albero iniziale T in un albero di tre nodi: la radice e due foglie (quella più a sinistra e quella più a destra in T). Problema: bisogna evitare il rake concorrente di foglie con lo stesso padre o con padri adiacenti per evitare risultati inconsistenti: u u' u u' u u' AA 2010-2011

Soluzione Evitare il rake concorrente di foglie con lo stesso padre: dopo averle numerate da sinistra a destra, si esegue il rake in parallelo su foglie a numerazione alterna. Evitare il rake concorrente di foglie con padri adiacenti: fra le foglie a numerazione alterna selezionate, si eliminano prima quelle che sono figli sinistri e in seguito quelle che sono figli destri. u u' 7 6 6 u u' 7 8 AA 2010-2011

Esempio Input: Passo 2.1 rake su q ed l Passo 2.2 rake su t ed p z d e f r s t o p m g n b i Albero risultante a q z d c e f r s t l o p h m g n b i Passo 2.2 rake su t ed p a s d e f r o g n b i Albero risultante Passo 1 calcola A 1 2 3 4 5 6 7 8 A q s t f l o p n 1 2 3 4 A s f o n Passo 2.3 aggiorna A AA 2010-2011

Esempio Passo 2.1 rake su o Passo 2.1 rake su nulla Passo 2.2 rake su f Albero risultante e i r Albero risultante d f n b a i a s n b 1 A n Passo 2.3 aggiorna A Passo 2.2 rake su s r Albero risultante Passo 2.1 rake su n e i a f n b r Albero risultante a b Passo 2.2 rake su nulla 1 2 A f n Passo 2.3 aggiorna A Passo 2.3 aggiorna A =  AA 2010-2011

Algoritmo per la Contrazione Input: T albero binario 0/2 radicato in r, con fs e fd rispettivamente foglia estrema a sinistra e a destra Output: T ridotto ai 3 nodi r, fs, fd Passo 1 (Inizializzazione): memorizzare in A tutte le foglie, eccetto fs e fd, numerate progressivamente da sinistra a destra Passo2 (Ciclo): while A non è vuoto do applica il rake in parallelo alle foglie in Adispari che sono figli sinistri applica il rake in parallelo alle foglie in Adispari che sono figli destri A = Apari AA 2010-2011

Implementazione Per realizzare il Passo 1: calcola la numerazione inorder di T tramite il TDE (è possibile perché l’albero è 0/2); individua le foglie (tutti i nodi v t.c. left[v]=right[v]=1); numera le foglie (escludendo quella più a sx e quella più a dx) tramite somme prefisse. Per realizzare il passo 2: per i rake lavorano in parallelo i processori di indice dispari; per discriminare le foglie che sono figli sinistri (destri) basta notare che la loro numerazione inorder nell’albero originale è minore (maggiore) di quella del padre; per aggiornare A lavorano solo i processori di indice pari ed assegnano A[i/2] = A[i]. AA 2010-2011

Costo dell’algoritmo di contrazione Il costo complessivo dell’algoritmo di contrazione è dell’ordine di O(n log n) su PRAM EREW con n processori, dato che: Il passo 1 richiede costo O(n log n) sia per il TDE che per le somme prefisse. Ciascuna iterazione del passo 2 richiede tempo costante. Ad ogni iterazione il vettore A si dimezza, quindi sono necessarie O(log n) iterazioni. AA 2010-2011

Albero delle espressioni Data un’espressione aritmetica, si associ alle foglie di un albero binario 0/2 le costanti dell’espressione e ai nodi interni le operazioni binarie. Le operazioni necessarie per generare il risultato alla radice si eseguono in parallelo su ogni nodo, livello per livello, con costo O(n log n), se l’albero delle espressioni è bilanciato, (esempio a sx). Si noti che se l’albero non è bilanciato (esempio a dx), il tempo parallelo richiesto può addirittura essere lineare. a  (b + (c  (d + (e  (f + (g  h)))))) ((a + b)  (c  d)) + ((e  f) + (g + h)) g h  f + e d c b a a b + c d  e f g h AA 2010-2011

Valutare una espressione Idea: se l’albero non è bilanciato, per mantenere il tempo parallelo logaritmico, ci si accontenta che ogni nodo faccia solo un computo parziale prima di essere considerato completamente visitato. Il computo parziale al nodo v è dato da avX+bv con av e bv costanti e X indeterminata che rappresenta il valore non noto della sottoespressione al nodo v. Ogni nodo è caratterizzato dalla etichetta (av,bv), inizialmente pari a (1,0). AA 2010-2011

Invariante val(u) = (av val(v) + bv)  (aw val(w) + bw) Si consideri il nodo u interno all’albero delle espressioni. Ad u è associato l’operatore   {+, } e l’etichetta (au,bu), ai figli di u, v e w, sono associate le etichette (av,bv), (aw,bw), rispettivamente. Il valore della sottoespressione calcolata in u è dato da: val(u) = (av val(v) + bv)  (aw val(w) + bw) Si noti che au e bu non appaiono nel calcolo di val(u) ma saranno presenti nel calcolo di val(p(u)). AA 2010-2011

Algoritmo per valutare un’espressione Input: T albero delle espressioni tale che ogni nodo v conosce il padre p(v) e il fratello fr(v) Output: val(T) = val(T'), T' risultato della contrazione Passo 1: si assegni l’etichetta (1,0) a tutti i nodi di T Passo 2: si applichi l’algoritmo di contrazione con l’aggiunta della condizione che ogni singola operazione di rake preservi l’invariante Passo 3: su T' di radice r con operatore  e foglie u e v contenenti le costanti cu e cv, rispettivamente, si calcoli: val(T') = (au cu + bu)  (av cv + bv) = val(T) Il tempo totale di questo algoritmo dipende dal passo 2, dato che i passi 1 e 3 richiedono tempo parallelo costante. AA 2010-2011

Come l’operazione di rake preserva l’invariante L’operazione di rake applicata ad una foglia u con fratello w, elimina u e p(u). Al fine di mantenere la validità dell’invariante, il contributo di u e p(u) al computo totale (ovvero au, ap(u), bu, bp(u)) deve essere conglobato in w (ovvero in aw e bw). Poiché val(p(u)) = (aucu+bu) p(u) (awX+bw), il contributo di p(u) al computo di val(p(p(u))) è dato da: ap(u)val(p(u)) + bp(u) = ap(u) ((aucu+bu) p(u) (awX+bw)) + bp(u) da cui si possono calcolare i nuovi valori per w: Quindi il passo 2 resta dominato dal costo computazionale del rake. (ap(u),bp(u))  (aw,bw) w cu p(u) = + p(u) =  a'w = ap(u) aw ap(u) (aucu+bu)  aw b'w = ap(u) (aucu+bu+bw) + bp(u) ap(u) (aucu+bu)  bw + bp(u) (au,bu) (aw',bw') w AA 2010-2011

Esempio di calcolo d’espressione Input: albero che corrisponde all’espressione inizialmente (av, bv) = (1,0) per ogni nodo ((2+(3(4+5)))3)+(((5+2)2)+(7(1+1))) = 115 2  + 3 7 4 5 1 AA 2010-2011

Esempio di calcolo d’espressione Si numerano le foglie e si esegue il rake su quelle di numerazione dispari, prima su quelle che sono figli sinistri e poi su quelle che sono figli destri. 2  + 3 7 4 5 1 6 8 9 2 + 3  7 4 5 1 6 8 (1,5) (1,1) (3,0) (2,10) 2 + 3  7 4 1 6 8 (1,1) (3,15) AA 2010-2011

Esempio di calcolo d’espressione + + (1,14)  +   + 3 2  + 3 7 1 2 2 (2,10) 3 2 4 7 1 2 4 4 (1,1) 1 1 (3,15) 4 (1,1) (3,15) + + (1,14) (3,81) (1,14)   2  (1,27) 2 3 7 1 7 1 1 2 (1,1) 2 (1,1) + + (3,81) (7,21) (3,81) (1,14) 2 1 2  7 1 (3  2 + 81) + (7  1 + 21) = 115 1 (1,1) AA 2010-2011