algorithm - 确定给定的加权图是否具有唯一的 MST

标签 algorithm graph-theory graph-algorithm minimum-spanning-tree

我正在寻找一种算法(或任何其他方式)来确定给定的加权图是否在 O(ElogV) 中具有唯一的 MST(最小生成树)?

我对权重一无所知(例如 weight(e1) != weight(e2)),如果此图只有一个唯一的 MST,则算法只返回 True,否则返回 False。

我开始使用 Kruskal 的算法,并检查 find-set(u)==find-set(v) 是否在 MST 中有一个圆圈,但这种方式并没有涵盖我认为的所有场景:(

非常感谢! 托默。

最佳答案

你可以在O(E log(V))中证明它是否有唯一的MST。

首先用标准技术找到最小生成树。

回到原来的树,将所有权重替换为数字对、原始权重,然后根据它是否在你找到的 MST 中替换为 0 或 1。这些数字对可以成对相加,也可以成对比较 - 就像普通数字一样。

现在使用标准技术找到具有这些有趣权重的最小生成树。您找到的 MST 将是与原始树共享 最少 边的 MST。因此,如果有多个 MST,您一定会找到一个不同的 MST。

关于algorithm - 确定给定的加权图是否具有唯一的 MST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17307893/

相关文章:

c++ - 为什么我们在C++中已经可以使用STL排序功能,还需要学习不同的排序算法?

c# - 我的算法中找到每对的总和不整除 K 的最大子集的缺陷在哪里?

java - 当你有小段时,如何显示每条可能采取的路径?

algorithm - 树中最长路径的线性时间算法

javascript - Javascript 中的传递性减少

javascript - 为什么我的斐波那契奇数总和给出不正确的结果?

c++ - 按位与等于 0 的整数对

查找可以在不受干扰的情况下打开多少个雷达塔的算法

c++ - 是否可以检查两个二叉树在线性时间内是否同构?

c# - 从向量列表创建所有可能组合的算法函数