【课】人工智能第七讲_搜索求解策略

搜索求解策略

搜索是人工智能里很重要的求解方法,可以求一些通常的数学方法不能求解的问题
如:在树上找一个最大桃子,难以用数学建模

求解一个问题时,涉及到两个方面:
1. 问题的表示。找不到合适的表示方法,就谈不上求解
2. 选择一种合适的求解方法。大多数需要人工智能解决的问题缺乏直接求解的方法,因此,搜索为一种求解问题的一般方法


搜索的概念

问题求解:

  1. 问题的表示
  2. 求解方法
    问题求解的基本方法:
    搜索法、归约法、归结法、推理法及产生式等。

搜索中需要解决的基本问题

  1. 是否一定能找到一个解
  2. 找到的解是不是最佳解
  3. 时间与空间复杂度如何
  4. 是否会终止运行形成死循环

搜索的主要过程

  1. 初始或目的状态出发,并将它作为当前状态。
  2. 扫描操作算子集,将适用当前状态的一些操作算子作用于当前状态而得到新的状态,并建立指向其父结点的指针。
  3. 检查所生成的新状态是否满足结束状态,如果满足,则得到问题的一个解,并可沿着有关指针从结束状态反向到达开始状态,给出一解答路径;否则,将新状态作为当前状态,返回第二步再进行搜索。

搜索的方向:

  1. 数据驱动:从初始状态出发的正向搜索
    • 正向搜索-从问题给出的条件出发
  2. 目的驱动:从目的状态出发的逆向搜索
    • 逆向搜索-从想达到的目的入手,看哪些操作算子能产生该目的以及应用这些操作算子产生目的时需要那些条件
  3. 双向搜索 - 更多采用的方式
    • 双向搜索——从开始状态出发作正向搜索同时从目的状态出发作逆向搜索,直到两条路径在中间某处汇合为止

盲目搜索与启发式搜索

  1. 盲目搜索:在不具有对特定问题的任何有关信息的条件下,按固定的步骤(依次或随机调用操作算子)进行的搜索。
  2. 启发式搜索考虑特定问题领域可应用的知识动态地确定调用操作算子的步骤,优先选择较合适的操作算子,尽量减少不必要的搜索,以求尽快地到达结束状态

状态空间知识表示法

状态:表示系统状态、事实等叙述型知识的一组变量或数组:\(Q=[q_1,q_2,...,q_n]\)
操作:表示引起状态变化的过程型知识的一组关系或函数:\(F=\{f_1,f_2,...,f_n\}\)

状态空间:利用状态变量和操作符号,表示系统或问题的有关知识的符号体系,状态空间是一个四元组:\((S,O,S_0,G)\)
\(S\):状态集合
\(O\):操作算子的集合
\(S_0\):包含问题的初始状态,是\(S\)的非空子集
\(G\):若干具体状态或满足某些性质的路径信息描述

求解路径:从\(S_0\)结点到\(G\)结点的路径
状态空间的一个解:一个有限的操作算子序列。
\(S_0\xrightarrow{O_1}S_1\xrightarrow{O_2}S_2\xrightarrow{O_3}...\xrightarrow{O_k}G\)
此时,\(O_1, ..., O_k\)即状态空间的一个解

例:八数码问题的状态空间
从初始状态\(S_0\)

2 3 1
5 8
4 6 7
到目标状态:
1 2 3
- - -
8 4
7 6 5

状态集所有可能的摆法
操作算子: 将空格上移Up,将空格左移Left,将空格下移Down,将空格右移Right
(将空格当算子而不是数字可以有效简化问题)

(树图表示状态空间图)箭头为操作算子 ,结点为状态八数码图
(有向图描述状态空间)\(S_0\)根结点,\(S_1\)\(S_2\)等为结点,\(O_1\)\(O_2\)为箭头

例:旅行商问题或邮递员路径问题(理科生陷入¥#%@#%
典型的组合优化问题,规模增加一点,计算量非线性增加


启发式图搜索策略

启发式策略

启动式策略:利用与问题有关的启发信息进行搜索

运用启发式策略的两种基本情况:

  1. 一个问题由于在问题陈述和数据获取方面固有的模糊性,可能会会使它没有一个确定的解
  2. 虽然一个问题可能有确定解,但其状态空间特别大,搜索中生成扩展的状态数会随着搜索的深度呈指数级增长

例:井字棋状态图,可以根据棋盘对称性的特点进行简化

启发信息和估价函数

启发信息
在具体求解中,能够利用与该问题有关的信息来简化搜索过程,称此类信息为启发信息

求解问题中能利用的大多是非完备(只知道有需要的好处,但不知道是否有其他好处或坏处,不能完全确定)的启发信息:

  1. 求解问题系统不可能知道与实际问题有关的全部信息,因而无法知道该问题的全部状态空间,也不可能用一套算法来求解所有问题。
  2. 有些问题在理论上虽然存在求解算法,但在工程实践中,这些算法不是效率太低,就是根本无法实现
  • 启发信息的分类:- 按运用的方法
    1. 陈述性启发信息
    2. 过程性启发信息
    3. 控制性启发信息
      利用控制性的启发信息的情况:
      1. 没有任何控制性知识作为搜索的依据,因而搜索的每一步完全是随意的
      2. 有充分的控制知识作为依据,因而搜索的每一步选择都是正确的,但不现实
  • 按作用的分类
    1. 用于扩展结点的选择
    2. 用于生成结点的选择
    3. 用于删除结点的选择

估价函数:

任务
估价函数的任务就是估计待搜索结点的“有希望”程度,并依次给它们排定次序(OPEN表中)
形式
估价函数\(f(n)\):从初始结点经过n结点到达目的结点的路径的最小代价估计值,其一般形式是:
\(f(n) = g(n) + h(n)\)
一般地,在\(f(n)\)中,\(g(n)\)的比重越大,越倾向于宽带优先搜索,而h(n)的比重越大,表示启发性能越强

例:八数码问题的多种估价函数设计方法

  • 最简单的估价函数:取一格局与目的格局相比,其位置不符的将牌数目
  • 较好的估价函数: 各将牌移到目标位置所需移动的距离的总和
  • 第三种:对每一对逆转将牌乘以一个倍数
  • 第四种:将位置不符奖牌数目的总和与3倍将牌逆转数目相加,克服了仅计算将牌逆转数目策略的局限。

A搜索算法

启发式图搜索法的基本特点:如何寻找并设计一个与问题有关的\(h(n)\)及构出\(f(n)=g(n)+h(n)\),然后以f(n)的大小来排列待扩展状态的次序,每次选择\(f(n)\)值最小者进行扩展。
open表:保留所有已生成而为扩展的状态
closed表;记录已扩展过的状态
进入open表的状态是根据其估值的大小插入到表中合适的位置,每次从表中优先取出启发式估价函数值\(f(n)\)最小的状态加以扩展。
例:利用A搜索算法求解八数码问题的搜索树,其估价函数定义为:
\(f(n)=d(n)+w(n)\)
其中\(d(n)\)为状态的深度,每步为单位代价,\(w(n)\)为以“不在位”的将牌数作为启发信息的度量。
\(h^*(n)\)作为状态n到目的状态的最优路径的代价。则
\(w(n)=h(n) \le h^*(n)\)
A搜索算法→A*搜索算法

A*搜索算法及其特性

如果某一问题有解,那么利用A*搜索算法对该问题进行搜索则一定能搜索到解,并且一定能搜索到最优的解而结束

特性

  • 可采纳性
    当一个搜索算法在最短路径存在时,能保证找到它,则称它是可采纳的
  • 单调性
    在整个搜索空间都是局部可采纳的。一个状态和任一个子状态之间的差由该状态与其子状态之间的实际代价所限定。
  • 信息性
    在两个A*启发策略的\(h_1\)\(h_2\)中,如果对搜索空间中的任一状态n都有\(h_1(n)\le h_2(n)\),就称策略\(h_2\)\(h_1\)具有更多的信息性。(有好处也有坏处)
posted @ 2020-05-13 15:39  醉笑天苍  阅读(940)  评论(0)    收藏  举报