La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 17/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.

Presentazioni simili


Presentazione sul tema: "Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 17/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI."— Transcript della presentazione:

1 Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 17/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI

2 Inserire una sequenza breve in un vettore ordinato Siano X=(x 1, x 2, …, x n ) un vettore ordinato e Y=(y 1, …, y m ) una sequenza di valori qualunque tale che m=O(n s ) con 0s1. Utilizziamo un numero di processori pari ad N= n/m = (n 1-s ). È possibile inserire ciascun valore y i nella sequenza X determinando rango(y i :X) in tempo O(m log 2 (n+2) / log 2 (N+1)) Quando m << n (ovvero se s 0) si ha N=O(n) e tempo O(1). Quando m=O(n) (s 1) si ha N=O(1) e tempo O(n log n). Algoritmi Paralleli e Distribuiti a.a. 2008/09 2

3 Algoritmo di fusione tramite rango Input: A=(a 1, a 2, …, a n ), B=(b 1, b 2, …, b m ), ordinati in modo crescente (m n ). Output: C=(c 1, c 2, …, c n+m ), ordinato in modo crescente. Idea: si partiziona il vettore B in (m / log m) blocchi consecutivi di log(m) elementi ciascuno B 0, B 1, … e si crea il vettore Y costituito dallinsieme degli elementi massimi dei blocchi. Si calcola rango(Y:A)=(r 1, r 2, …, r m ) e si divide A in blocchi consecutivi A 0 =(a 1, …, a r 1 ), A 1 =(a r 1 +1, …, a r 2 ), … Poiché A 0 e B 0 contengono elementi minori di tutti gli altri elementi di A e B, fondendo A 0 e B 0 tramite rango si ottiene la sequenza ordinata dei primi elementi di C. Iterando il ragionamento su tutte le coppie A i e B i si ottiene lintero vettore C ordinato. Algoritmi Paralleli e Distribuiti a.a. 2008/09 3

4 4 Dettaglio del partizionamento begin P 0 :r [ 0 ] = 0 r [ m / log m ] = n for i = 1 to m/log m -1 pardo P i :r [ i ] = rango(B[ i * log m -1] : A) for i = 0 to m/log m -1 pardo P i : B i = (B[ i * log m ], …, B[ (i+1) * log m -1]) A i = (A[ r [ i ] ], …, A[ r [i+1] -1]) end

5 Algoritmi Paralleli e Distribuiti a.a. 2008/09 5 Esempio di applicazione dellalgoritmo di fusione A = [ 4, 6, 7, 10, 12, 15, 18, 20 ] B = [ 3, 9, 16, 17 ] rango(9:A) = 3 rango(17:A) non serve r = [ 0, 3, 8 ] B 0 = [ 3, 9 ] B 1 = [ 16, 17 ] A 0 = [ 4, 6, 7 ] A 1 = [ 10, 12, 15, 18, 20 ] log m

6 Algoritmi Paralleli e Distribuiti a.a. 2008/09 6 Complessità dellalgoritmo di fusione Per completare la fusione di A e B (cioè per calcolare la posizione di ciascun valore nel vettore finale) si dovranno fondere tutte le coppie di sottovettori (A i, B i ). Utilizzando linserimento di una seq. breve in un vettore ordinato ciò si può fare in O(log m) tempo con |A i | processori. Quindi con n processori tutte le coppie possono essere fuse contemporaneamente in tempo logaritmico. Bisogna inoltre tener conto di quanti elementi ci sono in tutti gli A j e B j (j<i) per posizionare gli elementi di A i e B i nel vettore risultante C: il valore r[i] (indice di inizio di A i ) da il contributo totale degli A j ; i * log m è il contributo di tutti i B j. Il tempo totale richiesto è O(log n) con n processori su PRAM CREW. Esistono anche algoritmi che riducono la complessità temporale a O(log log n) portando quindi il costo totale a O(n log log n).

7 Algoritmi Paralleli e Distribuiti a.a. 2008/09 7 Idea dellalgoritmo di Cole Si è visto che il tempo parallelo dellalgoritmo di ordinamento tramite fusione è condizionato da un fattore log n dovuto allaltezza dellalbero binario, quindi per migliorare un tale algoritmo bisogna incidere sul computo della operazione di fusione. Questo computo, a tuttoggi, pur richiedendo tempi paralleli molto limitati, non riesce ad essere ridotto ad una costante, impedendo così la ottimalità dellalgoritmo di ordinamento. Lidea di Cole per risolvere questo problema è consistita nel rinunciare al calcolo delle K fusioni ad ogni livello, ma di accontentarsi solo del calcolo di alcuni valori a campione dei K vettori fusione. Questi valori campione, di numero costante, richiedono tempo parallelo O(1) per essere calcolati. Il calcolo di nuovi campioni ad ogni livello permette di arrivare al vettore fusione alla radice, garantendo un tempo parallelo logaritmico per lintero algoritmo di ordinamento.


Scaricare ppt "Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 17/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI."

Presentazioni simili


Annunci Google