矩阵迭代和Dijkstra两种算法在交通运输路径选择中的对比

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

矩阵迭代和Dijkstra 两种算法在交通运输路径选择中的对比

本文基于矩阵迭代算法及 Dijkstra 算法,对两者在最短路径问题中的差异性进行了对比。结果表明: Dijkstra 算法可一次求得一点到其他各点的最小阻抗,该算法在进行最短路径的计算时,需要对相邻点进行反复搜寻,计算效率较低,收敛速度较慢。矩阵迭代算法没有严格路径次序限制迭代顺序,可实现算法并行计算,计算速度较高。在阻抗矩阵为对称矩阵时,在经过迭代后,得到的矩阵仍为对称矩阵,这样可使每次迭代的计算量得到减少。通过在重庆市路网上随机选取 8个终点及起点,对起始点 1 点到 8 点的最短路径及阻抗进行计算表明,Dijkstra 算法所用时间为 0.673s ,迭代矩阵算法所用时间为

0.501s ,矩阵迭代算法的计算速度更快。在矩阵4X4、6X 6、8X8中,矩阵

迭代算法的运算时间均比 Dijkstra 算法的运算时间要小,其迭代次数次数也远远小于 Dijkstra 算法的迭代次数,这进一步表明,矩阵迭代算法的计算效率要比 Dijkstra 算法的计算效率高。

1引言随着我国经济发展越来越快,城市交通运输路径也日趋紧张,在我国大中型城市中,普遍存在公共交通结构的不合理状况 [1-

4] 。城市公共交通网络由众多路径及网络节点构成。由于城市人口和城市规模的不断增长,优化交通运输路径,解决交通出行者出行时间最小、服务最大化、线网效率最大等,方便居民出行[5-7] 。在城市交通严

重堵塞时,要使交通出行者出行便利,则必须对最短交通路径及交通状态信息进行实时全面了解;在一定程度上,这种信息诱导作用能对重点道路的拥堵起到缓解作用 [8] 。最短路径的算法有多种,对各种算法进行分析、理解、应用,比较这些算法的在实际应用效率,具有非常重要的实用意义 [9-11] 。通常情况下,典型最短路径问题算法有两种,分别为矩阵迭代算法、 Dijkstra 算法。本文基于这两种典型算法,对两者在最短路径问题中的差异性进行了对比,方便交通出行者对交通运输路径的选择。

2最短路径及路网阻抗

在交通流分配中,最基本的算法就是最短路径算法。最短路径是指在一个网络中,已知相邻节点间的线路长度,要在某一起点到某一终点间找出一条长度最短的路线。在交通领域,最短路径研究较多,在路网中,因受道路条件、道路绕行距离、交通条件影响,使得不同交通路径,所需交通费用有一定的差异。在广义上,交通费用包括道路通行时间、通行距离、燃料的使用等;在狭义上,道路通行时间是阻抗,或将影响出行的其它因素进行折算,转化成通行时间,将其作为道路网交通阻抗,交通阻抗最小的路径就是最短路径。图 1为路网的阻抗,表 1 为道路的可用阻抗矩阵。

3Dijkstra 算法和矩阵迭代算法

3.1Dijkstra 算法

最短路径使用最广泛、最基本的算法就是 Dijkstra 算法,在求网络中某一节点到其他各节点的最短路径时,网络中的节点被 Dijkstra

算法分成三部分,分别为最短路径节点、临时标记节点、未标记节点。在算法开始时,源点经初始化,转为最短路径节点,其他节点则为未标记节点。在执行算法时,从最短路径节点扩展到相邻节点,非最短路径节点的相邻节点每次都要修改为临时标记节点,对权值是否更新进行判断,权值最小节点从全部的临时标记节点中提取,在修改为最短路径节点后,将其作为下次扩展源,重复前面步骤,在全部的节点做过扩展源后,结束算法。

Dijkstra 算法属于比较经典的最短路径算法,它可对一点到网络内所有节点最小阻抗进行计算,并将相应最短路径推算出。 Dijkstra 算法计算步骤共 5 步,第一步是将 Dijkstra 算法起始点进行标号,记为 P,且P (o) =0,其余节点标号为T,且除T (0)外,其余节点的T (i ) =s;第二步是将o点相邻点向量r找出,即dor ( i )工鸡,对所有标号为 T 的值进行比较,找出最小值,即 P(k), T 最小时所在的点为 k 点;第三步是按照第二步方法,将 k 作为起始点,满足

T( r( j ))=minT( r( j )), P(k)+dkr( i ),将最小值所在点 k/ 找出,记 P(k/ );第四步是迭代第三步,在全部节点被标志为 P 后,则求出了 o 点到其余节点的最小阻抗;第五步是根据所需,对目标点进行查询,以目标点d为起始点,将满足式 P (j ) =dij+P (i )的i点找出,最短路径中 j 的前一点就是 i 点,对 i 点之前的点进行继续搜索,同样根据P(j ) =dij+P (i ),直到搜索起点o,图2为Dijkstra 算法程序流程图。

3.2矩阵迭代算法

矩阵迭代算法首先要构造距离矩阵,在矩阵中,给出了节点间经过一步到达某一点的距离,见图 3,通过距离矩阵的迭代运算,两步到达某一点的最短距离就得到了。因此,使用矩阵迭代算法研究最短路径问题时,各出行节点间最短路线要知道。

在 D( 4)=D( 3)时,具有最短距离矩阵,通过矩阵,可将最短距离计算出。通过反向追踪,对相应最短路线进行确定。

矩阵迭代法指的是从路径集合中进行挑选,将最短路径分步选出来,完成矩阵迭代,则表明可计算出每一对 od 点间的最短路径。迭代矩阵算法思想类似于 Dijkstra ,不同的是其采用矩阵形式对最短路径问题的进行思考,也就是在 od 两点间,尝试性选择中间路径,计算每个可能的中间路径,并将最小节点选出,并进行迭代计算,得出到达该最短路径是要经过几个中间节点。当所有节点最短路径迭代全部求出后,矩阵迭代结果保持稳定,不再变化,这时表明迭代结束。

矩阵迭代算法的计算步骤共 4步,第一步是给定od,其阻

抗方阵为 D, D仁D 按照公式 dij ( 2)=min (di1 ( 1)+d1j,di2

(1)+d2j,…,din (1) +dnj ), n 表示矩阵阶数 n, i=1 〜n,

j=1〜n。根据此公式,将两步到达目的地最小阻抗计算出,D2

为得到的新矩阵。当 dik+dkj 达到最小时,将 k 值记为 k(1),也就是最短路径中的一点;第二步是根据公式 dij ( 3)=min(di 1

(2)+d1j , di2 (2) +d2j,…,din (2) +dnj), n 表示矩阵阶数n, i=1〜n, j=1〜n,得到D3o最小值对应点记为k (2);第三步则依次类推, dij (m) =min(di1 (m-1) +d1j , di2(m-1) +d2j ,…, din(m-1)

相关文档
最新文档