krushkal算法中要考虑的最大和最小边数是多少,并举例说明两种情况。
我认为是因为Krushkal算法用于查找最小生成树,所以最大边数是(V-1),其中V是顶点数。再添加一条边将导致图中出现一个循环。我们怎样才能获得最低价值?
答案 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 - 2
和1
节点之间的V - 2
边缘的成本为1,这在图中是最小的。这些将首先被选中。现在让节点k
成为不属于选定边的节点,因此不在图中。节点k
和节点1
之间的边缘成本最高。这将导致它被检查并最后添加到MST,迫使算法在构建MST之前检查所有O(V^2)
边缘。
请记住,Kruskal的算法按成本的递增顺序处理边缘,如果添加到我们正在构建的MST中,则拒绝将形成循环的边缘。