Algorithm 我发现了一种在O(E/V)中计算多个mst的算法。这个可以出版吗?

Algorithm 我发现了一种在O(E/V)中计算多个mst的算法。这个可以出版吗?,algorithm,data-structures,time-complexity,graph-algorithm,Algorithm,Data Structures,Time Complexity,Graph Algorithm,假设您使用Kruskal或Prim算法来计算第一个MST,并且您希望检查是否存在其他MST。我可以在O(E/V)时间内完成 该算法使用优先级队列(可以在O(N)中构造)。Kruskal和Prim已经使用优先级队列,但它们比下面列出的线性时间算法慢 我知道已经有算法可以在线性时间内找到单个MST: 随机算法可以在线性期望时间内求解。[Karger,Klein和Tarjan,“寻找最小生成树的随机线性时间算法”,J.ACM,第42卷,1995年,第321-328页。] 如果权重为小整数,则可在线性

假设您使用Kruskal或Prim算法来计算第一个MST,并且您希望检查是否存在其他MST。我可以在O(E/V)时间内完成

该算法使用优先级队列(可以在O(N)中构造)。Kruskal和Prim已经使用优先级队列,但它们比下面列出的线性时间算法慢

我知道已经有算法可以在线性时间内找到单个MST:

  • 随机算法可以在线性期望时间内求解。[Karger,Klein和Tarjan,“寻找最小生成树的随机线性时间算法”,J.ACM,第42卷,1995年,第321-328页。]
  • 如果权重为小整数,则可在线性最坏情况下求解。[Fredman和Willard,“最小生成树和最短路径的跨二分法算法”,第31届IEEE会议,Comp.Sci.基金会,1990年,第719-725页。]
  • 否则,最佳解非常接近线性,但不是完全线性。确切的界限是O(m log beta(m,n)),其中beta函数有一个复杂的定义:最小的i使得log(log(log(…log(n)))小于m/n,其中日志嵌套i次。[Gabow,Galil,Spencer和Tarjan,在无向图和有向图中寻找最小生成树的有效算法,Combinatica,第6卷,1986年,第109-122页。]
我不确定这些算法是否使用优先级队列。这并不重要,因为我可以使用这些算法中的一个来查找O(N)中的第一个MST,然后在O(N)中构造一个优先级队列,然后在O(E/V)中查找所有其他MST。总的来说,这需要O(N)

我刚刚为一个课堂作业想出了这个算法。我的助教用来查找多个MST的算法是O(N^2)或O(N^3),所以他说我应该试着看看这是否可以发布

编辑:我意识到我的算法只能在O(E/V)时间内找到一些其他MST。 我说它会在O(E/V)时间内找到其他mst,因为这是从一个特定顶点(平均)迭代所有边所需的时间


编辑:我的证明有一个缺陷。很抱歉对这件事感到兴奋

当然,如果它是正确的,这将是一个很好的结果。作为一个简单的健全性检查,尝试在一个完整的图上运行它(有一条边连接每一对节点),所有边权重都设置为1。在这样一个具有
n
节点的图中,存在
n
最小生成树。虽然不成熟,但我怀疑您的算法是否能在
O(n)
时间中找到所有
n
树。但是祝你好运

不,它不能出版。对于树路径最大值问题(参见下面的引文),有一些已知的线性时间算法,给定一棵最小生成树,可以使用这些算法在线性时间内确定图中的其他边中哪些属于至少一棵最小生成树(=权重等于其端点之间路径最大值的边)。通过省略不属于最小生成树的边而获得的边子图中的每个生成树都是最小生成树

@incollection{
year={2010},
isbn={978-3-642-11408-3},
booktitle={Graph-Theoretic Concepts in Computer Science},
volume={5911},
series={Lecture Notes in Computer Science},
editor={Paul, Christophe and Habib, Michel},
doi={10.1007/978-3-642-11409-0_16},
title={An Even Simpler Linear-Time Algorithm for Verifying Minimum Spanning Trees},
url={http://dx.doi.org/10.1007/978-3-642-11409-0_16},
publisher={Springer Berlin Heidelberg},
author={Hagerup, Torben},
pages={178-189}
}

这个问题可能更适合于使用
N
V
,但在你的问题中不要随意交换这个符号。你是说你可以在线性时间内找到所有其他MST吗?不仅仅是像你在三个要点中列出的算法那样,每个MST的线性时间?你应该和你的教授谈谈rst.你说的“O(E/V)”是什么意思?你是说O(max(| E |,| V |)之类的东西吗?在你的例子中,有n个以上的生成树。每棵树都有n-1条边,其他分支可以是任意顺序的(不是必需的二叉树),这使得所有n个节点连接在一起,因此结果将是一个更大的数(我现在不能给出一个封闭形式的公式:)。在维基百科的具体数学书籍中,二叉树也有类似的例子,对于一个有n个顶点的完整图,Cayley的公式给出了生成树的数量,即n^(n− 2) @Phamtrong,你是对的。我没有想清楚。无论如何,这个例子应该说明,在线性时间内(至少乍一看)很难找到的最小生成树不仅仅是线性数。但我不想听起来令人沮丧,OP。