图结构:
普里姆算法
普里姆算法第一步就是选取最短边,(注:如果有多个最短边,那就随便选一个)
如图所示,最短边为V1和V3之间的1,所以得到右边的结果。
第二步,在未选取的点中,选取一个与已选取点最近的点连上。
听不懂? 大白话就是,在V1和V3基础上选一个最短的边,如下图,红色边刚才已经选了,你在它们的基础上选一个最短的,一眼看出是4(注:如果存在多个相等的最短边,任意选一个)
结果就是将4这条边加入:
继续选最小的边,一眼是值为2的这条边:
结果:
继续选取边:
图中有未选取最小边长为5,,有3条。
此时发现有其中两条边(如下图加粗),如果选取了就形成了一个环,不满足最小生成树的定义,我们就去除(注:每次选取边后,如果形成了一个闭合的环就要舍弃边)
那么我们只能选剩下来的那条边了
结果就是:
继续选取边(形成闭环的边不选取)那只剩下3,6,6了,一眼3
最终结果:当所有点都被连起来后就结束了,N个点,最终有N-1条边
克鲁斯卡尔
这个比较简单,普里姆是在已选取点的基础上继续选择。
克鲁斯卡尔则是每次在全局选取最小的边。(注:如果选取的边形成了闭环应当舍弃)
目前最小边为1:
继续,最小边为2:
继续最小边为3:
继续最小边为4:
继续选取最小边:此时有3条最小值为5的边。其中有2条不能选,因为会形成闭环,所以要舍去
最终结果: