已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E=... 用克鲁斯卡尔算法(Kruskal)得到最小生成树,试写出在最小生成树中依次得到的各条边。

已知一个图的顶点集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)得到最小生成树,试写出在最小生成树中依次得到的各条边。

已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E=... 用克鲁斯卡尔算法(Kruskal)得到最小生成树,试写出在最小生成树中依次得到的各条边。_第1张图片

注意是使用 克鲁斯卡尔算法不是使用prim ,并且要求写出生成最小生成树时依次的到的各条边。

使用克鲁斯卡尔求最小生成树的步骤:

  1. 根据边集E写出权值从小到大的各边起点终点,just like this:
    起点 终点 权值
    已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E=... 用克鲁斯卡尔算法(Kruskal)得到最小生成树,试写出在最小生成树中依次得到的各条边。_第2张图片

  2. 接着按照这个表画树,流程如下:


已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E=... 用克鲁斯卡尔算法(Kruskal)得到最小生成树,试写出在最小生成树中依次得到的各条边。_第3张图片


已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E=... 用克鲁斯卡尔算法(Kruskal)得到最小生成树,试写出在最小生成树中依次得到的各条边。_第4张图片


已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E=... 用克鲁斯卡尔算法(Kruskal)得到最小生成树,试写出在最小生成树中依次得到的各条边。_第5张图片


已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E=... 用克鲁斯卡尔算法(Kruskal)得到最小生成树,试写出在最小生成树中依次得到的各条边。_第6张图片

注意,当遇到2 3 6的时候,因为之前的2 和 3 已经是连通图的一部分可以访问到的,所以不能连起来,连起来就不是树的形状了,变成网了。记住这个特点,之后遇到的同样处理。最后便会得到一颗这样的最小生成树。


已知一个图的顶点集V和边集E分别为:V={1,2,3,4,5,6,7}; E=... 用克鲁斯卡尔算法(Kruskal)得到最小生成树,试写出在最小生成树中依次得到的各条边。_第7张图片

所以回到题目,要求我们依次写出在最小生成树中依次得到的各条边。

答案应该是这样,参考链接

(1,2)3, (4,6)4, (1,3)5, (1,4)8, (2,5)10, (4,7)20

这里需要注意的是 第二个边 ,不要跳过了。依次从小到大来画,遇到已经连通的就跳过,全部点都连通就说明画完了。

你可能感兴趣的:(数据结构和算法)