У меня проблема с попыткой выяснить, как реализовать систему поиска траектории для шахматной изометрической карты.Исследуемый изометрический Pathfinder
Я прочитал алгоритм A * и попытался посмотреть, как он будет отображаться на изометрической карте, и результаты привели меня сюда.
Таким образом, проблема лежит здесь (я сожалею о дешевом дисплее)
Итак, я в настоящее время на зеленой черепицей (2,3), и я пытаюсь найти путь к красной плитке (3,1).
Основываясь на алгоритме A *, я пытаюсь вычислить значение F соседних плит (я сделал это только для этих 3 плиток).
Поскольку изображение отображает значение F (2,1) ниже (2,2), и это является матерью всех проблем, диагональные плитки с j + 2 и j-2 будут иметь (почти) каждый раз более низкое значение F, чем «логический» выбор.
Итак, вместо того, чтобы идти (2,2), он перейдет к (2,1).
Как я могу решить эту проблему? Может кто-нибудь подскажет мне, что мне делать?
Как вы рассчитываете G и H? О, и исходя из данных значений, похоже, что ваш H не является [допустимым] (http://en.wikipedia.org/wiki/Admissible_heuristic). Это займет 10, чтобы получить от (2,2) до (3,1), но вы говорите, что требуется 20 (т. Е. Вы переоцениваете). – Dukeling
Я вычисляю расстояние между (x1, y1) и (x2, y1) как это H = (Math.Abs (x2-x1) + Math.Abs (y2-y1)) * 10, как для G, я использую 10 для прямых путей и 14 для диагоналей. –