已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,(3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25};用克鲁斯卡尔算法(Kruskal)得到最小生成树,试写出在最小生成树中依次得到的各条边。
注意是使用 克鲁斯卡尔算法不是使用prim ,并且要求写出生成最小生成树时依次的到的各条边。
使用克鲁斯卡尔求最小生成树的步骤:
-
根据边集E写出权值从小到大的各边起点终点,just like this:
起点 终点 权值
-
接着按照这个表画树,流程如下:
注意,当遇到2 3 6的时候,因为之前的2 和 3 已经是连通图的一部分可以访问到的,所以不能连起来,连起来就不是树的形状了,变成网了。记住这个特点,之后遇到的同样处理。最后便会得到一颗这样的最小生成树。
所以回到题目,要求我们依次写出在最小生成树中依次得到的各条边。
答案应该是这样,参考链接
(1,2)3, (4,6)4, (1,3)5, (1,4)8, (2,5)10, (4,7)20
这里需要注意的是 第二个边 ,不要跳过了。依次从小到大来画,遇到已经连通的就跳过,全部点都连通就说明画完了。
2021/2/18补充 prim构造最小生成树例题
prim 构造最小生成树过程。找点集合内和点集外权值最小的加入点集;