Prim和Kruskal的算法都产生最小生成树。根据cut属性,对于这些算法,树的总成本将是相同的,但是这两种算法有可能给出具有相同总成本的不同MST,因为我们在面对多个选择时按字母顺序选择它。例如,我们比较max(source,dest),对于边A-> B和B-> C,我们比较A与A-> B和B与B-> C.
谢谢
答案 0 :(得分:3)
假设你的比较器处理两个边的成本相等并且具有相同的max(source,dest)字符的情况,它将永远不会声明任何两个边相等。对于存在多个MST的可能性,图中的至少两个边必须相等。因此,MST是唯一的,Prim和Kruskal的算法都会返回相同的结果。
另一方面,如果比较器声明边缘A-> B(成本1)和A-> C(成本1)相等,则算法可能会生成不同的MST,具体取决于他们首先考虑哪个边缘(A-> B或A-> C)。
答案 1 :(得分:0)
一个图肯定有可能具有多个MST,只要这些MST的不同表示具有相同的总权重即可。否则,总重量较低的一个将是真正的MST,另一个将不再是MST。
由于Prim和Kruskal的算法具有不同的步骤,因此它们可能会在实际遍历过程中选择相同权重的不同边,但最终仍以相同的总权重结束。
但是,如果您添加了在问题中陈述的限制(选择字母的第一个节点),则对于每个决策而言,Prim和Kruskal的MST应该是同一棵树,即使它们是相同的重量,Kruskal的和Prim的边缘都希望具有相同的边缘。