我有一个巴士/火车/ …,每个日期的到达/离开时间等数据库。我正在寻找一种方法来搜索两个位置之间最快(最短/最便宜/最少的过渡)行程。我希望将来能有任意位置,使用OpenStreetMap数据在站点之间以及从站点到起点/终点之间进行步行,但是暂时我只想在数据库中找到两个站点之间的路径。
问题是我似乎找不到有关此主题的太多信息,例如,该Wikipedia页面上有很多文本,其中绝对没有有用的信息。
我发现的是GoogleTransit中使用的GTFS格式。尽管我的城市没有提供公共数据馈送(甚至没有私有数据馈送),但我已经拥有了GTFS包含的所有重要信息,并且进行转换将是微不足道的。
有一些基于GTFS的软件,例如OpenTripPlanner,它也可以使用OpenStreetMap进行行人/汽车/自行车路线选择。
但是 ,路由代码没有得到很好的记录(至少从我发现的情况来看),我不需要整个东西。
我要寻找的只是对可以使用的算法,其性能以及一些伪代码的良好概述。
因此, 问题是 ,给定一个停靠点,路线以及到达/离开/旅行时间的列表,我如何轻松地找到从停靠点A到停靠点B的最快路径?
w:Edges->R
(*)对于“最小过渡”,您的权重实际上是每个边的1,因此您甚至可以通过运行BFS或双向 BFS而不是dijkstra来优化此权重,如我在这篇文章中所解释的。距离,但实际上是相同的算法]。
编辑 作为对图表的非静态性质的编辑(对于时间),您在注释中提到的时间(关于价格和过渡数量,我上面提到的内容仍然适用,因为这些图表是静态的),您可以使用距离向量路由算法,它实际上适用于动态图,是Bellman Ford算法的分布式变体。 算法思路: