改进A *算法

时间:2013-03-04 12:13:46

标签: algorithm

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

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

上应用A *会更好
`S` and `A1`
`A1` and `A2`
`A2` and F.

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

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

1 个答案:

答案 0 :(得分:2)

是的,如果算法在运行时采取O(n^2)行为,这将有很大帮助。而不是一个大问题,你会得到两个较小的问题,每个问题的计算成本都是1/4。

我确信有一些病态的情况会导致它无助甚至受到伤害,但在您的情景(房屋)中它可能会有很大帮助。

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