bfs_edges#

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

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

参数
G网络X图表
source结点

指定广度优先搜索的起始节点;此函数仅迭代从该节点可到达的组件中的那些边。

reverse布尔值,可选

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

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

指定最大搜索深度

sort_neighbors功能

接受给定节点的邻居列表作为输入的函数,并返回 迭代器 超过这些邻居,但有定制的订单。

产量
边:节点的2元组

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

笔记

此函数的命名非常类似于 edge_bfs() 。区别在于, edge_bfs 生成边,即使它们延伸回已探索的节点,而该生成器生成由广度优先搜索(BFS)产生的树的边,因此如果它们延伸到已探索的节点,则不会报告任何边。这意味着 edge_bfs 报告所有边,同时 bfs_edges 仅报告由基于节点的BFS遍历的内容。还有一种描述是, bfs_edges 报告在BFS期间遍历的边 edge_bfs 按照浏览的顺序报告所有边。

基于广度优先的搜索在PADS中的实现 [1] 由D.Eppstein撰写,2004年7月;经过修改以允许深度限制,如 [2].

工具书类

1

Http://www.ics.uci.edu/~eppstein/PADS/BFS.py.

2

https://en.wikipedia.org/wiki/Depth-limited_search

实例

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

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