networkx.algorithms.traversal.breadth_first_search.bfs_edges

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

在从源代码开始的宽度优先搜索中迭代边。

参数
  • GNETWorkX图

  • 来源node )--指定宽度优先搜索的起始节点;此函数仅迭代可从该节点访问的组件中的那些边。

  • 颠倒可选的布尔 )--如果为真,则反向穿过有向图

  • depth_limitint, optional(default=len(G)) )--指定最大搜索深度

返回

边缘 --宽度优先搜索中的边生成器。

返回类型

generator

实际案例

要在宽度优先搜索中获取边缘,请执行以下操作:

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

提示

此函数的命名与bfs_edges非常相似。不同之处在于,“edge_bfs”生成边,即使它们延伸回已探索的节点;而“bfs_edges”生成树的边,该树的边是由广度优先搜索(bfs)生成的,因此如果它们延伸到已探索的节点,则不会报告任何边。这意味着“edge_bfs”报告所有边,而“bfs_edges”只报告由基于节点的bfs遍历的边。另一种描述是“bfs_edges”报告bfs期间遍历的边,而“edges_bfs”报告所有边的顺序都是按照它们被探索的顺序。

基于http://www.ics.uci.edu/~eppstein/pads/bfs.py。作者:D.Eppstein,2004年7月。根据维基百科的文章“深度限制搜索”修改允许深度限制。

参见

bfs_tree(), dfs_edges(), edge_bfs()