Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 给定图中的旧最小生成树,是否有一个O(| V |)算法用于向最小生成树添加新节点?_Algorithm_Graph_Tree - Fatal编程技术网

Algorithm 给定图中的旧最小生成树,是否有一个O(| V |)算法用于向最小生成树添加新节点?

Algorithm 给定图中的旧最小生成树,是否有一个O(| V |)算法用于向最小生成树添加新节点?,algorithm,graph,tree,Algorithm,Graph,Tree,我知道它可以通过使用DFS在O(| V |+| E |)中更新,但是否可以在O(| V |)中更新 编辑:如果这是不可能的,O(| V |+| E |)算法究竟如何工作?更新图的最小生成树(MST)不限于将新顶点连接到现有的MST。还应验证初始MST中使用的边仍然是连接所有顶点的最便宜的方法。在某些情况下,vk可能是这样一个节点,它可以彻底检查图G的整个现有MST。新的顶点及其附带的边可能形成连接图顶点的更便宜的方法,因此,初始MST中的一些(或全部)边可能不是最便宜的 一个这样的案例可以相当容

我知道它可以通过使用DFS在O(| V |+| E |)中更新,但是否可以在O(| V |)中更新


编辑:如果这是不可能的,O(| V |+| E |)算法究竟如何工作?

更新图的最小生成树(MST)不限于将新顶点连接到现有的MST。还应验证初始MST中使用的边仍然是连接所有顶点的最便宜的方法。在某些情况下,vk可能是这样一个节点,它可以彻底检查图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无效,从而使它指示的关于图的信息变得无用。因此,尽管我在这里没有提供确切的数学证明,但我认为在向图中添加新节点(及其边)时,没有O(| V |)算法来更新MST