算法正确性证明:
假设最小生成树已经建成;(vi, vj)是连接到顶点vi的最短边,在最小生成树中取出vi,断开连接到vi的边,则生成树被拆分成顶点vi,顶点vj所在的连通分量(单独一个顶点也看作一个独立的连通分量),其余若干个连通分量(个数大于等于0)将vi分别以最小的成本逐个连接到这若干个互相分离的连通分量;分别遍历顶点vi到某个连通分量中的所有顶点的连接,然后选择其中最短的边来连接vi和该连通分量;而要将vi连接到vj所在的连通分量,显然通过边(vi, vj)连接的成本最低,所以边(vi, vj)必然属于最小生成树。
最优子结构证明: 假设我们已经得到了一个图的最小生成树(MST) T,(u, v)是这棵树中的任意一条边。把这条边移除,就得到了两棵子树T1和T2,T1是图G1=(V1, E1)的最小生成树,G1是由T1的顶点导出的图G的子图,E1={(x, y)∈E, x, y ∈V1}同理可得T2是图G2=(V2, E2)的最小生成树,G2是由T2的顶点导出的图G的子图,E2={(x, y)∈E, x, y ∈V2}。w(T)表示T树的权值和。首先权值关系满足:w(T) = w(u, v)+w(T1)+w(T2)。假设存在一棵树T1'比T1更适合图G1,那么就存在T'={(u,v)}UT1'UT2',那么T'就会比T更适合图G,这与T是最优解相矛盾。