Reputation: 31
Suppose we are given a directed graph G = (V, E)
with potentially positive and negative edge lengths, but no negative cycles. Let s ∈ V
be a given source
vertex. How to design an algorithm for the single-source shortest path problem that runs in time O(k(|V | + |E|))
if the shortest paths from s to any other vertex takes at most k edges
?
Upvotes: 3
Views: 424
Reputation: 2777
Here`s O(k(|V | + |E|)) approach:
Because any s-u shortest path is atmost k edges, we can end algorithm after k iterations over edges
Pseudocode:
for each vertex v in vertices:
D[v] := +ooD[s] = 0
repeat k times:
for each edge (u, v) with weight w in edges:
if D[u] + w < D[v]:
D[v] = D[u] + w
Upvotes: 1