我目前的解決方案的最優化的方式是:
def distance(state):
target_state = (1,2,3,4,5,6,7,8,0)
target_matrix = np.reshape(np.asarray(list(target_state)),(-1,3))
reshaped_matrix = np.reshape(np.asarray(list(state)),(-1,3))
dist = 0
for i in range(1,9):
dist = dist + (abs(np.where(target_matrix == i)[0][0]
- np.where(reshaped_matrix == i)[0][0]) +
abs(np.where(target_matrix == i)[1][0]
- np.where(reshaped_matrix == i)[1][0]))
return dist
必須有你沒有向我們解釋的東西。曼哈頓的距離是'dx + dy',這也是一種很有效的計算方法。 –
目標狀態保持不變。有沒有更好的方式比我的方式? – Harjatin
我絕對不會爲此使用numpy ... –