私は自分のアプリでわずかに変更されたダイクストラアルゴリズムを使用していますが、それは非常に遅く、もっと良いアプローチが必要であることを知っています。私の入力データは、相互に指定された移動時間のバス停です(〜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の接続を持っている、より複雑なグラフでは、ダイクストラが遅くなります(5秒以上)。他の方法で目的地に到達する...
うまく適合する他のアルゴリズムを教えていただけますか?
私が探していた:
http://jboost.sourceforge.net/examples.html(ここには簡単な例はありません
...)
持っていると素晴らしいでしょう(オプションのものだけ):-バスの変更回数または時間を最小限にするオプション-代替方法を探すオプション(移動時間が類似している場合)
ヒントをありがとう