分别用普林(Prim)算法和克鲁斯卡尔(Kruskal)算法求所给带权图的最小生成树。(按顺序写出选取的边及 总的权值即可)1--2--3 | /|\ | |/ | \| 4--5--6 |\ | /| | \|/ | 7--8--9
时间: 2023-08-21 19:31:28 浏览: 88
最小生成树有很多种生成方法,主要有普利姆算法和克鲁斯卡尔算法,通过C语言easyx图形库实现
5星 · 资源好评率100%
好的,这是一个有9个节点和12条边的带权图,边的权值已经标注在图中:
```
1--2--3
|\ |\ |
| \| \|
4--5--6
|\ |\ |
| \| \|
7--8--9
```
普林算法:
1. 从节点1开始,将1加入已选节点集合,将1到2、1到4和1到5的三条边加入备选边集合;
2. 从备选边集合中选取权值最小的一条边1到2,将2加入已选节点集合,将2到3和2到5的边加入备选边集合;
3. 从备选边集合中选取权值最小的一条边2到5,将5加入已选节点集合,将5到6和5到8的边加入备选边集合;
4. 从备选边集合中选取权值最小的一条边5到8,将8加入已选节点集合,将8到9和8到7的边加入备选边集合;
5. 从备选边集合中选取权值最小的一条边8到7,将7加入已选节点集合,将7到4的边加入备选边集合;
6. 从备选边集合中选取权值最小的一条边7到4,将4加入已选节点集合,将4到1的边加入备选边集合;
7. 从备选边集合中选取权值最小的一条边4到1,将3加入已选节点集合,将3到6的边加入备选边集合;
8. 从备选边集合中选取权值最小的一条边3到6,将6加入已选节点集合,将6到9的边加入备选边集合;
9. 已选节点集合中包含所有节点,生成树完成。
选取的边及总权值为:1-2(1)、2-5(1)、5-8(2)、8-7(1)、7-4(1)、4-1(1)、1-3(2)、3-6(2),总权值为11。
克鲁斯卡尔算法:
1. 将所有边按照权值从小到大排序;
2. 依次选取权值最小的边,如果边的两个端点不在同一个集合中,则将它们合并,将这条边加入生成树;
3. 重复步骤2,直到生成树包含所有节点。
选取的边及总权值为:1-2(1)、4-7(1)、2-5(1)、5-8(2)、3-6(2)、1-4(3)、3-9(4)、6-9(4),总权值为18。
阅读全文