Bellman–Ford algorithm computes shortest paths from a single source
vertex to all of the other vertices in a weighted digraph
(negative weights allowed).
Time complexity: O(|V||E|) where V and E are the number of vertices and edges respectively.
Time complexity: O(|V||E|) where V and E are the number of vertices and edges respectively.
Example
var BellmanFord =
require('path-to-algorithms/src/graphs/shortest-path/bellman-ford');
var Edge = BellmanFord.Edge;
var bellmanFord = BellmanFord.bellmanFord;
var edges = [];
var vertexes = [
new Vertex(0),
new Vertex(1),
new Vertex(2),
new Vertex(3),
new Vertex(4)
];
edges.push(new Edge(0, 1, -1));
edges.push(new Edge(0, 2, 4));
edges.push(new Edge(1, 2, 3));
edges.push(new Edge(1, 3, 2));
edges.push(new Edge(3, 1, 1));
edges.push(new Edge(4, 3, -3));
edges.push(new Edge(1, 4, 2));
edges.push(new Edge(3, 2, 5));
// {
// parents: { '0': null, '1': 0, '2': 1, '3': 4, '4': 1 },
// distances: { '0': 0, '1': -1, '2': 2, '3': -2, '4': 1 }
// }
var pathInfo = bellmanFord(vertexes, edges, 0);
Methods
(static) bellmanFord(vertexes, edges, source) → {Object}
Computes shortest paths from a single source
vertex to all of the other vertices.
Parameters:
Name | Type | Description |
---|---|---|
vertexes |
Array
|
Vertices of the graph. |
edges |
Array
|
Edges of the graph. |
source |
Number
|
Start vertex. |
Returns:
- Type:
-
Object
Object with two arrays (parents and distances)
with shortest-path information or undefined if the graph
has a negative cycle.