最小生成树
什么是生成树? (百度定义)在一个具有几个顶点的无向连通图G中,如果存在子图G'包含G中所有顶点和一部分边,且不形成回路,则称G'为图G的生成树。
什么是最小生成树? 对于无向连通图G = (V,E),E中的边有其权重值映射:w(e),如果某生成树G'具有最小权重和,则称G'为最小生成树。
相关最小生成树性质(或者数学理论基础)
1、相关概念
割:无向图G = (V,E)的一个割(s,v-s),其中s是G中订单V的真子集。说白了,就是对顶点的划分
割不妨害集合A:无向图G = (V,E)的一个割(s,v-s),集合A是E的子集,假如A中没有边通过割,则称割(s,v-s)不妨害A。
轻边:如果某条边的权重值是通过割的所有边中最小的,则称该边为通过这个割的一条轻边
2、算法导论定理23.1(prim算法基础):
设图G = (V,E)是一个无向连通图,E中的边有其权重值映射:w(e)。设A是E的一个子集,它包含于G的某个最小生成树中。设割(s,v-s)是G的任意一个不妨害A的割,且边(u,v)是通过割(S,V-S)的一条轻边,则边(u,v)对集合A来说是安全的(A U (u,v) 属于最小生成树)。
3、算法导论定理23.2(Kruskal算法基础):
设图G = (V,E)是一个无向连通图,E中的边有其权重值映射:w(e)。设A是E的一个子集,它包含于G的某个最小生成树中。设C=(Vc,Ec)是森林 GA = (V,A)的一个连通分支(树)。如果边(u,v)是连接C和GA中其他连通分支的某一条轻边,则边(u,v)对集合A来说是安全的。