给定一个权重为 w(e) 的加权无向图 G(v,e),找到边的集合,使得每对顶点 (u,v)∈G 是连通的(简而言之,spanning tree
),并且选择的权重范围边是最小的(或者最小权重和最大权重之间的差是最小的)。
我尝试了贪婪的方法,其中根据权重对边进行排序,然后在排序后的数组中选择连续边之间权重差异最小的两条边(g[index = current_left],g[index+1 = current_right]),随后我根据 (current_left,current_left- j
) 或 (current_right,current_right+ j
) 之间的最小差异向左或向右移动,其中j
递增直到我们找到具有至少一个未访问顶点的边。
例如:
这里我们可以得到的最小范围是通过选择权重为 {2,3,5} 的边,范围是 3。
请指出一个建议算法失败的测试用例,并建议一种算法来寻找这种生成树。
编辑:
预期时间复杂度为 O(|E|log|E|) 其中 |E| 是边数。