【问题标题】:A* Search AlgorithmA* 搜索算法
【发布时间】:2011-08-16 12:28:30
【问题描述】:

我想对以下 A* 搜索示例进行澄清:

用红色椭圆突出显示的部分是我不明白的区域;看来{S,B} f=2+6=8 已从Expand S(上图)获取/移动/复制并用于Expand A。似乎{S,A,X} f=(1+4)+5=10 已从Expand A 获取/移动/复制并用于Expand B

有人能解释一下为什么会这样吗?我能够很好地阅读图表并且在解释它时没有任何问题 - 只是我不知道为什么上述路径/路线已在其他地方重复。

谢谢。

【问题讨论】:

    标签: algorithm a-star


    【解决方案1】:

    路径不会重复,它们只是保留为算法尚未探索的路径。 A* 通过维护一个开放集来工作,它是算法已经知道如何到达(以及以什么成本)的节点集合,但它还没有尝试扩展它们。

    在每次迭代中,算法从开放集中选择一个节点进行扩展(具有最低 f 函数的那个​​ - f 函数是算法已经知道到达节点 (g) 所需的成本的总和,并且算法对从节点到目标的成本的估计(h,启发式)。

    http://en.wikipedia.org/wiki/A*_search_algorithm

    查看那里的伪代码,您可以看到使用了开放集。所以底线 - 算法不是通过将路径或节点从一个迭代复制到另一个迭代来工作 - 它只是在同一个节点集合上工作(当然节点确实会从集合中添加和删除)。

    希望这会有所帮助...

    【讨论】:

      【解决方案2】:

      这是取出当前最好的项目,将其删除,然后用扩展替换它(将新项目插入列表中的适当位置)。可以这样想:

      展开 S:

      • {S,A} f = 1+5 = 6
      • {S,B} f = 2+6 = 8

      展开A:

      • {S,A} f = 1+5 = 6
      • {S,B} f = 2+6 = 8
      • {S,A,X} f = (1+4)+5 = 10
      • {S,A,Y} f = (1+7)+8 = 16

      展开 B:

      • {S,B} f = 2+6 = 8
      • {S,A,X} f = (1+4)+5 = 10
      • {S,B,C} f = (2+7)+4 = 13
      • {S,A,Y} f = (1+7)+8 = 16
      • {S,B,D} f = (2+1)+15 = 18

      【讨论】:

      • 先生,我是人工智能新手,在这个图表的上下文中,我怀疑这里 * A* 需要计算所有可能的路径。* 那么它为什么有用呢?在Rich and knight中提到h'不应该高估h,在维基百科中它写道估计成本(h')必须始终小于或等于达到目标的实际成本目标。那么,这意味着我们必须事先计算所有可能的路径吗?是这样吗 ?还是我错过了什么。先生会很有帮助。
      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 2022-01-11
      • 1970-01-01
      • 2023-03-29
      • 2012-02-06
      • 2016-08-22
      • 2016-12-20
      • 1970-01-01
      相关资源
      最近更新 更多