A-star:针对多个目标的启发式

The*_*lse 6 algorithm a-star

让我们考虑一个简单的网格,其中任何点与最多4个其他点(东北 - 西 - 南邻域)相连.

我必须编写程序,计算从所选初始点到任何目标点的最小路线,这些目标点是连接的(在任何两个目标之间存在由目标点组成的路线).当然网格上可能存在障碍.

我的解决方案很简单:我使用的是具有可变启发函数h(x)的A*算法 - 从x到最近的目标点的曼哈顿距离.为了找到最接近的目标点,我必须进行线性搜索(在O(n)中,其中n - 目标点数).这是我的问题:是否有更有效的解决方案(启发式函数)来动态找到最近的目标点(时间<O(n))?

或者A*不是解决这个问题的好方法吗?

小智 7

有多少个目标,数十个或数千个?如果数十种方式可以正常工作,那么如果成千上万,那么最近邻搜索将为您提供有关设置数据以便快速搜索的建议.

权衡是显而易见的,空间组织您的数据进行搜索将花费时间,而在小集合上,暴力破解将更容易维护.由于您经常评估我认为在非常低的点数下构建数据是值得的.

另一种方法是修改洪水填充算法,该算法在洪水期间到达目的地点时停止.