prim(普里姆)算法与Kruskal(克鲁斯卡尔)算法

下面是我们的题目,如何得出下图的最小生成树?

 

prim(普里姆)算法与Kruskal(克鲁斯卡尔)算法_第1张图片

1.prim算法(适用于计算稠网)

思想其实很简单:随便找一个点作为起始点(因为每个点都需要经过所以找那个点都一样),然后找到和这个点相连接的边中权值最小的,连起来,然后再从,这两个点出发找和他们连接的边,同样是找最小的(两个点所对应的除它们连线外的所有边中最小的),然后连起来,得到三个点,再找三个点连接边中权值最下的。。。。等找到6个点就完成了。

 

 

一下为代码:

prim(普里姆)算法与Kruskal(克鲁斯卡尔)算法_第2张图片

prim(普里姆)算法与Kruskal(克鲁斯卡尔)算法_第3张图片

运行结果为五个数据,每个数据据减一就是他要连接的下一个点。

 

2.Kruskal(克鲁斯卡尔算法)

克鲁斯卡尔算法:将所有边的权值按从小到大的顺序进行排序,然后从上到下进行选取(第一个选取到的边为权值最小的边)当达到5个边时最小生成树就出现了。

 

prim(普里姆)算法与Kruskal(克鲁斯卡尔)算法_第4张图片

prim(普里姆)算法与Kruskal(克鲁斯卡尔)算法_第5张图片

prim(普里姆)算法与Kruskal(克鲁斯卡尔)算法_第6张图片

prim(普里姆)算法与Kruskal(克鲁斯卡尔)算法_第7张图片

 

完成。

你可能感兴趣的:(prim(普里姆)算法与Kruskal(克鲁斯卡尔)算法)