Compute shortest path lengths and predecessors on shortest paths in weighted graphs.
The algorithm has a running time of O(mn) where n is the number of nodes and n is the number of edges.
Parameters : | G : NetworkX graph
source: node label :
weight: string, optional :
|
---|---|
Returns : | pred,dist : dictionaries
|
Raises : | NetworkXUnbounded :
|
Notes
The dictionaries returned only have keys for nodes reachable from the source.
In the case where the (di)graph is not connected, if a component not containing the source contains a negative cost (di)cycle, it will not be detected.
Examples
>>> import networkx as nx
>>> G = nx.path_graph(5, create_using = nx.DiGraph())
>>> pred, dist = nx.bellman_ford(G, 0)
>>> pred
{0: None, 1: 0, 2: 1, 3: 2, 4: 3}
>>> dist
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4}
>>> from nose.tools import assert_raises
>>> G = nx.cycle_graph(5)
>>> G[1][2]['weight'] = -7
>>> assert_raises(nx.NetworkXUnbounded, nx.bellman_ford, G, 0)