图有两个/三个不同的最小生成树?


15

我试图找到一种有效的方法来检测给定图G是否具有两个不同的最小生成树。我还试图找到一种方法来检查它是否具有3个不同的最小生成树。我曾经想过的天真的解决方案是运行一次Kruskal算法,然后找到最小生成树的总权重。稍后,从图中移除一条边并再次运行Kruskal算法,并检查新树的权重是否为原始最小生成树的权重,因此对图中的每条边也是如此。运行时是O(| V || E | log | V |),这一点都不好,我认为有更好的方法来执行。

任何建议都会有所帮助,在此先感谢


知道这样的算法会很高兴,但是它不能解决当前的问题
itamar

2
当且仅当(1)将V G 划分为两个子集,并且每个子集中有一个端点的最小权重边是唯一的,并且(2)最大权重,图将具有唯一的最小生成树。G的任何循环中的边都是唯一的。GVGG
Juho

这些问题二是否已经回答了您的问题?
Juho

有关如何在找到第二好的MST的信息,请参阅CLRS中的问题23-1 。Øñ2
卡夫

Answers:


7

Kapoor&Ramesh(正确的SIAM J. Comput。版本免费(?)个人网站版本)提供了一种算法,用于枚举加权图和非加权图中的所有最小生成树。

我对基本概念的理解是,您先从一个MST开始,然后交换沿图形周期分布的边(只要权重正常,您就用一个已知的边替换了一个边,您会重新连接树) 。

对于加权情况下,它们给出一个运行时间列出的所有最小生成树其中Ñ是这样的生成树的数目。它按权重增加的顺序对它们进行枚举,而我目前(对课程的了解)表明,在生成一定数量的树后终止算法是完全可行的(因为它只是从MST开始并顺序生成)。Øñ|V|ñ


在这种情况下,一旦我们知道有不止解,我们希望尽早中止算法。该算法允许吗?ķ
拉斐尔

1
@Raphael,我还没有时间真正去了解它(是的,是作业标记),但是据我的粗略理解,应该是可能的-它始于一些MST,然后从中生成一个MST。
路加·马蒂森

1
@SaeedAmiri:“ 此类生成树的数量”表示“ 最小生成树的数量”,而不是“生成树的数量”。如果所有生成树都是最小生成树,则输入图是完整的,并且所有边具有相等的权重。ññ-2
JeffE

1
本文同时考虑了加权图和未加权图,因此您都是正确的;)。我还认为,该算法允许在生成所需的树数之后停止运行,因此对于OP而言,将其降至。同样,我需要一些空闲时间以使外观更好。Ø|V|
路加·马西森

1
快速阅读后,加权算法将以递增的权重顺序生成树(显然是从MST开始)。因此,应该出于OP的目的。
路加·马西森

2

可以证明,Kruskal算法可以找到每一个最小的生成树。看到这里

因此,您可以执行Kruskal,并且每当有多个边可供选择时,就可以执行分支。一旦分支了次,您就会知道至少有k个不同的最小生成树。ķķ不幸的是,多个分支可能会通过以不同顺序添加相同权重的边来生成同一棵树,因此如果没有进一步的工作/了解,这将无济于事。


5
不能。如果您必须一步一步在边之间进行选择,则可能是这k个边在所有生成树中。举个例子只是一个ķ 1 5星级体重1第一步的所有边缘,需要在5个棱中进行选择等,但显然只有一个生成树。也许将具有相同权重的边的数量计算到生成树中所包括的被忽略的边的数量是有帮助的?有趣的问题...ķķķ15
冯布兰德

@vonbrand好点。当然,我们可以继续完成计算的所有分支,但是运行时间由生成树的数量决定,生成树的数量可能是指数的。
拉斐尔

1

要查看是否有多个MST,请考虑例如Kruskal算法。它可以构造不同的MST的唯一方法是,当有多个具有相同权重的MST时,通过选择另一个边缘来消除边缘。但是那些重量相同的边缘可能被排除了,因为它们形成了一个边缘较轻的循环...

因此,您应该运行Kruskal算法,并且当要考虑多个具有相同权重的边时,添加所有不创建循环就可以添加的边。如果存在剩余此权重的边,并且没有关闭任何权重较低的边(之前已添加)的循环,则存在多个MST。检查是否确实有2个或3个或更多,等等看起来要困难得多...


0

修改Kruskal算法:在对边缘进行排序时,以相等的权重对边缘进行聚类。现在,在按顺序处理边缘的时候,每次到达新的群集时,首先要分别检查所有边缘,并从群集中删除那些将关闭循环的边缘(给定在群集之前构建的对象)。然后,运行群集中的所有其余边缘,现在尝试将它们添加到MST中。如果它们中的任何一个结束一个周期,则这一定是由于之前插入的同一群集的其他边缘,这意味着您有多个MST。

该解决方案保留了Kruskal算法的复杂性,只是增加了处理每个边缘的时间。


您似乎声称可以在恒定时间内处理整个群集,但是我看不到任何明显的常量限制群集大小。您能否详细说明该阶段的完成方式?
David Richerby
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.