城市公交网络的最短路径算法研究

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

1.引言
随着信息技术的发展,最短路径问题广泛的应用于多个研究领域,在车辆导航系统、车辆调配、无人飞行器路径规划、机器人视觉以及无线通信网络分时分组最优路网等方面都有一定的研究价值。

它要解决的主要问题是在给定的网络中寻找从出发点到目的地之间的最短路径。

根据实际应用的要求不同,在路经规划中可以采用的优化标准有多种,如最短行车距离、最少旅行时间、最低通行路费等。

在己有公共交通条件下,设计合理的公交出行路径有助于人们选择出发时间、出行线路和换乘方案等。

公交出行路径选择实质上是研究乘客在公交网上的分布规律,即研究乘客给出起迄点后,如何自动生成最优的出行路径方案。

城市公交线网是分布在城市道路网上的,它是若干不同公交线路的集合。

每条公交线路又是由起迄点及其间的若干个空间位置不同的站点连接而成,因此在庞大复杂的公交线网中,乘客从任意起点出发到目的地之间路径的选择不是惟一的。

“换乘次数”是大部分公交乘客在选择出行方案时首先考虑的因素,“出行距离最短”为第一目标。

现有的出行路径选择模型多为基于上述三种目标的单一模型,并且现有最短路径算法基木上是在道路网上进行的,不可能直接应用于公交网络寻优[1]。

因此寻找适合于公交网络的最短路径算法是值得深入探讨的一个问题。

本文探讨了Dijksra 算法的优化途径,介绍了几种常用的Dijksra 优化算法,最后在原始Dijksra 算法的基础上提出基于椭圆限制区域的优化二叉堆优先级队列的改进型Dijkstra 最短路径算法,并用实例验证了该算法的正确性和可行性。

2.Dijkstra 算法简介
Dijkstra 算法是E.W.Dijkstra 在1959年提出,该算法能求出图中一个结点到其他任一结点的最短路径,是目前公认的较优的求解方法。

其定义为[2]:Dijkstra 算法也称标号设定法。

它给赋权图G 中每个结点记一个数,称为标号。

标号有两种:临时标号(T 标号)和固定标号(P 标号)。

结点T 标号表示从始点到该结点的最短通路的权的上届;P 标号表示从始点到该结点的最短通路长。

算法的每一步把某个结点的T 标号改变为P 标号,并改变其他结点的T 标号。

一旦终点得到了P 标号,算法就结束。

若希望求得始点到其它任一结点的最短路径,则最多经n-1步(n 是G 的结点数)算法停止。

Dijkstra 算法的具体步骤如下[2]:(设W ij 是连接结点V i 和V j 边的权,若V i 和V j 没有边相连,则令W ij =∞[在实际计算中,可用任一足够大的数代替],对图中每个结点V i ,令W ij =∞)
(1)给始点V 1标上P 标号d(V 1)=∞,给其他结点标上T 标号d(V j )=W 1j (2≤j ≤n)。

(2)在所有的T 标号中取最小者,设结点V k 的T 标号d(V k )最小,则将V 的T 标号改为标号,并重新计算具有T 标号的其他各个结点V j 的T 标号d(V j )=min{d(V j ),d(V k )+W kj }(1)
(3)若终点已具有P 标号,则此标号即为所求最短路径长,算法停止;否则转第二步。

(4)若求解始点到其它每一结点的最短路径,则第3步修改为当所有结点都已具有P 标号算法停止。

Dijkstra 算法的时间复杂度为O(N 2),其中N 为网络节点数[3]。

随着网络节点数的增加,算法的运行效率降低。

城市公交网可以看作一个加权有向图,节点代表公交站点,边表示街道或道路,权可以代表两个站点间道路的运行距离或运行时间。

在城市公交网节点数较大的情况下,算法求解速度慢,花费时间长,很难满足快速计算要求,因此,对经典的Dijkstra 算法进行优化就变得非常有必要。

3.常用的Di jkstra 优化算法
目前,对于算法中快速搜索技术的实现,主要有桶结构法、队列法以及堆栈实现法。

T QQ,DKA 以及DKD 在这方面是比较典型的代表[4]。

T QQ 虽然是基于图增长理论的,但是快速搜索技术同样是其算法实现的关键,它用两个FIFO 的队列实现了一个双端队列结构来支持搜索过程[5]。

DKA 和DKD 是采用如图1所示的桶结构来支持这个运算,其算法的命名也来源于此。

在DKA 算法中,第i 个桶内装有权值落在[b ﹡i,(i+1)﹡b]范围内的可供扫描的点,其中b 是视网络中边的权值分布情况而定的一个常数。

每一个桶用队列来维护,这样每个点有可能被多次扫描,但最多次数不会超过b 次。

最坏情况下,DKA 的时间复杂度将会是O(m ﹡b+n(b+c ∧b)),其中c 是图中边的最大权值。

DKD 将点按权值的范围大小分装在两个级别的桶内,高级别的桶保存权值较大的点,相应的权值较小的点都放在低级别的桶内,每次扫描都只针对低级别桶中的点。

当然随着点的插入和删除,两个桶内的点是需要动态调整的。

在DKA 算法中,给每个桶一定的范围以及DKD 中使用双桶,在一定程度上都是以空间换时间的做法,需要改进。

图桶结构示意图
城市公交网络的最短路径算法研究
马东岭
(山东建筑大学土木工程学院山东
济南
250101)
【摘要】本文提出了一种基于椭圆限制区域的优化二叉堆优先级队列的改进型Dijkstra 最短路径算法。

此算法是在对城市交通网络空间分布特征进行统计分析的基础上,针对具体的起点、中间点以及终点,来设定合理的椭圆限制搜索区域,再以当前节点的邻接点与当前点和终点连线夹角最大作为贪婪搜索策略。

最后用实例验证了算法的正确性和可行性。

【关键词】公共交通网络;最短路径算法;二叉堆优先级队列
Research of th e the shor test p ath algor ithm of urb anized pu blic tr affic n etwor ks
M A Don g-ling
(In stitute of Civil E ngineer in g,Sh and ong J ianzhu Un iversity,Sh andon g J in an 250101)
【Ab str act 】T he paper pro poses the improv ed Dijkstra shortest path alg orithm ,wh ich im prov e the tradition al o perations of binary heap optimal array o n the base of lim iting regio n o f using ellipse.It is based o n the statistical analysis of character o f city transpo rtation space distributing ,and design a reasonable lim iting region of u s ing ellipse to reduce the scale o f the search of the alg o rithm .And it makes use of the theo ry that the beeline is the sho rtest between two po ints,and we get th e new g reedy search strateg y,w hich is determ ined by the maximum degree that com bined by the current node,its nearest node and destinatio n no de.Finally u sed the example to confirm the accuracy and the feasibility.o f the alg orithm.
【Key words 】public traffic netwo rks,the shortest path alg orithm ,binary heap o ptim al
array
5
k P :
11

4.改进的Dijkstra 优化算法
根据上述优化原则和优化的描述,可以从减少算法遍历的临时结点来优化,基于此,提出了以下的想法,采用椭圆限制搜索区域,减少遍历的临时结点数;利用两点间直线最短的原理,以当前节点的邻接点与当前点和终点连线夹角最大作为贪婪搜索策略[6]。

4.1优化算法的基本原理
在算法中每经过一个节点,只选取节点和起始点的关联边与该节点与中止节点连线夹角最大的一条边,不仅考虑了路段具有方向性特征,在选取局部最优解时也在一定程度上考虑了全局的最优性,同时,进行起止点直线左右两边各一个满足前述夹角最大的节点的搜寻即搜索一棵二叉树,这样,就大大提高了最短路径解的精确性。

求起点s 到终点t 的最短路径:首先根据st 的直线段距离st 构造一个椭圆限制搜索区,以s ,t 为两焦点,M D=1.379st 为长轴,把结点的选取限制在此椭圆内。

设有一路径队列,最先放有起点s ,取出s 作为当前节点,K1是所有与点s 相连且s K1与st 的夹角为负的节点,K2是所有与点s 相连且s K2与st 的夹角为正的节点,即:
∠(st ,sp i 1)≤0i1∈K1(2)∠(st ,sp i 2)≥0
i2∈K2
(3)
在K1和K2中分别找出满足上两式的节点P1和P2。

有Parent (P1)=Parent(P2)=0,将P1和P2放入路径队列,依次取出队列中的节点
作为考虑对象,找出它们的子节点并放入队列,如此反复,直至队列为空,其中每个当前节点将最多有两个子节点,为了减少时间花费,并使构造的二叉树最小,可采用下列几种方法:
(1)在算法中每经过一个节点,只选取该节点和起始点的关联边与该节点与终止节点连线夹角最大的一条边,得到的解作为优化算法的最短路径长的初始值∠max;
(2)对路径队列采用策略FIFO 尽量减少节点遍历数;
(3)对子节点P1和P2,在加入路径队列前,进行判断,如果是终点或已经访问过的节点t,则不用加入路径队列,但要对其影响的节点和子节点的累计长度进行修改;如果该子节点当前的累加长度加上该点到终点t 的直线距离大于当前终点t 的累加长度,也不加入到路径队列即不作为二叉树的分叉。

通过上述的算法策略和限制实际得到的二叉树节点数减少。

4.2优化算法的流程
对基于节点-弧段数据结构的优化算法而言,需定义一个存放节点编号的路径队列,我们用数组Node[]用于存放节点的编号。

设i 是当前访问到的No de[]数组的序号,num 是No de[]数组中加入的节点的总数,优化算法的算法流程如图2所示。

图2优化算法流程图
5.算法的应用实现
该算法的实现有三个主要的子程序,第一个是读取节点,线路数据的程序;第二个是搜索最短路径的程序;第三个是绘制最短线路的子程序。

第一个和第三个子程序使用M apBasic 语言进行编写,第二个程序则使用V 语言进行编程,调用M I f 数据。

M apBasic 是在M apInfo 平台上开发用户定制的应用程序的理想的编程语言,通过使用M apB asic 进行二次开发,能够扩展MapInfo 功能。

MapBasic 软件提供了一个应用程序开发环境,在这个环境下,用户可以使用M apBasic 语言编写应用程序,然后编译,链接成只能在M apInfo 系统中运行的可执行文件。

本文采用北京市公交数据作为实验数据,包括有近400条公交线路的线层和有将近2500个公交站点的点层。

建立公网络拓扑关系需要几分钟,由于建立好完备的公交信息之后每次查询只需读取数据库而不用占用内存建立矩阵,这样计算速度明显加快。

另外根据生成的公交网络信息,还可以进行公交线路查询等其他查询功能。

查询结果如图3所示,图中粗黑线为最短路径,虚线为每次换乘乘坐的公交车的线路全程,另外还标出起点站、终点站及换乘站。

图3最短路径查询结果示意图
6.结论
本文在M apInfo 平台上利用VC 语言实现了公共交通网络中的最短路径分析,通过简单的点击操作,确定起点、中间点以及终点,得到最短路径,并在电子地图上将最短路径予以高亮显示,既方便又直观。

实践证明,该算法具有计算方便、简单、有效降低Dijk stra 算法的时间复杂性、提高系统的运行效率等优点。

当然,城市公交网络的最短路径服务还有很多问题需要进一步的深入研究,它也是今后很长一段时间内都将面对和讨论的问题。

【参考文献】
[1]翁敏,毋河海,杜清运,蔡忠亮.基于公交网络模型的最优出行路径选择的研究.武汉大学学报信息科学版,2004,29(6):551-551.
[2]李鸣山、
张银州.离散数学.武汉:湖北科学技术出版社,1994.[3]陈蔚敏,吴伟民.数据结构.北京:清华大学出版社,1997.
[4]陆锋,卢冬梅,崔伟宏.交通网络限制搜索区域时间最短路径算法.中国图形图像学报,1999,4(10):849-853.
[5]刘光.地理信息系统—基础篇.北京:中国电力出版社,2002.
[6]D .Rbe rtse kas.A S impl e and Fast L a bel Correcting Al gorithm for S hortest P aths N e tw orks.2003,23(2):703-709.
作者简介:马东岭(1980.05—),女,山东济南人,助教,主要从事测绘专业的教学和科研工作。

[责任编辑:张艳芳
]
6
C ap n o 1。

相关文档
最新文档