Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 22/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI
Algoritmi Paralleli e Distribuiti a.a. 2008/09 2 Algoritmo per la Contrazione Input: T albero binario 0/2 radicato in r Output: T ridotto di 3 nodi 1.Numerare le foglie da sinistra a destra esclusi gli estremi e memorizzarle in un vettore A 2. while T ha più di 3 nodi do 1.Applica il rake in parallelo alle foglie in A dispari che sono figli sinistri 2.Applica il rake in parallelo alle foglie in A dispari che sono figli destri 3.A = A pari
Algoritmi Paralleli e Distribuiti a.a. 2008/09 3 Implementazione Per realizzare il Passo 1: Calcola la numerazione inorder di T tramite il TDE (è possibile perché lalbero è 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 nellalbero originale è minore (maggiore) di quella del padre; Per aggiornare A lavorano solo i processori di indice pari ed assegnano A[i/2] = A[i].
Algoritmi Paralleli e Distribuiti a.a. 2008/09 4 Analisi 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 dimezza, quindi in O(log n) iterazioni lalgoritmo termina. Il costo complessivo è quindi O(n log n) su PRAM EREW con n processori.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 5 Albero delle espressioni Data unespressione aritmetica, si associ alle foglie di un albero binario 0/2 le costanti dellespressione e ai nodi interni le operazioni binarie. Se lalbero delle espressioni è bilanciato, con costo O(n log n) si eseguono in parallelo le operazioni richieste da ogni nodo, livello per livello, fino a generare il risultato alla radice (esempio a sx). Se lalbero non è bilanciato il tempo parallelo richiesto può anche essere lineare (esempio a dx). ab + cd + ef gh + + ((a + b) (c d)) + ((e f) + (g + h)) gh f + e d + c b + a a (b + (c (d + (e (f + (g h))))))
Algoritmi Paralleli e Distribuiti a.a. 2008/09 6 Valutare una espressione Se lalbero 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 a v X+b v con a v e b v costanti e X indeterminata che rappresenta il valore non noto della sottoespressione al nodo v. Ogni nodo è caratterizzato dalla etichetta (a v,b v ), inizialmente pari a (1,0).
Algoritmi Paralleli e Distribuiti a.a. 2008/09 7 Invariante Si consideri il nodo u interno allalbero delle espressioni. Ad u è associato loperatore {+, } e letichetta (a u,b u ), ai figli di u, v e w, sono associate le etichette (a v,b v ), (a w,b w ), rispettivamente. Il valore della sottoespressione calcolata in u è dato da: val(u) = (a v val(v) + b v ) (a w val(w) + b w ) Si noti che a u e b u non appaiono nel calcolo di val(u) ma saranno presenti nel calcolo di val(p(u)).
Algoritmi Paralleli e Distribuiti a.a. 2008/09 8 Algoritmo per valutare unespressione 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 assegna letichetta (1,0) a tutti i nodi di T Passo 2: si applichi lalgoritmo di contrazione con laggiunta della condizione che ogni singola operazione di rake preservi linvariante Passo 3: su T' di radice r con operatore e foglie u e v contenenti le costanti c u e c v, rispettivamente, si calcoli: val(T') = (a u c u + b u ) (a v c v + b v ) = val(T) I passi 1 e 3 richiedono tempo parallelo costante. Quindi il tempo totale dipende dal passo 2.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 9 Come loperazione di rake preserva linvariante Loperazione di rake applicata ad una foglia u con fratello w, elimina u e p(u). Al fine di mantenere la validità dellinvariante, il contributo di u e p(u) al computo totale (ovvero a u, a p(u), b u, b p(u) ) deve essere conglobato in w (ovvero in a w e b w ). Poiché val(p(u)) = (a u c u +b u ) p(u) (a w X+b w ), il contributo di p(u) al computo di val(p(p(u))) è dato da: a p(u) val(p(u)) + b p(u) = a p(u) ((a u c u +b u ) p(u) (a w X+b w )) + b p(u) da cui si possono calcolare i nuovi valori per w: Quindi il passo 2 resta dominato dal costo computazionale del rake. cucu w w (a w',b w' ) (a w,b w ) (a p(u),b p(u) ) (a u,b u ) p(u) = + p(u) = a' w =a p(u) a w a p(u) (a u c u +b u ) a w b' w =a p(u) (a u c u +b u +b w ) + b p(u) a p(u) (a u c u +b u ) b w + b p(u)
Algoritmi Paralleli e Distribuiti a.a. 2008/09 10 Esempio di calcolo despressione Input: albero che corrisponde allespressione inizialmente (a v, b v ) = (1,0) per ogni nodo ((2+(3 (4+5))) 3)+(((5+2) 2)+(7 (1+1))) = 115
Algoritmi Paralleli e Distribuiti a.a. 2008/09 11 Esempio di calcolo despressione Si numerano le foglie e si esegue il rake su quelle di numerazione dispari, prima quelle che sono figli sinistri e poi quelle che sono figli destri (1,5) (1,1) (3,0) (2,10) (1,1)(3,15)
Algoritmi Paralleli e Distribuiti a.a. 2008/09 12 Esempio di calcolo despressione (2,10) (1,1)(3,15) (1,1) (3,15) (1,14) (1,1) (1,14) (1,27) (1,1) (1,14)(3,81) (1,1) (1,14)(3,81) (7,21)(3,81) ( ) + ( ) = 115