Dijkstra算法在物流配送运输中最短路径优化研究.docVIP

Dijkstra算法在物流配送运输中最短路径优化研究.doc

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

Dijkstra算法在物流配送运输中最短路径优化研究   摘 要:传统的Dijkstra算法一般用于计算一个源节点到所有其他节点的最小代价路径,它能够适应网络拓扑的变化,因而可以应用在物流中的配送线路规划上。原始的Dijkstra算法在实现时不仅占用大量计算机内存,而且执行效率也不高。针对这一问题,本文基于传统的Dijkstra算法,对其数据存储和算法思路进行了优化。最终通过实验证明优化后的Dijkstra比原始的Dijkstra算法在执行效率上有了较大的提高。   关键词:Dijkstra算法;最短路径;物流配送;优化算法   中图分类号:TP301.6   物流业的发展已成为国民经济的一个新的增长点,科学合理的物流业是经济可持续发展的重要部分,其发展程度已经成为衡量一个国家现代化程度和综合国力的重要标志之一,被喻为促进经济增长的“第三利润源泉”。在物流配送活动中,主要是把一批货物从配送中心运送到一个或多个非固定客户的接货处。通常配送中心与客户之间有多条运输路线可以选择。如果配送中心不进行运输路线的合理规划,往往会出现不合理的运输现象,如迂回运输、重复运输等。不合理运输会造成运输成本上升。因此确定合理的配送路线,从而使运输成本降低的同时又使服务水平得到改善是物流配送管理工作的一项重要内容。   本论文是笔者在湖北某软件公司实习期间,参与的一个物资综合管理系统,其中有一个模块是关于车辆调配和物流运输的,然后在此基础上实现基于Dijkstra算法并对其进行优化的物流配送最短路径选择算法。通过实验发现,不仅节约了物流成本,而且提高了运输的效率。   1 Dijkstra算法介绍   1.1 Dijkstra算法思想及步骤   Dijkstra算法用于计算一个源节点到所有其他节点的最短代价路径,它是按路径长度递增的次序来产生最短路径的算法。该算法的输入包含一个有权重的有向图G以及G中的一个顶点s,用V表示G中所有顶点的集合,S表示已求得最短路径的值顶点,w(u,v)表示从顶点u到顶点v的权重(设定权重均为非负值),(u,v)表示从顶点u到顶点v有路径相连,d(v)表示从顶点s到顶点v的最小权重。步骤如下:   (1)初始时,集合S只包含顶点s,s的路径长度值被赋为0(即d(s)=0),选择顶点m,若存在能直接到达的边(s,m),则d(m)=min{w(s,m)},并将顶点m加入集合S,对于所(1)Dijkstra算法的效率与顶点数N密切相关。   (2)在存储图形数据和运算时,需要定义N*N的数组,其中N为网络的结点数,当网络的结点数较大时,将占用大量的计算机内存。   (3)当从未标记节点集合(V-S)选定下一个顶点m作中间节点后,在更新最短路径的过程中,需要扫描所有的未标记节点并进行比较更新。而未标记节点集合(V-S)中往往包含大量与中间点m不直接相连的节点,即Cost[j,k]=∞。因而很多操作无效而导致执行效率降低。   2 Dijkstra算法优化   2.1 数据存储的优化   通常在一个城市交通图模拟出来的网络图中,存在很多顶点(物流运输的地点)和边(道路),而且错综复杂,但真正与某一顶点相关的边和顶点是有限的。以邻接矩阵或关联矩阵为基础的算法中,存在着很多权值为∞的元素,这些无效的元素占用了大量的计算机内存。如果在表示网络结构图的关系时,只是记录与某一顶点相关的边和顶点,这样就可以减少很多无效的权值为∞的顶点,从而起到节约内存的作用。具体步骤如下:   (1)依据最大相邻顶点数的概念,计算出网络图中的最大相邻顶点数m;   (2)根据网络图构造邻接矩阵。以网络图中的顶点为行,以该顶点相邻的点为列,矩阵的行数为网络图中的实际顶点数,列数为网络图中的最大相邻顶点数m,改邻接矩阵中的值为与行顶点相连的顶点值。如果该顶点的相邻顶点数少于最大相邻顶点数m,则用0代替。   (3)根据网络图构造判断矩阵。对照上一步构造出来的邻接矩阵,用邻接矩阵里的各个元素对应边号的权值代替同一位置的顶点值就构成了判断矩阵;   (4)然后根据邻接矩阵和判断矩阵求网络图上某一顶点到其他顶点间的最短路径。   2.2 算法思路的优化   传统的Dijkstra算法能求出网络图中的最短路径,但是在顶点和边很多的情况下,该算法需要遍历很多节点,而且很多是无效的顶点,所以执行效率比较低。其主要表现在:更新新加入的顶点m到集合V―S中所有顶点的最短路径时,需要大量比较d[m] + w[m,v]和d[v]的大小,而此时很多顶点并不与m相邻(即w[m,v]=∞),这样就增加了额外的运算量。由于Dijkstra算法是计算从起点到某一顶点的最短路径,我们也可以将其表述为计算从某一顶点到起点的最短路径。因此求最短路径问题可以分解两个子问题,即计算由起点到终点的最短

文档评论(0)

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

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

1亿VIP精品文档

相关文档