天天看点

最小生成树算法Kruskal

目录

最小生成树算法

1、Kruskal

1.1 算法简介

1.2 C++实现

最小树定义:

给定网络\(G=(N,E,W)\),设\(T=(N,E')\)为\(G\)的一个支撑树,令\(W(T)=\sum_{e\in E'}W(e)\)为\(T\)的权(或长)。\(G\)中权最小的支撑树称为\(G\)的最小树。

并查集:用一个元素代表一组元素,用于查询不同元素是否属于同一组,以及合并组

Kruskal是1956年首次提出的求最小生成树的算法,后来Edmonds把该算法称为贪心算法,其基本思路就是从G中的m条边中选取n-1条权尽可能小的边,使其不构成回路,从而构成一个最小树。

第一步:把图按照边权的大小从小到大排列起来,初始化一个已选中的边集,或计数器

第二步:不断从加入之后不构成环的边中选择权最小的边加入边集

第三步:如果边集中边的数量达到n-1,则停止,否则继续选边加边

祝看到这里的你生活愉快,谢谢