当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX bfs_edges用法及代码示例


本文简要介绍 networkx.algorithms.traversal.breadth_first_search.bfs_edges 的用法。

用法:

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

从源头开始,在广度优先搜索中迭代边。

参数

GNetworkX 图
source节点

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

reverse布尔型,可选

If True 反向遍历有向图

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

指定最大搜索深度

sort_neighbors函数

将给定节点的邻居列表作为输入的函数,并在这些邻居上返回 iterator,但具有自定义排序。

生成(Yield)

边:节点的 2 元组

产生广度优先搜索产生的边。

注意

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

基于 D. Eppstein 于 2004 年 7 月在 PADS [1] 中实现的广度优先搜索;进行修改以允许深度限制,如 [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]

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.traversal.breadth_first_search.bfs_edges。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。