問題:
ターン数を減らすために最適化した A* アルゴリズムを変更します。アルゴリズムは、(a,b) から ANY TILE ADJACENT TO (x,y) へのパスを見つけるようになりました。可能な場合は (x+1,y) または (x-1,y) が優先されます。
私の試みた解決策:
- 元の A* アルゴリズムを (a,b) から (x,y) に実行します。
- (x-1, ) または (x+1, )を通過するパスの最後の座標を見つけます。
- その座標平面に * から y への直線アクセス可能な垂直線がある場合は、その線に従うようにパスを修正します。
ビジュアル デモンストレーション: (X にアクセスできない S から E へのパス)
......S .....S
. X . X
. => .
. .
E E.
ただし、次のような場合に私のソリューションが機能するかどうかはわかりません。
......S .....S
. X . X
.X ??? X.
. .
E E..
誰でもこの問題の解決策を考えられますか?
注: A* アルゴリズムは、方向転換の回数を考慮して結果のパスのターン数を少なくする以外は一般的なものです。