破圈法,避圈法,prim算法
题目:
破圈法
简记:找圈,破最大边
第一步:随机寻找一个圈作为起始,这里是v1,v2,v3这个圈。
也即是,红色圈,去掉最大边6,变成
第二步:在上一个圈的相邻位置,再随机选择一个圈
也就是v3,v2,v5这三个点,去掉最大边,并选择新的圈,这里已经有一个圈了,v2,v3,v4,v5
第三步:去掉最大边5:
第四步:已经有一个圈了,直接去掉最大边
避圈法,也叫克鲁斯卡尔算法Kruskal
也叫加边法
简记为:找小边,避免形成圈
第一步:画一个只有结点的图,像这样
第二步:加最小边,所有边当中,1是最小边,加上去
第三步:除去1之后,现在最小边是2,
所有长度的2的额边都加上去,如果某一个长度为2的边加上去会形成圈,那么就不加这条边,否则就加上去
第三步:加长度为3的边
第四步:加长度为4的边,这个时候就会形成圈,不加会形成圈的边
以此类推即可
prim算法,普利姆算法
也叫加点法:
第一步:随机选择一个点,这里是v1
在v1相邻的点中,找一个距离v1,最近的点,这里是v2
第二步:把v1,v2视为一个整体,也就是图中红色部分
找距离这个整体最近的点,这里是v3
第三步:把v1,v2,v3视为一个整体,再找距离这个整体最近的点,这里是v4
以此类推,再把v1,v2,v3,v4视为一个整体,也即是红色部分,继续找距离这个整体最近的点就可以做出来了