Efficient Route Planning on Public Transportation Networks: A Labelling Approach

EfficientRoute Planning on Public Transportation Networks:A Labelling Approach

sigmod-2015

1.    问题定义

本文是基于公交网络的有效的路径规划。

1)           EAP:Earliest Arrival Path 最早到达时间路径

2)           LDP:Latest Departure Path 最晚离开路径

3)           SDP:Shortest Duration Path 最短持续时间路径

对于EAP最早到达时间路径,给定一个开始时间,即在起始点的时间,计算最早到达终点的路径。对于最晚离开时间路径给定一个到达终点的时间计算从开始点离开最晚的路径。用标签来表示,标签的格式如下:<u,w,v,b,startTime,endTime> 一共6个元素,u,w,v分别是开始点,中间点,结束点;startTime,endTime分别是这条路径的开始时间和结束时间。b是公交的类型。

我们要求的就是EAP,LDP,SDP这三种路径,以便于人们的查询。

2.    问题求解

1)首先了解什么是受控制路径。

受控制的路径:一条路径A,开始时间比路径B开始时间晚,但结束时间不晚于路径B的结束时间。或者路径A开始时间不早于B,而结束时间早于路径B的结束时间。

我们要访问的是不受控的路径,受控的路径不去访问。

2)我们要对每一个结点建立一对标签,标签分别是Lin,Lout,记录从一个顶点的in标签和out标签。先访问哪个结点开始建立呐呢?对于访问结点有一个排名,从各个结点中找一个覆盖路径条数最多的。例如:下图中 v1 6条路径(<1,2,2,3><1,2,3,4><1,2,4,5><2,3,3,4><2,3,4,5><3,4,4,5>),v29条(<1,2,2,3><1,2,3,4><1,2,4,5><2,3,3,4><2,3,4,5><3,4,4,5>;<2,3>;<3,4>;<4,5>),v36条路径。

2015年10月17日 - 雨竹清风 - 雨竹清风的博客

 将这个覆盖较多的结点给出一个最大值,然后连同其边删除后,计算剩余结点所包含的的路径的条数,则获得相应的分数。这样每个结点的排名就出来了。例如上图中将v2的排名赋为3,删除v2以及相关连的边,得到的v1,v3路径为0,所以随便给定一个互异的分数即可,只要比v2的小就可以。

然后根据结点的访问顺序开始访问,从开始点v出发的边中选出一个最晚开始时间(为什么呐?)的路径。从一个点出发,可能不止一条路径,因此建立一个小顶堆(按到达时间排列,时间晚的入堆时间也晚)。堆中的格式如下:2015年10月17日 - 雨竹清风 - 雨竹清风的博客 开始点,结束点,开始时间,结束时间,公交类型。

 

2015年10月17日 - 雨竹清风 - 雨竹清风的博客

首先入堆的是1,2,10,11,a; 用一个表来记录相应的信息,t是到达时间,b是公交类型,p代表的是转折点,即通过的结点,如下图所示。然后将从v2出发找到对应的出边<11,12>,<11,13>将其入小顶堆。随后一直找下去,直到没有出边为止。这是处理从<10,11>这条边出发的路径,因此下一次找的是从<9,10>边出发的路径。。。。。。

 2015年10月17日 - 雨竹清风 - 雨竹清风的博客

 最终处理完<10,11>开始的路径,获得的这张表的数据如下:

 2015年10月17日 - 雨竹清风 - 雨竹清风的博客

 从这张表开始建立inout标签,标签中元素有<开始点/终点,开始时间,结束时间,公交类型,转折点>,如图所示:2015年10月17日 - 雨竹清风 - 雨竹清风的博客
 

null代表的是公交类型不一致,或者没有转折点。

将从开始点出发的每一条边的路径全部做完上述操作后,inout标签就建立完了。这是对于一个结点出发的,下一步就是将这个结点以及边删掉后剩余的结点出发重复上述建立标签的过程,直到所有的结点全部建立完毕结束。整个算法的时间复杂度是(为什么呢?)。

怎么找上述3种路径呢?

SDP为例:从in,out标签中查找即可,查找开始点的out标签, 结束点的in标签,若有重叠的点,那么就是一条路径。还有一种情况就是通过某个结点进行了转折,则查找某个结点的inout标签中有没有从开始点入,out标签中有没有到达结束点的,这样也是一条路径。从这些路径中选择持续时间最小的即可。

    下图中红色区域便是找到的标签。

2015年10月17日 - 雨竹清风 - 雨竹清风的博客

对于开始点结束点相同的标签可以压缩成一种形式,如下,以v1开始,v2结束的标签:   2015年10月17日 - 雨竹清风 - 雨竹清风的博客压缩后为:r1代表的是对公交类型的压缩。2015年10月17日 - 雨竹清风 - 雨竹清风的博客


也可以通过转折点压缩:

2015年10月17日 - 雨竹清风 - 雨竹清风的博客

 压缩后:

 2015年10月17日 - 雨竹清风 - 雨竹清风的博客

 在查询的时候有可能是从压缩找到另一个压缩的标签,所以直到找到一个不是压缩的为止。

3.总结

通过建立标签的形式来查询SDP,LDP,EAP的路径,所以可以对于某些问题建立索引是一个好的方法。本文提出了两种压缩方式:一个基于路径压缩,一个基于转折点压缩。对于标签进行压缩,也是一种处理方式。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值