改进A *算法

假设我正在使用A *算法在房子中找到路径.现在运行时间可以是O(n ^ 2).

如果我知道要遵循哪个门,我想它会改善性能,并且根据我应用A *,即如果我有起始位置S和最终位置为F,而不是在这两个端点上应用A * ,如果我应用A *会更好

`S` and `A1`
`A1` and `A2`
`A2` and F.

A1和A2是我的中间体(门),应该遵循最短的路径?找到中间体然后遵循路径并且不仅仅直接在开始和结束时应用A *是否值得改进.

考虑到找到中间体需要线性时间.

最佳答案 是的,如果算法在运行时采用O(n ^ 2)行为,这将有很大帮助.而不是一个大问题,你得到两个较小的问题,每个问题的计算成本高达1/4.

我确信有病态的情况下它没有帮助甚至伤害,但在你的情景(房子)中它可能会有很大帮助.

我想你正在使用这样一个事实:一个人必须上电梯或楼梯来换地板.这对A *有很大帮助,因为现在成本函数只能在单层内工作.它将非常具有代表性的实际成本.相比之下,如果您想要搬到同一个房间但是高一层,那么成本函数会大大低估距离.在这种情况下欧几里德距离将完全失败(并且算法将降级为穷举搜索).首先移动到楼梯,然后从楼梯移动到所需的房间会更好.

点赞