这是一个家庭作业问题。我不想要解决方案 - 我正在提供我一直在考虑的解决方案,并希望知道它是否良好或为什么存在缺陷。
我的动机是找到未加权的无向图的边缘不是任何MST的一部分。当几个边具有相同的值时,此问题才有意义,否则MST是唯一的。
我的想法来自Prim算法稍微改变 - 而不是在每一步(S和T是两组顶点)上添加从S到T的最小边缘 - 而是寻找最小边和相同值的更多边缘从S到达最小边缘的顶点。通过这样做,(所以我想)我们将收到一个图表,其中包含出现在任何MST中的所有边缘。如果这是正确的,我可以简单地将边缘列表与原始图形边缘列表进行异或,以找出任何MST中没有的边缘。
提前致谢。
答案 0 :(得分:1)
你是否添加了你找到的所有边缘(=那些重量相同的边缘)?如果是这样,你将失去一些优势:
考虑具有相等边缘成本的五边形。从1个节点开始,将2个边添加到2个相邻节点。在下一步中,您将添加从这两个相邻节点到2个断开连接的节点的2条边,您将完成。但是,所有边缘的成本相同,并且它们都在MST中有效。最后2个节点之间的边缘不包含在您的算法中,但可能是MST的一部分。
情况更糟。假设最后一个边缘成本较低。您的算法仍然不包含它,但它存在于每个MST中。您为每个步骤添加了几条边以考虑所有可能性,但添加这些边会更改后续步骤。