Algorithm 改进A*算法

Algorithm 改进A*算法,algorithm,Algorithm,假设我正在使用*算法查找房子中的路径。现在运行时间可以是O(n^2) 我在想,如果我知道要遵循哪些门,并根据需要在其上应用A*,也就是说,如果我的起始位置S,最终位置为F,并且在这两个端点上应用A*,而不是在这两个端点上应用A*,则会更好 `S` and `A1` `A1` and `A2` `A2` and F. 其中A1和A2是我的中间物(门),应遵循最短路径?是否值得改进,找到中间产物,然后遵循路径,而不仅仅是在开始和结束时直接应用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

我敢肯定,在某些病态的情况下,它并没有帮助,甚至没有伤害,但在你的场景(房子)中,它可能会帮助很多


我想你是在利用这样一个事实:一个人必须上电梯或楼梯才能换楼层。这会有很大帮助,因为成本函数现在只能在一个楼层内工作。这将非常能代表实际成本。与此相反,如果你想搬到同一个房间,但要高出一层楼,成本函数会大大低估距离。在这种情况下,欧几里德距离将完全失效(算法将退化为穷举搜索)。首先搬到楼梯上,然后再从楼梯上搬到想要的房间会更好。

如何保证找到中间产物需要线性时间?你放宽了最优性要求吗?@us2012是的,如果我有正确的数据表示,这将花费我线性时间来找出答案。在那之后,我可以在一个房间里移动到中间,然后到达终点。假设我只有一层楼要考虑吗?找到我应该从一个地方走到另一个地方的门是否仍然足够明智?好吧,这也许能帮助我应对最坏的情况?我可以在一个房间里用*来开门,但这会帮助我在整个楼层内把握方向感,这可能会有所帮助。如果它能有效地提高成本函数的精度,这将有所帮助。