我正在为我国的所有公共交通工具(公共汽车/火车/空中)制定旅行计划(或一般时间表申请)。
项目的状态处于中点,现在我在完成应用程序中更困难的部分时遇到了一些困难。
描述当前状态:
数据存储在MySQL数据库中,建模为GTFS(通用(Google)转运Feed规范)
我只是通过查询数据库来获取直接路由(连接两个临时表,我发现它足够有效)
目前用PHP完成,但如果需要,我可以用Java重新编写它
所以,当两点之间有直接联系时,一切都很好。当没有直线时,困难的部分就是完整的旅程。
假设用户想要从city A
前往city D
,但由于这些城市之间没有直线,他需要通过city B
和city C
。
如何在这种情况下获得优化路线和转移?
我的想法到目前为止都倾向于使用图表,但在这种情况下我需要一个时间相关的定向加权多图,而我现在真的不知道如何实现时间依赖部分。
使用Dijkstra
,A*
或Floyd–Warshall
算法可以完成路线,但由于在不同时间有离场,我不确定如何实施,以获得最佳解决方案。我需要考虑段的持续时间(A到B,B到C),等待传输的时间,也可能是距离。
为了澄清,我不需要一个结果。我想获取city A
所有可以让用户转到city D
的离开的每日列表,并在需要时进行转移。
基本上,我想要获得的是这样的(取自保加利亚铁路,或者就此而言,无论哪个铁路网站),所选择的一天从Sofia
到{的所有出发的列表{1}}如果需要,可以Kystendil
进行转移:
关于图解决部分,我可以使用jGraphT在Java中创建应用程序,缓存结果(它们可能每隔几个月更改一次),并在PHP中使用它们(或通过PHP调用应用程序)
如果我不够清楚,请询问。
我知道这已经完成了很多次(几乎所有火车网站都有解决方案),但我不知道哪些条款甚至可以搜索。
所以,我的问题是:有人可以指导我如何解决这类问题吗?
或者至少应该通过哪些术语搜索想法以及应该如何完成。
可能对StackExchange网络中的其他网站提出了一些建议。
谢谢。