1. 选择第一个边的时候,选择的是权值最小的边,显然,该边是最优解的一部分
否则,我们将该边加到最小生成树中,则形成回路,让该边取代回路中比这个最小边权值大的边,仍然得到最生成树,但该生成树比所得到的最小生成树还要小,这与假设矛盾
因此第一次选取的最小边,一定是最小生成树的一部分;
2.现在我们假设选取的前s边是最小生成树的一部分,这些边连接的节点记做n1,n2,...,ns-1
按照prim算法,我们将选择和这s-1个点相连的所有边中的最小边,作为下一个确定的最优边,我们仍然用反证法证明,这种选取方法确实是最优边。
设未确定最小边相连的已确定节点是nk,假设不是,那么,该未确定最小边一定和最小生成树构成回路,该回路某一边一定和n1,n2,...,ns-1中的两点相交,其中一点是nk,另一点设为ni,该回路中比存在与ni相邻的一条边比该未确定最小边大,用该未确定最小边代替这个比它大的这个边,结果仍然是生成树,该生成树比最小生成树还要小,这是矛盾的,因此,该未确定最小边一定是最优边。
3.综上,prim算法成立
注记:最小生成树不是唯一的,这在prim算法中,某个步骤会出现多个相同的未确定最小边,这时候,最小边选取不同,可能导致最小生成树不同。