Documente Academic
Documente Profesional
Documente Cultură
Enunt: Fie G=(V, E) un graf neorientat, unde V are n elemente (n noduri) si E are m
elemente (m muchii) memorat prin matricea ponderilor. Sa se determine pentru orice
pereche de noduri u si v lungimea minima a drumului de la nodul u la nodul v.
Descriere Algoritm Serial: Algoritmul foloseste tehnica programarii dinamice. La pasul
k sunt calculate drumurile optime dintre u si v care folosesc ca noduri intermediare
nodurile din multimea {1, 2, ... k}.
Algoritm Serial
dist[u][v] =
end for
dist[u][u] = 0
end for
dist[u][v] = w(u,v)
end for
end for
end for
end for
Complexitate: Timpul de execuie al algoritmului Roy Floyd este determinat de cele 3
cicluri for imbricate. Fiecare execuie a if-urilor necesit un timp O(1), deci algoritmul se
3
execut n timp O( n ), unde n reprezint numrul de vrfuri a grafului (timpul de
execuie este independent de numrul de arce ale grafului).
dist[k][j])
dist[i][k])
Observam ca dist[i][k] si dist[k][j] nu-si modifica valoarea dupa executia unui pas k
din forul exterior.
Cum fiecare element d[i][j] depinde doar de elemente de pe linia si coloana k deducem
ca elementele matricii pot fi calculate in mod independent..
Algoritmul paralel
dist[u][v] =
end for
dist[u][u] = 0
end for
dist[u][v] = w(u,v)
end for
end for
end for
end for
end for
end for
http://www.cs.umsl.edu/~sanjiv/classes/cs5740/lectures/floyd.pdf