【问题标题】:IDA* and Admissibility of one Heuristic?IDA* 和一个启发式的可接受性?
【发布时间】:2016-07-20 11:56:29
【问题描述】:

我想练习关于 AI 的旧考试,并看到一个具有挑战性的问题,需要一些专家的帮助...

A 是初始状态,G 是目标状态。成本显示在边缘,启发式“H”值显示在每个圆圈上。 IDA* 限制为 7。 我们想用 IDA* 搜索这个图。访问这些节点的顺序是什么? (子节点按字母顺序选择,在同等条件下,首先选择节点,先产生节点。)

解是 A,B,D,C,D,G。

我的问题是这是如何计算的,以及我们如何说这个启发式 是可接受和一致的?

【问题讨论】:

    标签: graph artificial-intelligence traversal a-star heuristics


    【解决方案1】:

    我的问题是这是如何计算的,我们如何说这个启发式是可接受和一致的?

    让我们首先从什么是可接受的和一致的启发式的定义开始:

    1. 一个可接受的启发式从不高估达到目标的成本,即估计达到目标的成本不大于图中从该节点到目标节点的最短路径的成本.

      您可以很容易地看到,对于图中的所有节点 n,估计 h(n) 始终小于或等于实际最短路径。例如,h(B) = 0 F->G)。

    2. 令 c(n, m) 表示图中从节点n 出发的最优路径的成本 到另一个节点n'。启发式估计函数h(n) 在以下情况下是一致的 h(n) + c(n, m) <= h(n') 用于图中的所有节点 n , n'。另一种看待一致性属性的方式是单调性。一致的启发式函数也称为单调函数,由于估计的部分解决方案的最终成本,沿着到达目标的最佳路径是单调非递减的。因此,我们可以注意到您的启发式函数并不一致。

      h(A) + c(A, B) 6 + 2

    让我做一个类比,以一种不那么数学的方式来解释它。 你要和你的朋友去跑步。在某些时候,你会问你的朋友需要多长时间才能完成你的跑步。他是一个非常乐观的人,他总是给你一个你可以做的更短的时间,即使你在剩下的路上一直在跑。 但是,他的估计并不是很一致。在 A 点,他告诉你至少还要再跑一个小时,跑了 30 分钟后你又问他。现在,他告诉你距离那里至少还有 5 分钟A 点的估计信息比 B 点的信息少,因此你的启发式朋友是不一致的。

    关于 IDA* 的执行,我从维基百科复制粘贴算法的 伪代码(我尚未测试):

     node              current node
     g                 the cost to reach current node
     f                 estimated cost of the cheapest path (root..node..goal)
     h(node)           estimated cost of the cheapest path (node..goal)
     cost(node, succ)  step cost function
     is_goal(node)     goal test
     successors(node)  node expanding function
     
     procedure ida_star(root)
       bound := h(root)
       loop
         t := search(root, 0, bound)
         if t = FOUND then return bound
         if t = ∞ then return NOT_FOUND
         bound := t
       end loop
     end procedure
     
     function search(node, g, bound)
       f := g + h(node)
       if f > bound then return f
       if is_goal(node) then return FOUND
       min := ∞
       for succ in successors(node) do
         t := search(succ, g + cost(node, succ), bound)
         if t = FOUND then return FOUND
         if t < min then min := t
       end for
       return min
     end function
    

    按照您的示例执行很简单。首先,我们使用起始节点的启发式函数的值设置边界(或阈值)。我们使用深度优先搜索方法来探索图形,排除 f 值大于界限的分支。例如,f(F) = g(F) + h(F) = 4 + 4 > bound = 6。 节点按以下顺序探索:A、B、D、C、D、G。在算法的第一次迭代中,节点 A、B、D 被探索,我们用完了小于界限的选项。

    边界被更新,并在第二次迭代中探索节点 C、D 和 G。一旦我们到达解节点,估计值 (7) 小于界限 (8),我们就有了最优的最短路径。

    【讨论】:

    • A、B、D、C、D、G的解呢?你能描述一下吗?
    • 我的问题有两个部分,你只回答一个部分。
    猜你喜欢
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多