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].
工具书类
实例
要在宽度优先搜索中获取边缘,请执行以下操作:
>>> 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]