La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi

Presentazioni simili


Presentazione sul tema: "Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi"— Transcript della presentazione:

1 Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Lezione n°8 Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi 1

2 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

3 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].

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

5 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

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

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

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

9 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

10 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

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

12 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  ) + (7  ) = 115 1 (1,1)


Scaricare ppt "Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi"

Presentazioni simili


Annunci Google