【问题标题】:Does A* search expand the same node more than once?A* 搜索是否多次扩展同一个节点?
【发布时间】:2017-03-19 19:27:46
【问题描述】:

A* 搜索似乎重新计算了 Arad、Sibiu 和其他重复状态的 f 值,它不应该这样做,因为这些节点已经展开并处于关闭状态。那么我在这里缺少什么? (图片来自 Russel 和 Norvig - 人工智能。

图片:

在这种情况下,这些节点不会扩展,因为它们的 f 值大于最佳路径,如果不是这样呢?即,如果最近的 f 值要回到前驱节点怎么办? A* 会这样做吗?

【问题讨论】:

  • 只有在节点与其前任之间的距离为负时才会发生这种情况。
  • 但正如你从图片中看到的那样,这里不是真的。
  • 教科书似乎在盲目地将所有个连接节点添加到树中,无论它们是否已经被看到。这很好(虽然有点浪费),因为具有重复节点的路径永远不会是最短路径(假设非负距离)。它会不断被检查,但它永远不会是最短的。

标签: search path-finding a-star tree-search


【解决方案1】:

大多数 A* 算法回溯,这意味着一个节点只能被访问一次。否则,反向指针链被破坏,路径无法恢复。但是,如果对角线移动比方形移动更昂贵,您可能会遇到这样一种情况,即优先级队列中较低的节点可以访问成本更低的访问节点。通常你会忽略它并将访问的节点视为不可访问 - 除非你使用奇怪而奇妙的启发式或有一个非常奇怪的图形,否则它几乎不会对路径长度产生影响。

【讨论】:

  • Arad 的启发式方法与最初的启发式方法没有变化。但 f 值有。
猜你喜欢
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-19
相关资源
最近更新 更多