最短路径动态规划问题及C语言实现探析.docVIP

最短路径动态规划问题及C语言实现探析.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最短路径动态规划问题及C语言实现探析

最短路径动态规划问题及C语言实现探析摘要:动态规划算法是一种研究多阶段决策问题的算法.用动态规划方法求最短路问题,要求所求问题具有明显的阶段。该文以动态规划理论为指导,研究了动态规划算法求解最短路径的基本原理及步骤,编写了基于动态规划算法的C语言程序,辅助完成最短路径的求解。 关键词:最短路径;动态规划;C 语言编程 中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)09-2191-03 1 概述 数学源于生活,又服务于生活.它是一门研究现实世界中的数量关系与空间形式的学科.当今社会,随着物质水平的不断提高,生活需求的不断扩大,自然资源的不断开发利用.像天然气管道铺设问题,厂区布局问题,旅行费用最小问题等都已成为我们平时经济生活中的普遍问题.它们其实都可以化归为最短路线问题,而最短路问题实质上是一个组合优化问题[1]。 动态规划方法主要是研究与解决多阶段决策过程的最优化问题,它将求解分成多阶段进行,不但求出了全过程的解,还能求出后部子过程的一组解,在求解一些生活实际问题时,更显其优越性。为了快速、简单的计算最短路径,节约运输时间与成本,该文利用动态规划的思想编写了C语言程序,解决物流运输过程中多地点的最短路径的选择问题。 2 最短路径问题 2.1 最短路径问题算法的基本思想 在求解网络图上节点间最短路径的方法中,目前国内外一致公认的较好算法有迪杰斯特拉(Dijkstra)及弗罗伊德(Floyd)算法。这两种算法中,网络被抽象为一个图论中定义的有向或无向图,并利用图的节点邻接矩阵记录点间的关联信息。在进行图的遍历以搜索最短路径时,以该矩阵为基础不断进行目标值的最小性判别,直到获得最后的优化路径[2]。 Dijkstra算法是图论中确定最短路的基本方法,也是其它算法的基础。为了求出赋权图中任意两结点之间的最短路径,通常采用两种方法。一种方法是每次以一个结点为源点,重复执行Dijkstra算法n次。另一种方法是由Floyd于1962年提出的Floyd算法,其时间复杂度为[On3],虽然与重复执行Dijkstra算法n次的时间复杂度相同,但其形式上略为简单,且实际运算效果要好于前者。 2.2 最短路径问题算法的基本步骤[3] 这样经过有限次迭代则可以求出[v1]到[vn]的最短路线。 (2)Floyd算法的基本步骤 (3)动态规划算法基本步骤 我们将具有明显的阶段划分和状态转移方程的规划称为动态规划[1]。在解决多个阶段决策问题时采用动态规划法是一个很有效的措施,同时易于实现。 根据动态规划的基本概念,可以得到动态规划的基本步骤:1)确定问题的决策对象。2)对决策过程划分阶段。3)对各阶段确定状态变量。4)根据状态变量确定费用函数和目标函数。5)建立各阶段状态变量的转移过程,确定状态转移方程。 根据动态规划的基本模型,确定用动态规划方法解题的基本思路,是将一个[n]阶段决策问题转化为一次求解[n]个具有递推关系的单阶段的决策问题,以此来简化计算过程.其一般步骤如下: 用于衡量所选决策优劣的函数称为指标函数.指标函数有有阶段的指标函数和过程的指标函数之分.阶段的指标函数是对应某一阶段状态和从该状态出发的一个阶段的某种效益度量,用[vkxk,uk]表示。在本文里用[dkxk,uk]来表示某一阶段的决策的最短路径。过程的指标函数是指从状态[xn(k=1,2,...,n)]出发至过程最终,当采取某种子策略时,按预定的标准得到的效益值。这个值既与[xk]本身的状态值有关,又与[xk]以后所选取的策略有关,它是两者的函数值,记作[dk,nxk,uk,xk+1,uk+1,…xn,un]。过程的指标函数又是它所包含的各阶段指标函数的函数。本文研究的过程的的指标函数是其各阶段指标函数的和的形式.当[xk]的值确定后,指标函数的值就只同k阶段起的子策略有关。对应于从状态[xk]出发的最优子策略的效益值记作[fkxk],于是在最短路问题中,有[fkxk=mindk,n]。动态规划求解最短路径程序流程图如图2所示。 3 最短路径态规划实际应用举例 设某物流配送网络图由12个配送点组成,点1为配送中心起点,12为终点,试求自终点到图中任何配送点的最短距离。图中相邻两点的连线上标有两点间的距离[4]。 首先用动态规划法来讨论图3的最短路径,由图可知: 1)集合[ξ4]中有点9、10、11,它们在一步之内可到达点12; 2)集合[ξ3]中有点6,7,8,它们不超过两步就可达到点12; 3)集合[ξ2]中包括点 2、3、4、5,不超过三步就可到达点12; 4)集合[ξ1]中包括点1,不超过四步可

文档评论(0)

linsspace + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档