我知道可以使用DFS在O(| V | + | E |)中更新它,但是可以在O(| V |)中更新吗?
编辑:如果无法做到这一点,O(| V | + | E |)算法到底有多精确?
答案 0 :(得分:1)
更新图形的最小生成树(MST)不限于将新顶点连接到现有MST。还应该验证初始MST中使用的边缘仍然是连接所有顶点的最便宜的方式。在某些情况下,v k 可能是这样一个节点,它可以检修图G的整个现有MST。新的顶点和随之而来的边缘可能形成一种更便宜的连接方式。图的顶点,因此,初始MST中的一些(或所有)边可能变成而不是最便宜的。
可以相当容易地构建一个这样的案例。考虑初始图G =(V = {1,2,3},E = {(1,2),(2,3),(1,3)})其中每条边的权重为100.然后引入一个顶点4,以及从4到另外每个顶点的边,每个顶点都有权重1.G的初始MST将具有E的任意两个元素,但是在添加新节点之后,MST将完全由不同的边缘。
也许一个聪明的数据结构可能会比O(| E |)产生更好的时间复杂度,但需要检查每个边缘的有效性(即它们是否仍然是连接所有顶点的最便宜的方式)初始MST以及新添加的边缘意味着时间复杂度取决于| E |的大小。一个有效的想法是,初始MST可以提供有用的信息,可以帮助扩展它以覆盖具有较小时间复杂度的新顶点。但是,MST的定义在很大程度上依赖于图形本身,并且更新图形可能使所有初始MST无效,使其指示的关于图形的信息无效。结果,虽然我还没有在这里提供一个数学证明,但我认为当一个新节点(及其边缘)添加到一个MST时,我不认为有更新MST的O(| V |)算法。曲线图。