【发布时间】:2015-01-05 19:22:08
【问题描述】:
我在我的游戏中使用 A-star 算法,如果不存在路径,它会开始检查太多节点(网格很大),所以,正如我所见,我需要先检查是否存在任何路径。不查找实际路径,只需检查它是否存在。我能想出的唯一算法是递归地填充一个布尔矩阵。应该有更好的方法吧?
可选问题:如果目标单元格不存在路径,我如何找到可访问(路径确实存在)且最接近原始目标的单元格?
【问题讨论】:
我在我的游戏中使用 A-star 算法,如果不存在路径,它会开始检查太多节点(网格很大),所以,正如我所见,我需要先检查是否存在任何路径。不查找实际路径,只需检查它是否存在。我能想出的唯一算法是递归地填充一个布尔矩阵。应该有更好的方法吧?
可选问题:如果目标单元格不存在路径,我如何找到可访问(路径确实存在)且最接近原始目标的单元格?
【问题讨论】:
A* 正是这样做的……所以没有明显更好的方法(文章链接可以在http://en.wikipedia.org/wiki/Shortest_path_problem 中找到)
如果您可以进行预处理,您可以为所有点着色,以便可以达到的对的颜色相同。如果颜色不同,则比没有路径时获得 2 分。
要找到闭合点,您可以测量具有相同颜色的点的半径,然后开始寻找与该半径一样接近的路径。
【讨论】: