我目前的解决方案的最优化的方式是:
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 ... –