Код ниже взят из Введение в алгоритмы, 3-е издание .
BELLMAN-FORD(G,w,s)
1 INITIALIZE-SINGLE-SOURCE(G,s)
2 for i = 1 to |G.V|-1
3 for each edge (u,v) ∈ G.E
4 RELAX(u,v,w)
5 for each edge (u,v) ∈ G.E
6 if v.d > u.d + w(u,v)
7 return FALSE
8 return TRUE
Ниже следует из Алгоритмы, 4-е издание .
for (int pass = 0; pass < G.V(); pass++)
for (int v = 0; v < G.V(); v++)
for (DirectedEdge e : G.adj(v))
relax(e);
Кажется, единственное отличие - это количество проходов.
for i = 1 to |G.V|-1
и
for (int pass = 0; pass < G.V(); pass++)
Какой из них прав?