- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈最短径路问题中的分层思想
福建省泉州市第七中学 吕子鉷
摘要
分层思想与最短路径算法都在许多领域有着广泛的应用。本文通过对一些信息学竞赛试题的分析,从建立模型和优化算法两个方面阐述了分层思想在最短路径问题中的应用,并分别对这两个方面作了总结。
关键字
最短路径 分层 图论
正文
引言
最短路径问题是图论中的一个经典问题。由于问题中边的权值往往可以从距离引申为其他沿路径线性积累的度量,如:时间、花费等,所以最短路径问题在实际生活中有着广泛的应用,如:城市规划、交通导航、网络寻优等。
分层思想作为一个重要的思想,也有着许多应用,特别在是某些高效的方法中,如:动态规划中的阶段划分、图论中基于求阻塞流的最大流算法等。
将分层思想应用到最短路径问题中,正是分层思想和最短路径问题的强强联合。
利用分层思想建立模型
这一部分中,作者将简要介绍利用分层思想建立模型的三个问题:拯救大兵瑞恩、fence和cow relay,希望能对利用分层思想解题起到抛砖引玉的作用。
2.1 例题一 拯救大兵瑞恩
题目:
有一个长方形的迷宫,被分成了N行M列,共N×M个单元。南北或东西方向相邻的两个单元之间可以互通,或者存在一扇锁着的门,又或者存在一堵不可逾越的墙。迷宫中有一些单元存放着钥匙,并且所有的门被分为P类,打开同一类的门的钥匙相同,打开不同类的门的钥匙不同。从一个单元移动到另一个相邻单元的时间为1,拿取所在单元的钥匙的时间以及用钥匙开门的时间忽略不计。求从(1,1)到(N,M)的最短时间。
N,M不大于15,P不大于10。
分析:
如果忽略了门和钥匙,我们可以把每个单元看成顶点,相互连通的单元之间连一条边权为1的边,那么本题就是一个标准的最短路问题,可以直接使用最短路算法求解。
由于有了门和钥匙的因素,所以必须考虑钥匙状态对门的影响。我们把图分成2P层,分别对应持有钥匙的2P种状态,并根据钥匙的状态改造每层节点使相邻的连通节点间有长度为1的边。对于存有钥匙的顶点,则应该向表示得到钥匙后钥匙状态的层的对应顶点连一条长度为0的边。
在新图上就能直接使用最短路算法求解。由于得到的图所有的边权都为0或1,因此可以使用宽度优先搜索求最短路。时间复杂度和空间复杂度均为O(2PNM)。
2.2 例题二 fence
题目:
有一个巨大的庄园,由一幢主楼和其他若干幢建筑组成。园主想建一道栅栏围住主楼,但是有一个条件:栅栏不能离建筑太近。更确切的说,每个建筑被包围在一个矩形区域内,而栅栏不能位于这个矩形的内部。矩形的边与坐标轴平行,而篱笆的每个部分也必须和坐标轴平行。求能够围住主楼的栅栏的最小长度。
建筑数m不大于100,所有的坐标是不大于10000的非负整数。
分析:
问题要求最小化一个线性积累的度量,我们尝试用最短路算法解决此问题。
建立一张单层图,把每个矩形的顶点当作是新图的顶点。由于栅栏不能进入矩形内部而且栅栏必须和坐标轴平行,所以当一对顶点之间的矩形区域内没有其他矩形时,在这一对顶点之间添加一条边,边权为两点的曼哈顿距离,表示两个顶点之间能够连接一段长度为边权的栅栏。
在新图中,每一条回路对应着一种栅栏的方案,回路的长度就是栅栏的长度。显然,如果矩形的某个顶点被其他矩形包含,那么在新图中这个顶点的度为0,因此应该忽略这个点。
但是并不是每一条回路都是满足题意的,因为回路必须包围主楼,亦即主楼必须在回路组成的多边形之中。计算几何中判断点是否在多边形中的方法是:从点引出一条射线,根据射线与多边形交点个数的奇偶性判断是否在形内。因此,我们从主楼引出一条射线。回路是否包含主楼,取决于回路与射线的交点个数的奇偶性。
故我们把图拆分成两层,分别表示与射线交点个数奇偶性不同的两层。如果单层图中的一条边对应的两个顶点在原图中的连线与射线相交,那么在分层图中的边连接不同层的顶点;否则连接同层的顶点。此时,求回路相当于在分层图中求不同层对应的两点之间的最短路。所有对应点对之间最短路中最短的一条的长度即为所求栅栏的最小长度。
假设我们对每个顶点对采用枚举的方法确定顶点之间边的情况,时间复杂度为O(m3);对每个顶点都进行一次Dijkstra算法求到不同层对应的顶点的最短路,时间复杂度为O(m3)。故总的时间复杂度为O(m3)。空间复杂度为O(m2)。
2.3 例题三 cow relay
题目:
Farmer John将选k只牛组成一个接力队伍。FJ的农场有n块地,m条唯一的双向边连接两块不同的地,边有一个权值表示牛通过这条边的时间。k只牛一只接着一只,从第1块地跑到第n块地。当一只牛第一次到达第n块地时,下一只牛就马上从第1块地出发。但是任意两只牛的路径必须不同。求出第k只牛到达终点的最短时间。
k不大于40,n不大于800,m不大于4000。
分析:
把每块地看成图的顶点
文档评论(0)