Algorithm 在一个只有k条不同边代价的图上,有没有一种算法可以找到一棵时间为O(n logk)的最小生成树?
在斯基纳的算法设计书中,这种算法作为一个练习留给读者,据说它只是普里姆算法的一个修改(练习6-11)。有人能设计这样的算法吗?具有简单优先级队列的Prim是O(m+n lg n),其中m是边的数量,n是顶点的数量。如果您使用具有相同优先级的bucket条目(例如,使用链表),您将自动获得O(m+n lg k)Algorithm 在一个只有k条不同边代价的图上,有没有一种算法可以找到一棵时间为O(n logk)的最小生成树?,algorithm,Algorithm,在斯基纳的算法设计书中,这种算法作为一个练习留给读者,据说它只是普里姆算法的一个修改(练习6-11)。有人能设计这样的算法吗?具有简单优先级队列的Prim是O(m+n lg n),其中m是边的数量,n是顶点的数量。如果您使用具有相同优先级的bucket条目(例如,使用链表),您将自动获得O(m+n lg k) 好的,这种情况的最新技术是O(m),。是的,问题应该要求O(m+n log k)。很明显,ω(m)是一个下限,因为如果不检查所有的ω(m),我们甚至无法找到最低重量边 对于记录,约定是n表
好的,这种情况的最新技术是O(m),。是的,问题应该要求O(m+n log k)。很明显,ω(m)是一个下限,因为如果不检查所有的ω(m),我们甚至无法找到最低重量边 对于记录,约定是n表示顶点数,m表示边数 喜欢我的书:-)
史蒂文·斯基纳(Steven Skiena)我要说清楚,我认为问题中的O(n lgk)是错误的。事实上,我在斯基纳的书中找不到这样的练习,我在问题中加入了练习的内容。我不明白如果你用相同的优先级来存储条目,你怎么能从O(m+nlogn)到O(m+nlogk),优先级队列最多有k个元素。例如,在Java中,您可以使用树形图。@cstheoryuser:问题在Skiena的书中:Q.6-11.n=| V |根据我的理解,如果我们使用有界高度优先级队列(第374页,常量时间插入和find min),我们可以将此算法减少到O(m)。