私は現在、グリッドを表すために 2D 配列を使用して貪欲な最良の最初の検索を実装しています。私の実装は現在、開いているノードを返します。PriorityQueue を使用しています。通過したパス/開いたノードを返し、ノードを見ると、アルゴリズムがグリッドの一方の側から別の側に何度かジャンプしているように見えます。これを行うことになっていますか?プレイヤーがグリッドをトラバースするときに、グリッドの反対側のセルにジャンプして、そこのヒューリスティックが優れているという理由だけでジャンプするのは意味がありません。私はこのグリッドを使用しています:
これらは、開かれたすべてのノードの (y, x) 座標です (2D 配列を表すのは y, x であることに注意してください)。
0,0 Goes across the top of the board
0,1
0,2
0,3
0,4
0,5
1,5 Goes down one cell
1,4 goes left
1,6 goes right 2 spaces
0,6 goes up
1,7 goes down the side of the board
2,7 \/
3,7 \/
4,7 \/
5,7 \/
0,7 jumps up across the board
6,7
1,2 jumps up across the board
2,2
3,2
4,2
3,1
4,1
3,0
2,1
5,2
5,1
4,0
2,0
7,7 jumps up across the board
7,6
7,5
6,5
5,5
5,4
4,4
3,4
3,5