bfs_beam_edges#
- bfs_beam_edges(G, source, value, width=None)[source]#
在束搜索中迭代边。
束搜索是一种广度优先搜索的泛化形式,其中仅将当前节点的“最佳” *w* 个邻居加入队列,其中 *w* 是束宽度,“最佳”是应用特定的启发式方法。一般来说,束宽度较小的束搜索可能不会访问图中的每个节点。
注意
当
width=None
或width
大于图的最大度时,此函数相当于bfs_edges
的一个较慢版本。所有节点都将被访问,尽管报告边的顺序可能会有所不同。在这种情况下,value
没有效果 - 建议直接使用bfs_edges
。- 参数:
- GNetworkX 图
- source节点
广度优先搜索的起始节点;此函数仅迭代从此节点可达的分量中的边。
- value函数
一个函数,接受图中的节点作为输入,并返回一个实数表示其“好坏”程度。值越高表示在搜索过程中越有可能被优先访问。当访问新节点时,只将
value
最高的width
个邻居加入队列(按value
降序排列)。- widthint (默认值 = None)
搜索的束宽度。这是访问每个新节点时需要加入队列的邻居数量(按
value
排序)。
- 生成:
- 边
从
source
开始的束搜索中的边,以节点对的形式给出。
示例
例如,要在搜索过程中优先选择中心性更高的节点,请将
value
函数设置为返回节点的中心性值。>>> G = nx.karate_club_graph() >>> centrality = nx.eigenvector_centrality(G) >>> list(nx.bfs_beam_edges(G, source=0, value=centrality.get, width=3)) [(0, 2), (0, 1), (0, 8), (2, 32), (1, 13), (8, 33)]