问题定义
输入:无向图G=(V,E),每条边有一个权重,另假设所有权值是不同的输出:一棵生成树,连接了所有顶点,权重总和最小。
分析过程
(http://www.cnblogs.com/numbersix/p/4909750.html)
1. MST拥有最优子结构:去掉MST的一条边,MST分裂成两个子树T1、T2,则T1、T2分别是子图G1、G2的MST。
1.1 子图G1只包含T1的顶点, 子图G2只包含T2的顶点,假设拿掉的边为(u,v),u在G1内,v在G2内
1.2 如果G1的MST不是T1而是T1',根据MST的性质(连接了所有顶点),那么u也在T1'内,此时将T1'与T2通过(u,v)相连,可以得到一个新的子树T', T'权值小于T,与T是MST的前提矛盾。
2. MST拥有重叠子问题:拿掉x条边使得T分为多个子树,即使这x条边拿掉的顺序不同,得到的子树集是一样的
3. MST的贪心选择属性(Greedy choice property):局部最优解也是全局最优解。将G分为两个子图,设(u,v)是连接该两个子图的边之中权值最小的边(局部最优解),则(u,v)也是最小生成树里的一条边(属于全局最优解)
3.1用剪贴法证明:连接两个子图的边中,如果有其他的边(u',v')小于(u,v),则可以裁剪掉(u,v),用(u',v')连接两个子图,得到一个总权值更小的MST,与前提矛盾