-
问题
在一个给定的无向图G=(V,E)中,(v,u)代表连接顶点v的边,而w(u,v)代表该边的权重,若存在T为子集且为无循环图,使得w(T)最小,则该T为G的最小生成树。 -
解析
Kruskal算法生成最小树的过程
过程分析:构造最小代价生成树T的Kruskal算法一次向T中加入一条边。在整个构造过程,一条条边按权值非递减的顺序一次次加入T,而且每次加入的边都不构成环路。由于G是连通图,有n>0个节点,所以最后T 中恰好包括n-1条边。 -
设计
T={};
While(T包含小于n-1条边&&E不空)
从E中选择最短代价边(U,V);
从E中删除(u,v);
If((u,v)不构成环路 int T)
添加(u,v)到T;
Else
丢弃(u,v);
If(T包含小于n-1条边)
Printf(“无生成树\n”);
4.源码
https://github.com/samfsrhv920/algorithm-analysis