图算法

时间:2015-03-23 16:43:44

标签: algorithm graph minimum-spanning-tree

krushkal算法中要考虑的最大和最小边数是多少,并举例说明两种情况。

我认为是因为Krushkal算法用于查找最小生成树,所以最大边数是(V-1),其中V是顶点数。再添加一条边将导致图中出现一个循环。我们怎样才能获得最低价值?

2 个答案:

答案 0 :(得分:0)

N个顶点的树总是具有N-1个边。因此,在Kruskal算法中你必须考虑至少N-1个边缘。示例可以是树图。

答案 1 :(得分:0)

当您向MST添加V - 1边时,Kruskal的算法会停止,因此这是必须考虑的最小值。当图形的最低值V - 1边缘不形成循环时会发生这种情况,并且算法将逐个添加它们,之后它将停止。

例如,考虑一个包含成本1的边的完整图,该图在图中最小,在节点1和每个其他节点之间。使所有其他边缘的费用为2

最糟糕的情况是,在最终选择O(V^2)之前,必须检查每个边缘(其中有V - 1)。这意味着在添加最后一个边之前必须强制创建很多周期。

再次考虑一个完整的图表。节点V - 21节点之间的V - 2边缘的成本为1,这在图中是最小的。这些将首先被选中。现在让节点k成为不属于选定边的节点,因此不在图中。节点k和节点1之间的边缘成本最高。这将导致它被检查并最后添加到MST,迫使算法在构建MST之前检查所有O(V^2)边缘。

请记住,Kruskal的算法按成本的递增顺序处理边缘,如果添加到我们正在构建的MST中,则拒绝将形成循环的边缘。