GEODUAL软件说明书之最小生成树问题

软件下载:

链接:https://pan.baidu.com/s/1ypyIxnNngk-8XcqkcXSLQA 提取码:rpe6 复制这段内容后打开百度网盘手机App,操作更方便哦

2.3最小生成树问题

故事背景:有几个居民定居的村庄,需要在这些村庄之间建造道路,使得村民可以乘坐交通工具在村庄之间相互交流,问题是如何使花费最小而得到一条村村都互通的道路?

将其抽线为一个图的问题,可以假设一个解,包含若n个点的序列,形成一个没有回路的解。因为回路意味着道路的重复。因此应该有n-1条线段作为道路。寻找这n-1条线段组成的道路的最小值为最小生成树问题。有很多高效的方法来解决这个问题,本文采用的是Kruskal于1956年提出的【On the Shortest Spanning Subtree of a Graph and the Traveling Salesman Problem】。

Kruskal的算法从最短的直线开始,然后依次添加剩余最短的不产生回路的直线,从而建立最小生成树。一旦找到了n-1条路线,则算法停止。

Kruskal算法:

设图G为一个n阶的连通加权图。图G中一个最小生成树T可以如下构造:选取图G中由最小权(权在这里指的是边长)的一条边e1,接着在图G-e1中选取一条具有最小权的边e2。当为T选取了k条边e1,e2,...,ek(2\leq k\leq n-2)后,下一次选取ek+1的标准使权值尽量小且e1,e2,...ek+1没有形成圈。

同样使用前文所述的相切圆和护城河方法,使每个顶点p,半径r_{p} 的圆半径等速均匀增长,直到两圆相切,如图1(1)。

图1 最小生成树生长过程

有出现相切圆的子集后,将两个相切圆的圆心点相连,相切圆子集以相切圆为轮廓等速向外延申护城河,如图1(2)-(4)。

图2 最小生成树生长过程
图3 最小生成树的最终结果

Kruskal算法确保了我们确实找到了最小长度的生成树(它的正确构造很容易从最终的图片中验证)。因为任意更改一条线段的连接方式,必定会增加白色区域的长度,因此图3为最优解。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 定义 关于最小生成树的定义,需要先了解如下这几个相关概念: 连通图:在无向图中,若任意两个顶点vi与vj都有路径相...
    JarryWell阅读 9,462评论 0 4
  • 今天介绍两个最常用的的最小生成树算法,首先来说几个概念: 所谓生成树,通俗的说其实是原图的中的所有顶点和一部分边组...
    鹏抟九万阅读 5,683评论 2 9
  • 一、基本概念 由于生成树的定义可知,无向连通图的生成树不是唯一的。连通图的一次遍历所经过的边的集合及图中所有顶点的...
    永远的Beyond52阅读 4,941评论 0 0
  • 最小生成树 一个图的生成树是一个极小的连通子图,它含有图中全部的顶点,但只有足以构成一棵树的n-1条边。通俗一点讲...
    mark_x阅读 5,418评论 0 0
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 12,728评论 28 53