最小生成树MST
一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。
(1)MST性质
- 无环
- 连接所有节点
- N个节点,N-1条边
- 权值和:树上所有边的权值的总和
- 最小生成树MST满足权值和最小,即最小生成树其实是最小权重生成树的简称
- 当各边有相同权值时,由于选择任意性最小生成树不唯一;
当各边权值不同时,最小生成树是唯一的
eg:给出一个例子图
(2)常用方法:
- 克鲁斯卡尔Kruskal:直接选择权值最小的边
- 普利姆Prim:从顶点除法,间接选择权值较小的边
(3)克鲁斯卡尔Kruskal
- 将所有边取出,并按权值升序排序
- 每次取出当前权值最小的边回帖到图中,判断是否出现环(并查集),若无环,则该边是最小生成树的一条边,若有环,则丢弃该边
eg:给出例子图的克鲁斯卡尔方法的MST
(4)普利姆Prim
- 确定起始点
- 数组1:
selected
标记每个顶点是否已经被选择
数组2:minDust
处理每个未选节点到已选节点集合的最小距离
数组3:parent
记录已选取边的父节点是谁,指最小生成树的父节点 - 选取
minDust
中最小的边加入到已选节点集合中,更新三个数组
eg:给出例子图的普利姆方法的MST