networkx.algorithms.shortest_paths.weighted.bellman_ford_predecessor_and_distance
的用法。用法:
bellman_ford_predecessor_and_distance(G, source, target=None, weight='weight', heuristic=False)
计算加权图中最短路径的最短路径长度和前导。
该算法的运行时间为 ,其中 是节点数, 是边数。它比 Dijkstra 慢,但可以处理负边权重。
如果检测到负循环,您可以使用
find_negative_cycle()
返回循环并检查它。当存在负循环时,不会定义最短路径,因为一旦达到,路径可以永远循环以建立任意低的权重。- G:NetworkX 图
该算法适用于所有类型的图,包括有向图和多重图。
- source: node label:
路径的起始节点
- target:节点标签,可选
路径的结束节点
- weight:字符串或函数
如果这是一个字符串,则将通过带有此键的边属性访问边权重(即,连接
u
到v
的边的权重将为G.edges[u, v][weight]
)。如果不存在这样的边属性,则假设边的权重为 1。如果这是一个函数,则边的权重是函数返回的值。该函数必须准确地接受三个位置参数:一条边的两个端点和该边的边属性字典。该函数必须返回一个数字。
- heuristic:bool
确定是否使用启发式方法以希望可以忽略不计的成本及早检测负循环。
- pred, dist:字典
将节点键控的两个字典分别返回到路径中的前任和到源的距离。
- NodeNotFound
如果
source
不在G
中。- NetworkXUnbounded
如果 (di) 图包含负 (di) 循环,则算法会引发异常以指示存在负 (di) 循环。注意:无向图中的任何负权边都是负循环。
参数:
返回:
抛出:
注意:
边权重属性必须是数字。距离计算为遍历的加权边的总和。
返回的字典仅具有可从源访问的节点的键。
在(di)图不连通的情况下,如果不包含源的组件包含负(di)循环,则不会被检测到。
在 NetworkX v2.1 及更早版本中,源节点具有前任
[None]
。在 NetworkX v2.2 中,这更改为具有前任[]
的源节点例子:
>>> G = nx.path_graph(5, create_using=nx.DiGraph()) >>> pred, dist = nx.bellman_ford_predecessor_and_distance(G, 0) >>> sorted(pred.items()) [(0, []), (1, [0]), (2, [1]), (3, [2]), (4, [3])] >>> sorted(dist.items()) [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
>>> pred, dist = nx.bellman_ford_predecessor_and_distance(G, 0, 1) >>> sorted(pred.items()) [(0, []), (1, [0]), (2, [1]), (3, [2]), (4, [3])] >>> sorted(dist.items()) [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
>>> G = nx.cycle_graph(5, create_using=nx.DiGraph()) >>> G[1][2]["weight"] = -7 >>> nx.bellman_ford_predecessor_and_distance(G, 0) Traceback (most recent call last): ... networkx.exception.NetworkXUnbounded: Negative cycle detected.
相关用法
- Python NetworkX bellman_ford_path用法及代码示例
- Python NetworkX bellman_ford_path_length用法及代码示例
- Python NetworkX bethe_hessian_matrix用法及代码示例
- Python NetworkX binomial_graph用法及代码示例
- Python NetworkX boykov_kolmogorov用法及代码示例
- Python NetworkX bfs_edges用法及代码示例
- Python NetworkX biconnected_component_edges用法及代码示例
- Python NetworkX bfs_beam_edges用法及代码示例
- Python NetworkX biconnected_components用法及代码示例
- Python NetworkX bfs_predecessors用法及代码示例
- Python NetworkX bfs_successors用法及代码示例
- Python NetworkX bridges用法及代码示例
- Python NetworkX bfs_tree用法及代码示例
- Python NetworkX bridge_components用法及代码示例
- Python NetworkX bipartite_layout用法及代码示例
- Python NetworkX bidirectional_dijkstra用法及代码示例
- Python NetworkX negative_edge_cycle用法及代码示例
- Python NetworkX voronoi_cells用法及代码示例
- Python NetworkX numerical_edge_match用法及代码示例
- Python NetworkX inverse_line_graph用法及代码示例
- Python NetworkX LFR_benchmark_graph用法及代码示例
- Python NetworkX write_graph6用法及代码示例
- Python NetworkX DiGraph.__contains__用法及代码示例
- Python NetworkX average_degree_connectivity用法及代码示例
- Python NetworkX eulerian_circuit用法及代码示例
注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.shortest_paths.weighted.bellman_ford_predecessor_and_distance。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。