<知识准备>
基础知识
生成树:
- 给一个连通图,对应有可能不止一个生成树。每个节点都经过且只了一次,经过的边 和顶点的组合。
- 连通图中的生成树必须满足以下 2 个条件:
1.包含连通图中所有的顶点;
2.任意两顶点之间有且仅有一条通路;
生成树中边的数量 = 顶点数 - 1。
最小生成树:
- 生成树的基础上,要求树的(n-1)条边的权值之和是最小的
- (1)必须只使用该图中的边来构造最小生成树;->用边
- (2)必须使用且仅使用(n-1)条边来连接图中的n个顶点;->路最少
- (3)不能使用产生回路的边;->无环
- (4)要求树的(n-1)条边的权值之和是最小的。->权值最小
prim算法
-
点一个一个的往里加入,新加入点的选择方式是:
已加入的点A(不一定最新)—没加入的B==边,找到最小权值,对应的B,把B作为下一个加进来的点。 -
算法概念:
Prim算法是一种构造性算法。假设G=(V,E)是一个具有n个顶点的带权连通无向图,T=(U,TE)是G的最小生成树,其中U是T的顶点集,TE是T的边集,则由G构造从起始顶点v出发的最小生成树T的步骤如下:
(1)初始化U={v},以v到其他顶点的所有边为候选边;
(2)重复以下步骤(n-1)次,使得其他(n-1)个顶点被加入到U中:
1.从侯选边中挑选权值最小的边加入TE,设该边在V-U中的顶点是k,将k加入U中;
2.考察当前V-U中所有顶点j,修改侯选边,若边(k,j)的权值小于原来和顶点j关联的侯选边,则用边(k,j)取代后者作为侯选边 -
List item
<参考资料>
感谢大大!
最小生成树之Prim(普里姆)算法
什么是生成树