- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
深度搜索法求解不定期最短路径问题
问题的提出
所谓不定期最短路径问题是指如何从不同的节点处通过有限次到达终点,求解到达的最短路径。此类问题形式上属于网络和图,但是我们完全可以通过动态规划方法来求出最优解。
求解方法的弊端
通常求解此类问题的方法是运筹学中的函数迭代法和策略迭代法。这两种办法都不同程度地存在着浪费计算的问题:有些节点显然不可能是最优路径,但是为了求解的完整性,我们必须求出许多冗余数据。而且随着节点数的增多,计算量会以平方级数大大增加。
新的求解思路
我们发现,人来求解此类问题并不是从一个一个节点地遍历计算每一个结果,最后来比较的,而是先有选择地找到一些感觉上比较好的路径,在计算一些简单的数,最后比较的个数就少多了。而且人经常不自觉地会顺着一些“捷径”来找最短路径,往往几个节点的最短路径都在一条路上。所以通过模拟人类求解此类问题的方式,我采用了一个树形结构来求解最终值,这种办法就形象地被称为深度搜索法。它可以使用计算机来求解,而且通过层层筛选后,实际的计算量少得多。当节点数增加的时候,这种办法的优越性就体现出来了,他的计算量增长是线性递增的。
下面我一个例子来阐述这个方法。
例题
[选自《运筹学基础》(张莹编著)第221页]设总共有N个城市,是任两城城i与城j之间的距离,有。求:各城市到第5个城市之间的最短路径和最短距离(不限定步数)。
图图1 路线图
例题分析
求解这道题书上用了两种思路——函数迭代法和策略迭代法。
但是求解的出发点都是把这个系统模型化,尽量算出可能的解,最后经过比较,得出最小路径。我们可以清楚地看到,包含了这么少信息的一道题,书上用了两页的篇幅来阐述解法,而且其中只罗列出了每一步的最优结果;而我们其实自己来做的话,可能通过心算就可以解决了,这就是为什么我看到这个解法有些干着急的原因。
新的求解思路:
为了更清楚地阐述深度搜索法的求解步骤,我想先让大家跟我一起了解我是如何想出这个办法的。一般以人的思路来说,我们首先先找到每个节点到5节点的步数;其次从第1点开始,我们看到除了直接到5节点外,其他的方法的步长都不是最优的。当然我们看到2点的时候,总是自然而然地先找最小步长的出路(2-)3),在一步步地沿着最小步长的路找到5点,由于步数最多有4步,所以很容易地找到最优的解,于是我们按照这种方法就很快地得出最优解:
节点名称 路径方式 - --- -- - 路径长度 2 5 4 3
总结上面的方法,我们发现,这种思路与先前的思路截然不同的地方是:这种方法是面向节点的,而不是面向步长的,由于节点的有限性,决定了这类方法的步数的有限性,在求解中,我们可以从一个节点走向另一个节点,当发现不行的时候再退回来,选择其他节点,这种解题的思路有些像计算机算法里的树形结构,树的深度只有有限层,到了叶子后再退回来走其他分支,最后找到最优的路径。所以我将这种算法叫做深度搜索法。
具体求解方法:
第一步,找出图中的起始点和目标点。
本例中起始点是,,,;目标点是。
第二步,找出起始点到目标点最短距离,作为参考点。选择这个参考点的意义在于,不管步长如何,我们总是直接或间接地通过起始节点(,,,)中的一个到达目标点,所有起始点到目标点的最短步长肯定是起始点到目标点的最短直接距离,我把这个点称为参考点。
本例中,直接距离分别是的距离是2;的距离是7;的距离是5;的距离是3。所以取点为参考点。
第三步,建立初始约束条件,p0(k),k=(1,N),约束条件是个各自节点到目标点的直接距离,最优解不可能超过直接距离。
本例中的约束条件是
第四步,迭代约束条件,由于环状结构不可能是最优的解,所以迭代的步数是N-1。
第五步,作图,画出树形结构图的第一层,目标点为树的根结点,除了起始点和直接步长最长的节点外,把其他节点作为树的第一层叶子(如图2)。
本例中,第一层叶子为节点1,3,4。
图2 第一层搜索
第六步,分别以第一层节点为子根,继续向下搜索,不满足约束条件的叶子就去掉。如果搜索到的路径比约束条件好,就把该路径定义为下一级节点的约束条件,前面到过的节点就不要在下层的叶子中出现了。停止搜索的条件:路径长度比所有的约束长度都大。
本例中,--,--,--,--的步长超过了所有的约束步长,删除该路径,并且的约束条件改为,改为。
图3 第二层搜索
第七步,重复执行第六步,停止的条件:
所有的叶子都不可往下搜索;
已经搜索到了第N-1层。
图4 第三层搜索
图5 第四层搜索
第八步,删除所有的无用节点,从中寻找最佳的路径。根据约束条件找到最短路径的实现方法。
本例中,最佳的路径被选为下表所示:
节点名称 路径方式 - --- -- - 路径长度 2 5 4 3
图6 搜索结果
结果分析
按照深度搜索的方
文档评论(0)