bfs_edges#

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

从源节点开始,迭代宽度优先搜索(BFS)中的边。

参数:
GNetworkX 图
source节点

指定宽度优先搜索的起始节点;此函数仅迭代从此节点可达的分量中的边。

reversebool, 可选

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

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

指定最大搜索深度

sort_neighbors函数 (默认=None)

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

生成:
edge: 包含两个节点的元组

生成宽度优先搜索产生的边。

注意

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

基于 D. Eppstein 于 2004 年 7 月在 PADS [1] 中实现的宽度优先搜索;根据 [2] 中的描述修改以允许深度限制。

参考

示例

获取宽度优先搜索中的边

>>> 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]

其他后端也实现了此函数

cugraphGPU 加速后端。

sort_neighbors 参数尚未支持。