generic_bfs_edges#
- generic_bfs_edges(G, source, neighbors=None, depth_limit=None)[source]#
广度优先搜索遍历边。
广度优先搜索从
source
开始,并通过neighbors
函数将新访问节点的邻居节点入队。- Parameters:
- GNetworkX 图
- source节点
广度优先搜索的起始节点;此函数仅遍历从该节点可达的连通分量中的边。
- neighbors函数
一个函数,接收新访问的图节点作为输入,并返回该节点的邻居节点的*迭代器*(不仅仅是列表),可以自定义排序。如果未指定,默认为
G.neighbors
方法,但通常可以是任何返回给定节点邻居的迭代器的函数,顺序不限。- depth_limitint, 可选(默认=len(G))
指定最大搜索深度。
- Yields:
- edge
从
source
开始的广度优先搜索中的边。
Notes
此实现来自 PADS,首次访问于2004年7月,当时该代码处于公共领域。允许深度限制的修改基于维基百科文章 “ 深度限制搜索”。
Examples
>>> G = nx.path_graph(7) >>> list(nx.generic_bfs_edges(G, source=0)) [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)] >>> list(nx.generic_bfs_edges(G, source=2)) [(2, 1), (2, 3), (1, 0), (3, 4), (4, 5), (5, 6)] >>> list(nx.generic_bfs_edges(G, source=2, depth_limit=2)) [(2, 1), (2, 3), (1, 0), (3, 4)]
neighbors
参数可以用于指定每个节点邻居的访问顺序。在以下示例中,我们修改默认邻居返回顺序,优先返回*奇数*节点:>>> def odd_first(n): ... return sorted(G.neighbors(n), key=lambda x: x % 2, reverse=True)
>>> G = nx.star_graph(5) >>> list(nx.generic_bfs_edges(G, source=0)) # 默认邻居排序 [(0, 1), (0, 2), (0, 3), (0, 4), (0, 5)] >>> list(nx.generic_bfs_edges(G, source=0, neighbors=odd_first)) [(0, 1), (0, 3), (0, 5), (0, 2), (0, 4)]