1、算法概述
用于生成连通有权无向图的最小代价生成树。

2、算法步骤
步骤一:T是边的集合,其初始状态为空;

步骤二:从原图剩余边中选取一条最小代价的边;

步骤三:看其是否与当前T中其它边构成环路;

步骤四:如果未构成环路,则加入T中;否则,丢弃该边;

步骤五:是否还有剩余边,如果有则返回步骤二,否则,程序结束。


证明Kruskal算法生成最小代价生成树。

证明1:

https://blog.csdn.net/nimingdenglu/article/details/7701484

分两步来证明:
(1)Kruskal算法一定能得到一个生成树;
(2)该生成树具有最小代价。
证明如下:
(1)假设该算法得到的不是生成树,根据树的定义,就有两种情形,第一是得到的图是有环的,第二就是得到的图是不连通的。由于算法要求每次加入边都是无环的,所以第一种情形不存在,下面就只需证明第二种情形不存在即可。
假设得到的图是不连通的,则至少包含两个独立的的边集,假设其中一个为E,则E中边对应的所有点都无法到达其它边集对应的点(否则,根据算法定义,相应的联系边应被加入树中),而这与原图是连通的产生矛盾,因此,第二种情形也不可能存在。得证。
(2)假设图有n个顶点,则生成树一定具有n-1条边.由于图的生成树个数是有限的,所以至少有一棵树具有最小代价,假设该树为U。先做出如下假设:
1)得到的树为T。

2)U和T中不同的边的条数为k,其它n-1-k条边相同,这n-1-k条边构成边集E。
3)在T中而不在U中的边按代价从小到大依次为a1,a2,...,ak。

4)在U中而不在T中的边按代价从小到大依次为x1,x2,...,xk。

现在我们通过把U转换为T(把T的边依次移入U中),来证明U和T具有相同代价。
首先,我们将a1移入U中,由于U本身是一棵树,此时任意加一条边都构成回路,所以a1的加入必然产生一条回路,且这条回路必然包括x1,x2,...,xk中的边。(否则a1与E中的边构成回路,而E也在T中,这与T中无回路矛盾。)
在这个回路中删除属于x1,x2,...,xk且代价最大边xi构成一个新的生成树V。
假设a1代价小于xi,则V的代价小于U,这与U是最小代价树矛盾,所以a1不可能小于xi。
假设a1大于xi,按照Kruskal算法,首先考虑代价小的边,则执行Kruskal算法时,xi应该是在a1之前考虑,而a1又在a2,...,ak之前考虑,所以考虑xi之前,T中的边只能是E中的边,而xi既然没加入树T,就说明xi必然与E中的某些边构成回路,但xi和E又同时在U中,这与U是生成树矛盾,所以a1也不可能大于xi。
因此,新得到的树V与T具有相同代价。
依次类推,把a1,a2,...,ak的边逐渐加到U中,最终得到的树(T)与U代价相同。
证明结束。


证明2:根据算法第四版,通过贪心算法证明。

Kruskal算法的基础是贪心算法(greedy algorithm)。

假设加权连通无向图含有V个顶点,有贪心算法生成最小生成树的步骤是:

步骤一:找到一种切分(cut),它产生的横切边(crossing edge)均不为黑色。

步骤二:将它权重最小的横切边连接。

步骤三:重复步骤一、二直到连接了V-1个横切边。

其中图的一种切分是将图中所有顶点分为两个非空不重叠的集合,横切边是一条连接两个不同集合中的两个顶点的边。

实现贪心算法中需要定义的切分。如Prim算法定义的切分就很简单:Prim算法每次连接的是连接已经在树中的顶点、不在树中、且权值最小的边,也就是把不断生长的树和它的补集作了一个切分。

Kruskal算法定义的切分相对抽象。

假设Kruskal算法即将连接的边所连接的两个顶点是v-w,那么定义切分的一个集合是所有和v联通的顶点,另一个集合是它的补集。如下图中即将连接的边是0-2,切分的集合是{0,1,7}和其补集。这个切分具有性质:

(1)其横切边没有被连接过,否则和切分定义矛盾;

(2)将连接的横切边是(a)未被连接的边中(b)不会与已有的树形成环  的权值最小边。这是因为Kruskal算法按权值由小到大检查所有的边,所有权值更小的边都已经被连接或者因为会形成环而抛弃了。


证明Kruskal算法生成最小代价生成树

综上Kruskal算法是一种贪心算法,因为贪心算法生成最小权值生成树(证明略),所以Kruskal算法生成最小权值生成树。

相关文章:

  • 2021-09-03
  • 2022-01-03
  • 2022-01-01
  • 2021-09-01
猜你喜欢
  • 2021-10-04
  • 2021-05-23
  • 2021-09-30
  • 2021-10-26
  • 2021-09-25
  • 2022-03-02
  • 2021-07-16
相关资源
相似解决方案