最小生成树算法
Kruskal 算法
- 新建图,中拥有原图中相同的节点,但没有边
- 将原图中所有的边按权值从小到大排序
- 从权值最小的边开始,如果这条边连接的两个节点于图中不在同一个连通分量中,则添加这条边到图中
- 重复3,直至图中所有的节点都在同一个连通分量中
伪代码:
1 | algorithm Kruskal(G) is |
Prim 算法
- 输入:一个加权连通图,其中顶点集合为,边集合为;
- 初始化:,其中为集合中的任一节点(起始点),
- 重复下列操作,直到:
a. 在集合中选取权值最小的边,其中为集合中的元素,而则是中没有加入的顶点(如果存在有多条满足前述条件即具有相同权值的边,则可任意选取其中之一);
b. 将加入集合中,将加入集合中; - 输出:使用集合和来描述所得到的最小生成树。
Leetcode例题:1584. Min Cost to Connect All Points
参考: 最小生成树
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Dash's Blog!
评论