А-звездный поиск. Раздвижная головоломка из плитки. Что это за эвристика?
В настоящее время я пытаюсь научиться программировать головоломку со скользящей плиткой с 8 плитками на Python 3. В одном из найденных мной ресурсов человек объясняет эвристику манхэттенских расстояний, но затем переходит к написанию фрагмента кода, показанного ниже.
Глядя на функцию h(), мне кажется, что это на самом деле эвристика "плитки не на своем месте", а не манхэттенская. Правильно ли я так думаю?
Полный исходный код можно найти здесь: ССЫЛКА
Заранее благодарю за ваше время и помощь.
def f(self,start,goal):
""" Heuristic Function to calculate hueristic value f(x) = h(x) + g(x) """
return self.h(start.data,goal)+start.level
def h(self,start,goal):
""" Calculates the different between the given puzzles """
temp = 0
for i in range(0,self.n):
for j in range(0,self.n):
if start[i][j] != goal[i][j] and start[i][j] != '_':
temp += 1
return temp