没想到又把人工智能的复习拖到了最后,嘤嘤嘤!夹杂着各种ddl,冲就完事了,复习步骤还是打算先学理解性的知识,记忆性的放到后面,以防提前忘记了哈哈哈哈。
先定个复习小目标QAQ。
要学习搜索,需要对搜索有一个整体的认识,首先就从搜索方法的类别开始。如下为这一章节中介绍的所有搜索办法:
- 状态空间搜索
- 盲目搜索(深度、广度)
- 启发式图搜索(A、A*)
- 对抗搜索(MINMAX搜索、α-β剪枝、蒙特卡洛树搜索)
搜索方法根据搜索方向可以分为以下三类:
- 正向搜索(数据驱动),从初始状态出发搜索
- 逆向搜索(目的驱动),从目的状态出发搜索
- 双向搜索,正向、逆向同时出发,找到交点为止
而根据搜索的实现方式,又可以分为如下两大类:
- 盲目搜索
- 启发式搜索
我们所熟知的深度优先搜索、广度优先搜索、OPEN表都属于盲目搜索的范围。
- OPEN表时回溯策略过程中会用到的,即NPS表,保存在搜索过程中已经生成出、但子状态未被搜索的状态。与之相对的,CLOSED表记录已经被生成、扩展过的状态。
- 对于深度优先搜索、广度优先搜索我们已经再熟悉不过了,但是!题目中可能会考察在搜索过程中队列、堆栈的变化。
1.1 NPS、NSS、PS表及其作用
这里看到英文缩写是不是很懵?当然是要把它翻译成中文啦!!!
1. 2 深度优先搜索队列的变化
1.2 广度优先搜索队列的变化
1.3 深度优先搜索栈的变化
2.1 A搜索算法和A*搜索算法
- 如果某问题有解,那么利用A*算法搜索一定能搜索到解。并且搜索到的解是最优解。
- A算法未对估价函数进行任何限制,对估价函数进行限制后得到A*算法
对抗搜索即使得智能体获得最大化利益,对手获得最小化利益。需要掌握以下三种对抗搜索方法:
- 最小最大搜索:通过每个节点的minmax值来决定最优策略
2.** α-β剪枝搜索**:在最小最大搜索的基础上,减去不影响最终结果的搜索分枝 - 蒙特卡洛树搜索
3.1 如何进行α-β剪枝
该算法最重要的点在于如何进行剪枝上面,此处的剪枝需要分两种情况。
- 对于MIN节点:若其目前的收益小于α,则其后续节点可被剪枝。
- 对于MAX节点:若其目前的收益大于β,则其后续节点可被剪枝。
这里同学们只需要记住,对于MIN节点,需要去看最大值,对于MAX节点,需要去看最小值。大于最小值,小于最大值,则可被剪枝。
在掌握了剪枝方法后,还需要牢记要想获得某个节点的值,需要按从左到右、从下到上的顺序挨个去读,千万不能跳来跳去!
- 对节点10的剪枝是由于2<3;
- 对节点13的后续进行剪枝是因为13>3
- 对节点2的后续10进行剪枝是因为2<3;
- 对接待你2的后续进行剪枝是因为2<3;
3.2 蒙特卡洛树搜索
此题选D,对己方有利,估价函数取正值,对己方不利,估价函数取负值。