题目
试写出用克鲁斯卡尔(Kruskal)算法构造下图的一棵最小生成树[1]的过程。6 ① 18 ② 5-|||-12-|||-⑦ 4 23 5 15 8 3-|||-25-|||-7 6 20 4 10第29图
试写出用克鲁斯卡尔(Kruskal)算法构造下图的一棵最小生成树[1]的过程。
第29图
题目解答
答案
解:V(G)={1,2,3,4,5,6,7}
E(G)={(1,6,4),(1,7,6),(2,3,5),(2,4,8),(2,5,12),(1,2,18)}
解析
步骤 1:初始化
- 将所有顶点放入一个集合中,每个顶点都是一个独立的集合。
- 将所有边按权重从小到大排序。
步骤 2:选择最小权重边
- 选择权重最小的边,检查其两个顶点是否在同一个集合中。
- 如果不在同一个集合中,将这条边加入最小生成树,并将两个顶点所在的集合合并。
- 如果在同一个集合中,跳过这条边。
步骤 3:重复步骤2
- 重复步骤2,直到最小生成树包含n-1条边,其中n是顶点的数量。
步骤 4:检查最小生成树
- 确认最小生成树包含所有顶点,并且没有形成环路。
- 将所有顶点放入一个集合中,每个顶点都是一个独立的集合。
- 将所有边按权重从小到大排序。
步骤 2:选择最小权重边
- 选择权重最小的边,检查其两个顶点是否在同一个集合中。
- 如果不在同一个集合中,将这条边加入最小生成树,并将两个顶点所在的集合合并。
- 如果在同一个集合中,跳过这条边。
步骤 3:重复步骤2
- 重复步骤2,直到最小生成树包含n-1条边,其中n是顶点的数量。
步骤 4:检查最小生成树
- 确认最小生成树包含所有顶点,并且没有形成环路。