《人工智能:线代方法》 第二部分问题求解 通过搜索进行问题求解(5)

《人工智能:线代方法》 第二部分问题求解 通过搜索进行问题求解(5)

总结

本章对搜索算法进行了介绍,智能体可以用这些算法在各种环境中选择动作序列——只要环境是回合式的、单智能体的、完全可观测的、确定性的、静态的、离散的和已知的。算法需要在搜索所需时间、可用内存和解的质量之间进行权衡。如果我们对于启发式函数的形式拥有额外的领域相关知识来估计给定状态离目标有多远,或者我们预计算涉及模式或地标的部分解,算法会更高效。

  • 在智能体开始搜索之前,必须形式化一个良定义的问题

  • 问题由 5 部分组成:初始状态动作集合、描述这些动作结果的转移模型目标状态集合和动作代价函数

  • 问题的环境用状态空间图表示。通过状态空间(一系列动作)从初始状态到达一个目标状态的路径是一个

  • 搜索算法通常将状态和动作看作原子的,即没有任何内部结构(尽管我们在学习时引入了状态特征)。

  • 根据完备性、代价最优性、时间复杂性空间复杂性来评估搜索算法。

  • 无信息搜索方法只能访问问题定义。算法构建一棵搜索树,试图找到一个解。算法会根据其首先扩展的节点而有所不同。

    • 最佳优先搜索根据评价函数选择节点进行扩展。

    • 广度优先搜索首先扩展深度最浅的节点;它是完备的,对于单位动作代价是最优的,但具有指数级空间复杂性。

    • 一致代价搜索扩展路径代价 g(n) 最小的节点,对于一般的动作代价是最优的。

    • 深度优先搜索首先扩展最深的未扩展节点。它既不是完备的也不是最优的,但具有线性级空间复杂性。深度受限搜索增加了一个深度限制。

    • 迭代加深搜索在不断增加的深度限制上调用深度优先搜索,直到找到一个目标。当完成全部循环检查时,它是完备的,同时对于单位动作代价是最优的,且具有与广度优
      先搜索相当的时间复杂性和线性级空间复杂性。

    • 双向搜索扩展两个边界,一个围绕初始状态,另一个围绕目标,当两个边界相遇时搜索停止。

  • 有信息搜索方法可以访问启发式函数 \(h(n)\) 来估计从 n 到目标的解代价。它们可以访问一些附加信息,例如,存有解代价的模式数据库。
    - 贪心最佳优先搜索扩展 h(n) 值最小的节点。它不是最优的,但通常效率很高。

    - **A* 搜索**扩展 f(n) = g(n) + h(n) 值最小的节点。在 h(n) 可容许的条件下,A* 是完备的、
    

    最优的。对于许多问题来说,A* 的空间复杂性仍然很高。

    - **双向 A* 搜索**有时比 A* 搜索本身更高效。
    
    - **IDA*** (迭代加深 A* 搜索)是 A* 搜索的迭代加深版本,它解决了空间复杂性问题。
    
    - **RBFS(递归最佳优先搜索)**和 **SMA*** (简化的内存受限 A* )搜索是健壮的最优搜索算
      法,它们仅使用有限的内存;如果时间充足,它们可以解决对于 A* 来说内存不足的
      问题。
      
    - **束搜索**限制了边界的大小;因此它是非完备的、次优的,但束搜索通常能找到相当好
      的解,运行速度也比完备搜索更快。
    
    - **加权 A*** 搜索将搜索专注于一个目标,以扩展更少的节点,但它牺牲了最优性。
    
  • 启发式搜索算法的性能取决于启发式函数的质量。我们有时可以通过松弛问题定义、在模式数据库中存储预计算的子问题的解代价、定义地标点,或者从问题类的经验中学习来构建良好的启发式函数。

posted @ 2023-02-05 20:39  Xu_Lin  阅读(52)  评论(0编辑  收藏  举报