网站大量收购独家精品文档,联系QQ:2885784924

浅谈最短径路问题中的分层思想.ppt

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅谈最短径路问题中的分层思想整理

浅谈最短径路问题中的分层思想 福建省泉州市第七中学 吕子鉷 引言 最短路径问题 分层思想 主要内容 利用分层思想建立模型 拯救大兵瑞恩 fence cow relay 应用分层思想优化算法 bic roads 例题一 拯救大兵瑞恩 (CTSC99) 有一个长方形的迷宫,被分成了N行M列,共N×M个单元。 南北或东西方向相邻的两个单元之间可以互通,或者存在一扇锁着的门,又或者存在一堵不可逾越的墙。 迷宫中有一些单元存放着钥匙,总共有P类钥匙,对应P类门。只有对应的钥匙才能打开对应的门。 例题一 拯救大兵瑞恩 (CTSC99) 从一个单元移动到另一个相邻单元的时间为1,拿取所在单元的钥匙的时间以及用钥匙开门的时间忽略不计。 求从(1,1)到(N,M)的最短时间。 N,M不大于15,P不大于10。 分析—简化问题 忽略门和钥匙。 把每个单元看成顶点,相互连通的单元之间连一条边权为1的边。 分析—分层 考虑钥匙状态对门的影响。 把图分成2P层,分别对应持有钥匙的2P种状态。 分析—边(1) 根据钥匙的状态改造每层图,使相邻的连通节点间有长度为1的边。 分析—边(2) 对于存有钥匙的顶点,向表示得到钥匙后钥匙状态的层的对应顶点连一条长度为0的边。 分析—复杂度 使用宽度优先搜索求最短路。 时间复杂度和空间复杂度均为O(2PNM)。 小结 将图进行分层是因为在同一层图上难以准确地表现出图在不同条件下的状况或图的其他因素。 分层的图分别表示不同的条件,加强了图的性质,使得在分层图能够使用基本的最短路算法求解原来的复杂问题。 例题二 roads (CEOI98) n个城市有单向道路连接。 每条路有固定的长度和费用。 路径上的费用不大于k。 求从城市1出发到达城市n的最短路径。 例题二 roads (CEOI98) 费用k是不大于10000的非负整数 城市数n是不大于100的正整数 道路数m是不大于10000的正整数 每条道路的长度是不大于100的正整数 每条道路的通行税是不大于100的非负整数。 分析—图 我们把城市看成节点,城市之间的道路看成边。 本题与一般求最短路的问题相比,不同之处在于边上有费用、距离两个权值。 分析—算法一—分层 把图拆分成k+1层,表示到达该层顶点所需的费用分别为0到k。 分析—算法一—边 每条边拆成O(k)条边,边的两个顶点的所在层的费用之差表示费用,边的权值表示道路长度。 分析—算法一—复杂度 由于道路长度是正整数,采用Dijkstra算法求最短路。 图是稠密的,优先队列直接使用一维数组。 时间复杂度为O(k(kn2+m)) 。 分析—算法二 由于费用是非负的,这意味着边只能从一个节点指向同一层的节点或费用更大的层的节点。 按照费用从低到高的顺序对每层求最短路,而非一次性对所有点求最短路。 每一层求最短路的时间复杂度为O(n2+m)。 时间复杂度降为O(k(n2+m))。 分析—算法三 由于题目已经给定费用的最大值,所以我们很自然地直接以费用的多少进行分层。 但是我们忽略了一个条件:道路长度是正整数,而不仅是非负整数。 可以以道路长度进行分层,然后使用动态规划。 分析—算法三—转移方程 令f[i,j]表示到达城市j长度为i的所有路径所花费的最少费用。 转移方程为: f[0,1]=0 f[0,j]=∞ (j=2… n) f[i,j]=max{f[i-len,j0]+fee} (城市j0到城市j有一条长度为len,费用为fee的道路) 分析—算法三—复杂度 设每条道路长度的最大值为L。 那么总共有O(nL)个阶段,每个阶段的转移的复杂度O(m)。 算法三的时间复杂度为O(nLm),效率有所提高。 小结 分层图的层是我们构建模型时复制的,许多图的元素都是相同或相似的,不需要增加额外的空间或操作。 分层图中往往层与层之间拓扑有序,可以逐层求最短路。 特别地,当同层的节点拓扑无关时,就可以使用动态规划代替最短路算法。 总结 * * 城市规划 交通导航 网络寻优 …… 动态规划中的阶段划分 基于求阻塞流的最大流算法 …… 强强联合 1 5 4 2 3 6 2,3 2,4 3,2 4,1 3,3 2,0 2,1 2,3 2,4 3,2 4,1 3,3 2,0 2,1 1 5 4 2 3 6 1 5 4 2 3 6 1 5 4 2 3 6 …… 0 1 k 1 5 4 2 3 6 1 5 4 2 3 6 1 5 4 2 3 6 1 5 4 2 3 6 …… 0 1 k 4 2 2 3 2 2 3 4 2

文档评论(0)

chenchena + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档