Breaking the Bellman-Ford Shortest-Path Bound
In this paper we give a single-source shortest-path algorithm that breaks, after over 60 years, the O(n · m) time bound for the Bellman-Ford algorithm, where n is the number of vertices and m is the number of arcs of the graph. Our algorithm converts the input graph to a graph with nonnegative weights by performing at most (√(n),√(m/ n)) calls to Dijkstra's algorithm, such that the shortest-path tree is the same for the new graph as that for the original. When Dijkstra's algorithm is implemented using Fibonacci heaps, the running time of our algorithm is therefore O(√(n)· m + n ·√(m n)). We also give a second implementation that performs few calls to Dijkstra's algorithm if the graph contains few negative arcs on the shortest-path tree.
READ FULL TEXT