8

A* を変更して、ターン数が最小の最短経路を返すことは可能ですか?

複雑な問題が 1 つあります。ノードは、将来のターンを決定する際に親ノードが関連するため、位置だけでは区別できなくなり、方向も関連付ける必要があります。

しかし、私が抱えている主な問題は、ターン数を部分パス コスト (g) に変換する方法です。g にターン数 (t) を掛けると、奇妙なことが次のように発生します。終わり近くに N ターンある長いパスは、最初に N ターンある短いパスよりも優先されます。

私が検討しているもう 1 つの最適ではない解決策は次のとおりです。最短パスを計算した後、2 回目の A* 反復を (別のパス コスト式で) 実行できます。今回は最短パスの x/y 範囲内に制限され、曲がり角の少ない道。他のアイデアはありますか?

4

3 に答える 3

0

本当にターン数を最小限に抑えたい場合 (ターンとパスの長さの間の適切なトレードオフを見つけるのではなく)、遮るもののない直線で接続されたノードのすべてのペアにエッジを追加して、問題空間を変換してみませんか? これらは、ターンなしで移動できるペアです。ノードごとにそのようなエッジが O(n) 個あるため、新しいグラフはエッジに関して O(n 3 ) になります。これにより、A* の解は時間的に O(n 3 ) となります。

マンハッタン距離は、A* の適切なヒューリスティックかもしれません。

于 2016-07-10T16:39:22.020 に答える