find_negative_cycle#
- find_negative_cycle(G, source, weight='weight')[source]#
如果存在,则返回总权重为负的环。
使用 Bellman-Ford 算法寻找最短路径。如果存在负权环,该算法会停止。此函数在此基础上继续,并返回找到的负权环。
该环由按顺序排列的节点列表组成。最后一个节点等于第一个节点以构成环。您可以在原始图中查找边的权重。对于多重图,相关边是节点对(2-元组)之间权重最小的边。
如果图中不存在负权环,则会引发 NetworkXError。
- 参数:
- GNetworkX 图
- source: 节点标签
寻找负权环将从该节点开始。
- weight字符串或函数
如果这是一个字符串,则通过此键对应的边属性访问边的权重(即,连接
u
到v
的边的权重将是G.edges[u, v][weight]
)。如果不存在这样的边属性,则边的权重假定为 1。如果这是一个函数,则边的权重是该函数返回的值。该函数必须接受三个位置参数:边的两个端点和该边的属性字典。该函数必须返回一个数字。
- 返回:
- cycle列表
找到的环中按顺序排列的节点列表。最后一个节点等于第一个节点以表示一个环。
- 引发:
- NetworkXError
如果未找到负权环。
示例
>>> G = nx.DiGraph() >>> G.add_weighted_edges_from( ... [(0, 1, 2), (1, 2, 2), (2, 0, 1), (1, 4, 2), (4, 0, -5)] ... ) >>> nx.find_negative_cycle(G, 0) [4, 0, 1, 4]