【发布时间】:2018-05-06 21:46:57
【问题描述】:
我正在从事一个小型项目,该项目涉及在公交系统上寻找最佳路线。我构建了一个图,其中停靠点是顶点,边缘根据停靠点之间的时间加权。
虽然我会尝试使用 Dijkstra 的变体来找到最佳路线。在寻找下一个要考虑的边时,该算法只查看出发时间在行程中当前时间之后的边。图中有几个部分,其中公共汽车同时到达和离开同一系列的站点。为了防止不必要地切换总线,我在选择最佳边缘时增加了路线更改的成本。这出奇的好,而且速度非常快。
我遇到的困难是选择第一辆公共汽车。考虑以下场景:
Dijkstra 将倾向于乘坐巴士 A,因为它首先到达 2 站。如果你要停止 2 那就太好了。但是,如果您要停 3,巴士 B 是更好的选择,而且两者的总费用是相同的。我认为我无法避免 Dijkstra 的贪婪本性,但它对其他一切都非常有效,如果我不需要,我不想丢弃它。
有没有人知道一个好的解决方案可以解决正确选择第一站的问题(或者可能在事后调整它?)。或者,人们是否有更好的算法来解决这类问题?
【问题讨论】: