これはメーリングリストから入手します。Shooting *はエッジベースであるため、A *とDijkstraがvromの頂点から頂点へ移動する間、エッジからエッジへと進みます。したがって、グラフのすべてのエッジのすべての隣接エッジを保持するデータ構造が必要です。元の道路ネットワークから折れ線グラフ(http://en.wikipedia.org/wiki/Line_graph)を作成することによっても行うことができます。そして、あるエッジから別のエッジに移動するためのあらゆる種類の制限またはペナルティを実際に表す、エッジ間通過コストを(隣接するエッジ構造の特別な属性として、または折れ線グラフのコストとして)割り当てることができます。ターンの場合のターン制限、または信号機のような他の種類の制限として。これがあれば、エッジとして頂点を使用するA *または他の最短経路アルゴリズムを使用できます。
それがシューティング*の背後にあるアイデアです。
そして、私はこれをAnton Patrushevからagaianで入手します:http ://download.osgeo.org/pgrouting/forum/pgrouting.postlbs.org/discussion/topic/276.html
。次のように記述します。A*では、マンハッタン関数(| Dx | + | Dy |)/ 2 http://pgrouting.postlbs.org/browser/trunk/core/src/astar_boost_wrapper.cpp#L75に類似したものを使用しています。
そこで、コメントアウトされた他の試みが表示されます。別の機能を試してみてもOKです。おそらくそれは歴史的な理由でした。ヒューリスティック関数と何らかの理由(今は覚えていません)により、一般的な道路網では、このIn Shooting *ではユークリッド距離を使用することにしました。http://pgrouting.postlbs.org/browser/trunk/core/src/shooting_star_boost_wrapper.cpp#L100。
他の式:-ユークリッド距離> Sqrt(Dx²+Dy²+Dz²); -マンハッタン距離> | Dx | + | Dy | + | Dz | ; -最大距離> Max(| Dx |、| Dy |、| Dz |)。
私はまだすべてについて理解していません。友達、プロセスアルゴリズムの流れ星の簡単で詳細を教えていただけますか?