人工智能导论——搜索求解

李先生 2024-11-06 浏览次数:0

没想到又把人工智能的复习拖到了最后,嘤嘤嘤!夹杂着各种ddl,冲就完事了,复习步骤还是打算先学理解性的知识,记忆性的放到后面,以防提前忘记了哈哈哈哈。
先定个复习小目标QAQ。

人工智能导论——搜索求解

要学习搜索,需要对搜索有一个整体的认识,首先就从搜索方法的类别开始。如下为这一章节中介绍的所有搜索办法

  • 状态空间搜索
  • 盲目搜索(深度、广度
  • 启发式图搜索(A、A*
  • 对抗搜索(MINMAX搜索、α-β剪枝、蒙特卡洛树搜索

搜索方法根据搜索方向可以分为以下三类

  1. 正向搜索(数据驱动,从初始状态出发搜索
  2. 逆向搜索(目的驱动,从目的状态出发搜索
  3. 双向搜索,正向、逆向同时出发,找到交点为止

而根据搜索的实现方式,又可以分为如下两大类

  1. 盲目搜索
  2. 启发式搜索

我们所熟知的深度优先搜索、广度优先搜索、OPEN表都属于盲目搜索的范围。

  • OPEN表时回溯策略过程中会用到的,即NPS表,保存在搜索过程中已经生成出、但子状态未被搜索的状态。与之相对的,CLOSED表记录已经被生成、扩展过的状态。
  • 对于深度优先搜索、广度优先搜索我们已经再熟悉不过了,但是!题目中可能会考察在搜索过程中队列堆栈的变化。

1.1 NPS、NSS、PS表及其作用

这里看到英文缩写是不是很懵?当然是要把它翻译成中文啦

状态名全程内容作用PSpath states当前路径状态记录NPSnew path states未被搜索路径回溯NSSno solvable states不可解状态集避免进入死胡同

1. 2 深度优先搜索队列的变化

1.2 广度优先搜索队列的变化

1.3 深度优先搜索栈的变化

2.1 A搜索算法和A*搜索算法

  • 如果某问题有解,那么利用A*算法搜索一定能搜索到解。并且搜索到的解是最优解。
  • A算法未对估价函数进行任何限制,对估价函数进行限制后得到A*算法

对抗搜索即使得智能体获得最大化利益对手获得最小化利益。需要掌握以下三种对抗搜索方法

  1. 最小最大搜索:通过每个节点的minmax值来决定最优策略
    2.** α-β剪枝搜索**:在最小最大搜索的基础上,减去不影响最终结果的搜索分枝
  2. 蒙特卡洛树搜索

3.1 如何进行α-β剪枝

该算法最重要的点在于如何进行剪枝上面,此处的剪枝需要分两种情况。

  • 对于MIN节点:若其目前的收益小于α,则其后续节点可被剪枝。
  • 对于MAX节点:若其目前的收益大于β,则其后续节点可被剪枝。

这里同学们只需要记住,对于MIN节点,需要去看最大值,对于MAX节点,需要去看最小值。大于最小值,小于最大值,则可被剪枝。

在掌握了剪枝方法后,还需要牢记要想获得某个节点的值,需要按从左到右、从下到上的顺序挨个去读,千万不能跳来跳去

  • 对节点10的剪枝是由于2<3;
  • 对节点13的后续进行剪枝是因为13>3
  • 对节点2的后续10进行剪枝是因为2<3;
  • 对接待你2的后续进行剪枝是因为2<3;

3.2 蒙特卡洛树搜索

此题选D,对己方有利,估价函数取正值,对己方不利,估价函数取负值。