Algoritmul+Kucera

http://www.ecdl.tuiasi.ro/ro/academice/curricula/programe/ingineri/pa_503_alcp.pdf • Algoritmul lui Kucera, dezvoltat pentruo masina CREW-PRAM, pentru problema drumurilor minime poate fi considerat de baza. • Algoritmul utilizeaza ca date initiale matricea Dn×n a ponderilor muchiilor unui graf G = (V,E), (V = {1,...,n}, E Ì V×V).  "i,j Î {1,...,n} : D[i,j] = dij, daca (i,j) Î E ¥, daca (i,j) Ï E unde dij este distanta dintre nodurile i si j (dii = 0). • Rezultatul executiei algoritmului lui Kucera este o matrice Cn×n: C[i,j] = 0, daca i = j min[((i,i1,…,ik,j)) || drum in G] { D[i,i1]+D[i1,i2]+¼+D[ik,j]}, daca i ¹ j for all i,j:1 £ i,j £ n par do C[i,j] = D[i,j]; repeat log n times for all i,j,k: 1 £ i,j,k £ n par do w[i,k,j] = C[i,k]+C[k,j]; for all i,j: 1 £ i,j £ n par do C[i,j] = min{C[i,j],mink{w[i,k,j]; k = 1,...,n}}; end 153 Complexitatea • Operatia min{C[i,j],mink{w[i,k,j]; k = 1,...,n}} poate fi implemntata prin procedura sum, ,,Å” fiind în acest caz operatorul de minimizare. • Daca se utilizeaza modelul CREW-PRAM, complexitatea timp a acestei operatii este O(log n) iar numarul de procesoare utilizate este n/logn. • Rezulta pentru algoritm un timp de executie T(n)=O(log2n) si un necesar de procesoare de O(n3/logn). • Pe o masina CRCW-PRAM, operatia de minimizare anterior mentionata se poate efectua în timp constant cu n2 procesoare. • Consecinta este reducerea timpului de executie la O(logn), rezultând însa o crestere a numarului procesoarelor la O(n4). Definirea problemei algebrice a drumurilor • Inlocuind în algoritmul lui Kucera: D cu A (matricea de adiacenta), + cu “si logic”, min cu “sau logic”, se obtine un algoritm pentru problema închiderii tranzitive. Mentionam ca pentru un graf G, problema închiderii tranzitive consta în determinarea unei matrice Cn×n: C[i,j]= 1, daca exista î n G un drum de la i la j 0, altfel • Generalizând, problema algebrica a drumurilor poate fi definita astfel: Dat fiind un graf ponderat G = (V,E,w), unde w:E® H, iar (H,Å,Ä) formeaza un inel cu unitate, sa se determine matricea Cn×n astfel încât C[i,j] = Å w(p) [p drum de la i la j] • Obs. Daca p = i0i1...ik-1i k atunci w(p) = Äl = 0 k-1 w[il,il+1]. 154 Implementari sistolice • Foarte numeroase sunt abordarile sistolice ale problemei algebrice a drumurilor. • Remarcabila este implementarea algoritmului lui Kleen pe o retea de tip plasa data de Y. Robert si D. Trystram, 1986 • Parametrii algoritmului sunt T = 5n-2 si A Î O(n2).
 * Algoritmul lui Kucera**
 * Pseudocod pentru Algoritmul lui Kucera**