我有一张带有(20000 x 20000)的大地图,我偶尔会遇到多边形形状的障碍物(从4到20个边缘)。如何找到两点之间的路径,哪种算法适合用于此相当快? (目前我正在将地图拆分为单元格,并使用A *算法查找路径,但平滑度并不好,因为它从一个单元格的中心传递到另一个单元格,而对于更远的开始/结束对是慢的)。 您可以建议哪种算法,不需要实施建议。
答案 0 :(得分:3)
A *确实是用于此任务的正确算法。这仍然是最短路问题;您的“平滑度”和效率问题可能来自于您将地图划分为图形上的节点的方式,而不是您用来遍历它们的技术。
为了更好地控制演员在地图中移动的方式并让他们快速找到路径,您可能希望尝试使用navigation meshes or waypoints。我们的想法是,不是在具有许多节点的图形上进行A *,而是在不那么复杂的图形上找到方法,通过非常宽的路径层次结构过滤到这些路径的更精细细节 - 这大大减少完成任务的时间,因为即使有效实现最短路径问题仍然具有很高的计算复杂度。