Dijkstra算法在物流配送运输中的最短路径优化

点赞:7025 浏览:22683 近期更新时间:2024-02-24 作者:网友分享原创网站原创

摘 要:传统的Dijkstra算法一般用于计算一个源节点到所有其他节点的最小代价路径,它能够适应网络拓扑的变化,因而可以应用在物流中的配送线路规划上.原始的Dijkstra算法在实现时不仅占用大量计算机内存,而且执行效率也不高.针对这一问题,本文基于传统的Dijkstra算法,对其数据存储和算法思路进行了优化.最终通过实验证明优化后的Dijkstra比原始的Dijkstra算法在执行效率上有了较大的提高.

关 键 词:Dijkstra算法;最短路径;物流配送;优化算法

中图分类号:TP301.6

物流业的发展已成为国民经济的一个新的增长点,科学合理的物流业是经济可持续发展的重要部分,其发展程度已经成为衡量一个国家现代化程度和综合国力的重要标志之一,被喻为促进经济增长的“第三利润源泉”.在物流配送活动中,主要是把一批货物从配送中心运送到一个或多个非固定客户的接货处.通常配送中心与客户之间有多条运输路线可以选择.如果配送中心不进行运输路线的合理规划,往往会出现不合理的运输现象,如迂回运输、重复运输等.不合理运输会造成运输成本上升.因此确定合理的配送路线,从而使运输成本降低的同时又使怎么写作水平得到改善是物流配送管理工作的一项重要内容.

Dijkstra算法在物流配送运输中的最短路径优化参考属性评定
有关论文范文主题研究: 关于计算机的论文范文文献 大学生适用: 学士学位论文、电大论文
相关参考文献下载数量: 66 写作解决问题: 写作参考
毕业论文开题报告: 文献综述、论文小结 职称论文适用: 技师论文、初级职称
所属大学生专业类别: 写作参考 论文题目推荐度: 免费选题

本论文是笔者在湖北某软件公司实习期间,参与的一个物资综合管理系统,其中有一个模块是关于车辆调配和物流运输的,然后在此基础上实现基于Dijkstra算法并对其进行优化的物流配送最短路径选择算法.通过实验发现,不仅节约了物流成本,而且提高了运输的效率.

1Dijkstra算法介绍

1.1Dijkstra算法思想及步骤

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]等于∞.因而很多操作无效而导致执行效率降低.


2Dijkstra算法优化

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算法是计算从起点到某一顶点的最短路径,我们也可以将其表述为计算从某一顶点到起点的最短路径.因此求最短路径问题可以分解两个子问题,即计算由起点到终点的最短路径和由终点到起点的最短路径,这样就大大降低了求解最短路径问题的复杂度.

传统Dijkstra算法在提取最短路径节点时需要遍历所有的在集合V―S中的顶点,并更新最短路径值,所以算法的实践复杂度为O(N2).而本文改进的算法将此问题分解为两个子问题进行求解,而且符合并行处理思想.这样对执行速度有了较大的提高,特别是对于网络图中顶点数和边较多的情况下.

3结束语

在物流配送中,合理的配送路线规划不仅能够及时地满足客户的需求,而且可以节约配送中心的运输成本,所以求出最短配送路径算法的效率具有重要的作用.本文结合配送路线规划的实际情况,选择Dijkstra算法作为物流配送路线规划的核心算法,并对它的不足提出了优化方法,在数据存储和算法思路两个方面进行了优化,使优化后的算法能够提高配送路线规划的效率.最后经实验证明,优化后的Dijkstra算法不仅节约了物流成本,而且提高了运输效率.