本文主要是介绍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>),v2有9条(<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>),v3有6条路径。
将这个覆盖较多的结点给出一个最大值,然后连同其边删除后,计算剩余结点所包含的的路径的条数,则获得相应的分数。这样每个结点的排名就出来了。例如上图中将v2的排名赋为3,删除v2以及相关连的边,得到的v1,v3路径为0,所以随便给定一个互异的分数即可,只要比v2的小就可以。
然后根据结点的访问顺序开始访问,从开始点v出发的边中选出一个最晚开始时间(为什么呐?)的路径。从一个点出发,可能不止一条路径,因此建立一个小顶堆(按到达时间排列,时间晚的入堆时间也晚)。堆中的格式如下: 开始点,结束点,开始时间,结束时间,公交类型。
首先入堆的是1,2,10,11,a; 用一个表来记录相应的信息,t是到达时间,b是公交类型,p代表的是转折点,即通过的结点,如下图所示。然后将从v2出发找到对应的出边<11,12>,<11,13>将其入小顶堆。随后一直找下去,直到没有出边为止。这是处理从<10,11>这条边出发的路径,因此下一次找的是从<9,10>边出发的路径。。。。。。
最终处理完<10,11>开始的路径,获得的这张表的数据如下:
从这张表开始建立in,out标签,标签中元素有<开始点/终点,开始时间,结束时间,公交类型,转折点>,如图所示:
null代表的是公交类型不一致,或者没有转折点。
将从开始点出发的每一条边的路径全部做完上述操作后,in,out标签就建立完了。这是对于一个结点出发的,下一步就是将这个结点以及边删掉后剩余的结点出发重复上述建立标签的过程,直到所有的结点全部建立完毕结束。整个算法的时间复杂度是(为什么呢?)。
怎么找上述3种路径呢?
以SDP为例:从in,out标签中查找即可,查找开始点的out标签, 结束点的in标签,若有重叠的点,那么就是一条路径。还有一种情况就是通过某个结点进行了转折,则查找某个结点的in,out标签中有没有从开始点入,out标签中有没有到达结束点的,这样也是一条路径。从这些路径中选择持续时间最小的即可。
下图中红色区域便是找到的标签。
对于开始点结束点相同的标签可以压缩成一种形式,如下,以v1开始,v2结束的标签: 压缩后为:r1代表的是对公交类型的压缩。
也可以通过转折点压缩:
压缩后:
在查询的时候有可能是从压缩找到另一个压缩的标签,所以直到找到一个不是压缩的为止。
3.总结
通过建立标签的形式来查询SDP,LDP,EAP的路径,所以可以对于某些问题建立索引是一个好的方法。本文提出了两种压缩方式:一个基于路径压缩,一个基于转折点压缩。对于标签进行压缩,也是一种处理方式。
这篇关于Efficient Route Planning on Public Transportation Networks: A Labelling Approach的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!