bfs_beam_edges#

bfs_beam_edges(G, source, value, width=None)[source]#

在束搜索中迭代边。

束搜索是一种广度优先搜索的泛化形式,其中仅将当前节点的“最佳” *w* 个邻居加入队列,其中 *w* 是束宽度,“最佳”是应用特定的启发式方法。一般来说,束宽度较小的束搜索可能不会访问图中的每个节点。

注意

width=Nonewidth 大于图的最大度时,此函数相当于 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)]