Я пробовал писать Звездный алгоритм с диагоналями и эвристикой прямого расстояния между двумя точками. Однако путь не самый короткий в таком случае, как этот Алгоритм Star наиболее эффективный путь
Переход (2,2) -> (3,2) -> (4,2) -> (5,2) будет быстрее , но он решил разрезать.
Я не могу понять, что случилось с моим пониманием, потому что так оно и будет работать, когда я тоже это думаю.
Мое понимание:
- Запускает из (1,1) находит (2,2), чтобы быть лучшими
- находки (3,3), чтобы быть лучше, находит (4,3) будет лучше, так как вы не можете вырезать углы
- Находит (5,3) лучше, но вычисляет значение f (5,2) как X
- Невозможно перейти к (6,2) и вычислить f (5,2) при Y> X, поэтому путь возвращается к (4,3)
- Поскольку (5,3) больше не находится в открытом наборе, выбирает следующий лучший (5,2)
- Остальная часть пути в порядке, ничего не происходит, поскольку «мертвых концов» не было встречено.
То, что должно было осознать, состоит в том, что f (5,2) ниже (4,2), которое ниже (3,2), которое никогда не рассчитывается из-за того, что оно выбрало (3,3)
Что именно не так с этим?
Редактировать: Шаг стоимость 1 для горизонтального/вертикального и SQRT (2) для диагоналей
Какова фактическая стоимость перехода от (2,2) - (3,3)? Это 1 или sqrt (2)? – Henry
sqrt (2). Эвристика будет sqrt (4^2 + 2^2) – EricChen1248
В этом случае есть ошибка в вашей реализации. – Henry