(1)算法说明:
输入图G=(V,E,W), V={1,2,…,n} ; 输出图G的最小生成树T
设计思想:按照长度从小到大对边排序;依次考察当前最短边e,如果e与T的边不构成回路,则把e加入树T,否则跳过e直到选择了n-1条边为止。
(2)证明思路:
命题:对于任意n,算法对n阶图找到一棵最小生成树
归纳基础:证明n=2时算法正确
归纳步骤:
证明:假设算法对于n阶图是正确的,其中n>1,则对于任何n+1阶图算法也得到一棵最小生成树
(3)证明
①、归纳基础证明:
n=2时,图G只有一条边,显然当前最短边即为此边,故而图G的最小生成树就是G本身
②、归纳步骤证明:
已知算法对于n阶图正确,对于n+1个顶点的图G,短接最短边e,则获得n阶图G’,由已知假设可得G’的最小生成树为T’,再去除短接操作,将被短接的边e恢复原来长度,获得树T;
如果T不是G的最小生成树,则应当存在G的含边e的最小生成树T*,那么对T短接获得G’对生成树T-{e},那么此时应当有
W(T*-{e})= W(T*)-w(e)< W(T)-w(e)=W(T’)
显然,这与T’是G’的最小生成树矛盾,所以T*不存在,即T就是G的最小生成树,所以算法对n+1阶图成立
③、综上所述,对于任意n,算法对n阶图找到一棵最小生成树
(4)短接操作说明
任意n+1个顶点的图G,G中最小权边e={i,j},从G中短接i和j,得到图G’
如图所示,进行短接操作后的变化
Kruskal算法的正确性证明
最新推荐文章于 2022-12-14 20:34:50 发布