I am trying to code a simple A* solver in Python for a simple 8-Puzzle game. I have represented the goal of my game in this way:
goal = [[1, 2, 3],
[8, 0, 4],
[7, 6, 5]]
私の問題は、目標のために単純な Manhattan Distance ヒューリスティックを作成する方法がわからないことです。一般的な状態と目標状態の間の距離の合計として定義する必要があることはわかっています。次のようにコーディングする必要があると思います。
def manhattan_distance(state):
distance = 0
for x in xrange(3):
for y in xrange(3):
value = state[x][y]
x_value = x
y_value = y
x_goal = ...?
y_goal = ...?
distance += abs(x_value - x_goal) + abs(y_value - y_goal)
return distance
私の問題は、ゴール状態のピースの座標を明示的に表現していないため、ボードの「値」ピースに対して「x_goal」と「y_goal」を定義する方法がわからないことです。割り算とモジュール演算でやってみましたが難しいです。
「x_goal」変数と「y_goal」変数を定義するヒントを教えてください。
ありがとうございました