bfs_edges#

bfs_edges(G, source, reverse=False, depth_limit=None, sort_neighbors=None)[source]#

广度优先搜索从源节点开始遍历边。

Parameters:
GNetworkX 图
source节点

指定广度优先搜索的起始节点;此函数仅遍历从该节点可达的组件中的边。

reverse布尔值, 可选

如果为 True,则在反方向遍历有向图

depth_limit整数, 可选(默认=len(G))

指定最大搜索深度

sort_neighbors函数 (默认=None)

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

Yields:
edge: 2-元组节点

生成广度优先搜索得到的边。

Notes

此函数的命名与 edge_bfs() 非常相似。区别在于 edge_bfs 即使在边延伸回已探索的节点时也会生成边,而这个生成器生成的是由广度优先搜索(BFS)得到的树的边,因此如果边延伸到已探索的节点,则不会报告这些边。这意味着 edge_bfs 报告所有边,而 bfs_edges 仅报告节点基于 BFS 遍历的边。另一种描述是 bfs_edges 报告 BFS 期间遍历的边,而 edge_bfs 按探索顺序报告所有边。

基于 PADS [1] 中的广度优先搜索实现,由 D. Eppstein 于 2004 年 7 月编写;进行了修改以允许深度限制,如 [2] 所述。

References

Examples

获取广度优先搜索的边:

>>> G = nx.path_graph(3)
>>> list(nx.bfs_edges(G, 0))
[(0, 1), (1, 2)]
>>> list(nx.bfs_edges(G, source=0, depth_limit=1))
[(0, 1)]

获取广度优先搜索顺序的节点:

>>> G = nx.path_graph(3)
>>> root = 2
>>> edges = nx.bfs_edges(G, root)
>>> nodes = [root] + [v for u, v in edges]
>>> nodes
[2, 1, 0]