如何检查给定的生成树是否为MST

时间:2014-12-20 08:24:03

标签: algorithm tree minimum-spanning-tree

假设我们得到了一个图G和它的生成树T.我们如何检查这个生成树是否是MST?

我建议对于每个边缘不是T的所有边缘j在从i的一端到另一端的T的唯一路径上我们必须有w_i> = w_j

1 个答案:

答案 0 :(得分:1)

您要检查对于不在MST中的每个边(u,v),在MST中从u到v的路径没有重量大于(u,v)的边。对于树中的单个顶点,您可以使用单个BFS或DFS在所有其他节点的路径上查找最大权重边,因此这将给出O(n 2 )算法(n次O(n)搜索)。你可以通过不从头开始为每个顶点做得更好。也就是说,仅计算MST并查看所有边缘权重的总和是否相同可能更有效。正如@Niklas在评论中所提到的,有一些线性时间方法可用于验证MST,但它们似乎更为复杂。