Algorithm 连续空间中的路径搜索算法

Algorithm 连续空间中的路径搜索算法,algorithm,Algorithm,我有一个大地图(20000 x 20000),偶尔也会有多边形形状的障碍物(4到20条边)。如何找到两点之间的路径,哪种算法适用于使其合理快速? (目前,我正在将贴图拆分为单元格,并使用*算法查找路径,但平滑度不好,因为它从一个单元格的中心传递到另一个单元格,并且对于更远的起始/结束对,速度较慢)。 您可以建议哪种算法,无需实现,只需建议即可 A*确实是用于此任务的正确算法。这仍然是一个最短路径问题;“平滑度”和效率方面的问题可能来自将地图划分为图形上的节点的方式,而不是用于遍历这些节点的技术

我有一个大地图(20000 x 20000),偶尔也会有多边形形状的障碍物(4到20条边)。如何找到两点之间的路径,哪种算法适用于使其合理快速? (目前,我正在将贴图拆分为单元格,并使用*算法查找路径,但平滑度不好,因为它从一个单元格的中心传递到另一个单元格,并且对于更远的起始/结束对,速度较慢)。
您可以建议哪种算法,无需实现,只需建议即可

A*确实是用于此任务的正确算法。这仍然是一个最短路径问题;“平滑度”和效率方面的问题可能来自将地图划分为图形上的节点的方式,而不是用于遍历这些节点的技术


为了更好地控制演员在地图上移动的方式,并让他们快速找到路径,您可能希望尝试使用。其思想是,与其在一个有很多很多节点的图上做*运算,不如在不太复杂的图上做*运算,通过一个非常广泛的路径层次结构过滤这些路径的更精细细节,这大大减少了完成任务的时间,因为即使是最短路径问题的有效实现也仍然具有很高的计算复杂性。

您可以使用非均匀网格,该网格密度更大,更接近复杂障碍物,采用分而治之的方式。或者看看navmesh是如何实现的,比如Unity3D,我们讨论了多少个多边形?@cobarzan数百个多边形,取决于级别。然后,您可以定义一个图形,将多边形的角点(加上起点和目标)定义为顶点,将所有可以“看到”的顶点对定义为边。然后在这个图上运行一个*或Dijkstra。不确定如何有效地实现“查看”功能,但如果有多个查询(开始、目标),只需确定多边形角点的“查看”功能一次。由于多边形的数量很小,你会得到一个小得多的图形。必须有某种树结构,它的构建和回答这样的问题并不昂贵:这段与树结构中的任何段相交吗?