给定具有权重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 |登录| E |),其中| E |是边数。
如何选择第一条边?显然,在你的例子中,如果你从重量7的边缘开始,你不能找到最佳解决方案。 – Henrik
排序我们得到的边缘2,3,5,7 2和3之间的差异是1,这是通过选择两个边缘可以达到的最小差异。所以首先我选择2,3然后我选择相应的。 – IronMan007
那么,如果权重是1,2,100,102,104,108,您可以从1和2开始选择?我敢肯定,你可以从中构建一个反例。 – Henrik