A*时间复杂度

Szk*_*ndy 5 complexity-theory a-star

维基百科在A*的复杂性上说:

A*的时间复杂度取决于启发式.在最坏的情况下,扩展的节点数在解的长度(最短路径)中是指数的,但是当搜索空间是树时它是多项式的...

我的问题是:"A*的时间复杂度是指数级的吗?还是时间复杂度不是存储复杂性?" 如果是内存复杂性,A*的时间复杂度是多少?

cor*_*ump 5

在最坏的情况下,A* 时间复杂度是指数级的。

但是,请考虑h(n) 估计的距离和h*(n)剩余的确切距离。如果条件| h(n) - h*(n) | < O(log *h(n) )成立,即如果我们的估计函数的误差呈次指数增长,那么 A* 时间复杂度将是多项式的。

可悲的是,大多数情况下估计误差线性增长,因此,在实践中,更快的替代方案是首选,付出的代价是不再实现最优性的事实。


Dmi*_*rov 3

由于存储每个扩展节点是为了避免多次访问同一节点,因此扩展节点数量的指数增长意味着指数时间和空间复杂度。

请注意,指数空间复杂度必然意味着指数时间复杂度。反之则不然。

  • @user1403414恐怕这不是一个完整的答案,因为维基百科文章说 A* 在解决方案的长度上是指数级的。这与复杂性理论的标准设置不同,其中复杂性是根据输入的长度来衡量的。 (4认同)
  • 它是“O((|V| + |E|) log |V|)”。用图的大小来描述 A* 复杂度是最有意义的。这个答案出奇的糟糕(也许是维基百科驱动的?肯定不是科门......) (2认同)