我在我的应用程序中使用了稍微修改过的 Dijkstra 算法,但它很慢,我知道必须有更好的方法。我的输入数据是巴士站,彼此之间有指定的行程时间(约 400 个节点和约 800 条路径,最大结果深度 = 4(最多 4 次巴士改变或什么都没有)。
输入数据(公交路线):
bus_id | location-from | location-to | travel-time | calendar_switch_for_today
XX | A | B | 12 | 1
XX | B | C | 25 | 1
YY | C | D | 5 | 1
ZZ | A | D | 15 | 0
dijkstraResolve(A,D, '2012-10-10') -> (XX,A,B,12),(XX,B,C,25),(YY,C,D,5)
=> one bus change, 3 bus stops to final destination
* A->D cant be used as calendar switch is OFF
正如您可以想象的那样,在更复杂的图表中,例如主要城市(节点)确实与不同城市有 170 个连接,Dijkstra 速度较慢(~ 超过 5 秒),因为首先一个一个地计算所有邻居,因为它不是“试图”通过其他方式到达目标目的地...
你能推荐我其他适合的算法吗?
我在看:
http://jboost.sourceforge.net/examples.html(我在这里看不到
简单的例子......)
最好有(只是可选的东西): - 选择最少数量的公共汽车更改或最少的时间 - 选择寻找替代方式的选项(如果旅行时间相似)
谢谢你的提示