0

ノードである既知のポイントAとBの間の最短ルートを見つけることができ、それらが他のノードに接続されているパス検索アルゴリズムを探しています。

私の場合、約20,000のノードがあり、それぞれが最大16の接続(リンク)を持つことができます(つまり、ノードAがノードBに接続されている場合、ノードBがに接続されているわけではありません)ノードA、これは右車線運転と左車線運転用で、高速道路用です)

問題を回避するために、これが私が接続で意味することのイメージです(指示されたものと一緒に):

ここに画像の説明を入力してください

マップの例: ここに画像の説明を入力してください

ここでのAからDへの最短ルートはA->C->Dであり、DからAへの最短ルートはD->Aです。

私は各リンク間のすべての距離を知っており、負の距離はありません。(ノードのXYZ位置をすべて知っているため)

要するに:

-私の場合、CまたはC ++(両方を使用できます)で最速のアルゴリズムは何でしょうか?

-もちろん、ルートを取得する必要がありますが、ポイントAからポイントBまでの距離を(計算/または)取得する必要もあります)

-私のニーズに対応できるライブラリはありますか

-オプション:このためのマルチスレッド(サポート)を備えたライブラリはありますか(ある場合はどれですか)?

-利用可能なコード例はありますか?

私がこの質問をする理由は、非常に遅いコードを改善したいからです。現在ダイクストラが使用されており、この状況に対応していないため、コードを書き直してやりたいと思います。

私が現在使用しているコードは次のとおりです。

https://gpb.googlecode.com/files/RouteConnector_180.zip

また、コードの実際の使用例を次に示します。

http://www.youtube.com/watch?v=EHj7GavsbqQ&t=40

4

2 に答える 2

2

A *は、一般的な問題に対して可能な最速のパスファインディングアルゴリズムであることが証明されています。

于 2012-11-28T01:11:24.747 に答える
0

ダイクストラアルゴリズムを試してください。また、Boost::Graphはそれを実装しています。

于 2012-11-19T11:24:04.617 に答える