bfs_predecessors#

bfs_predecessors(G, source, depth_limit=None, sort_neighbors=None)[source]#

返回从源节点开始广度优先搜索的前驱节点迭代器。

Parameters:
GNetworkX 图
source节点

指定广度优先搜索的起始节点

depth_limitint, 可选(默认=len(G))

指定最大搜索深度

sort_neighbors函数 (默认=None)

一个接受节点迭代器作为输入的函数,并返回具有自定义顺序的相同节点的可迭代对象。 例如, sorted 将节点按升序排序。

Returns:
pred: 迭代器

(节点, 前驱节点) 迭代器,其中 前驱节点 是广度优先搜索中从 源节点 开始的 节点 的前驱节点。

See also

bfs_tree
bfs_edges
edge_bfs

Notes

基于 http://www.ics.uci.edu/~eppstein/PADS/BFS.py 由 D. Eppstein 于 2004 年 7 月编写。允许基于维基百科文章 “ 深度限制搜索” 的深度限制的修改。

Examples

>>> G = nx.path_graph(3)
>>> dict(nx.bfs_predecessors(G, 0))
{1: 0, 2: 1}
>>> H = nx.Graph()
>>> H.add_edges_from([(0, 1), (0, 2), (1, 3), (1, 4), (2, 5), (2, 6)])
>>> dict(nx.bfs_predecessors(H, 0))
{1: 0, 2: 0, 3: 1, 4: 1, 5: 2, 6: 2}
>>> M = nx.Graph()
>>> nx.add_path(M, [0, 1, 2, 3, 4, 5, 6])
>>> nx.add_path(M, [2, 7, 8, 9, 10])
>>> sorted(nx.bfs_predecessors(M, source=1, depth_limit=3))
[(0, 1), (2, 1), (3, 2), (4, 3), (7, 2), (8, 7)]
>>> N = nx.DiGraph()
>>> nx.add_path(N, [0, 1, 2, 3, 4, 7])
>>> nx.add_path(N, [3, 5, 6, 7])
>>> sorted(nx.bfs_predecessors(N, source=2))
[(3, 2), (4, 3), (5, 3), (6, 5), (7, 4)]