Предположим, что у вас есть 2D сетка ячеек, некоторые из которых заполнены стенами. Символы могут делать шаг от одного квадрата до любого квадрата, который является одним шагом по горизонтали или вертикали от него, но не может пересекать стены.
Учитывая начальную позицию и конечную позицию, мы можем найти кратчайший путь от начальной позиции до конечной позиции, используя алгоритм A * с допустимой эвристикой. В этой текущей установке расстояние Манхэттена было бы допустимым, поскольку оно никогда не переоценивает расстояние до пункта назначения.
Теперь предположим, что помимо стен, в мире есть пары телепортеров. Переход на телепорт немедленно переносит персонажа в связанный телепорт. Существование телепортеров нарушает допустимую эвристику, приведенную выше, поскольку можно было бы добраться до места назначения быстрее, чем принимать оптимальное расстояние в Манхэттене, используя телепорт, чтобы сократить расстояние. Например, рассмотрим этот линейный мир с телепортерами, отмеченными Т, начальное положение с пометкой S, а конечная позиция отмечена E:
T . S . . . . . . . . . . . . . E . T
Здесь лучший маршрут - прогулка к телепорту слева, затем сделать два шага влево.
Мой вопрос таков: какая хорошая допустимая эвристика для A * в мире сетки с телепортерами?
Спасибо!