А-звездный поиск. Раздвижная головоломка из плитки. Что это за эвристика?

В настоящее время я пытаюсь научиться программировать головоломку со скользящей плиткой с 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

0 ответов

Другие вопросы по тегам