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

人工智能导论——搜索求解_第1张图片

前言

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

0. 搜索概述

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

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

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

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

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

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

1. 盲目搜索会考啥?

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

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

1.1 NPS、NSS、PS表及其作用

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

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

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

人工智能导论——搜索求解_第2张图片
这道题是不是很熟悉???(废话,总共就没交几次作业),搜索我们都会,但是描述队列或栈变化的过程还是生疏的。

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

人工智能导论——搜索求解_第3张图片
人工智能导论——搜索求解_第4张图片
通过该步骤即可看出队列变化的精髓,首先要搞清楚队首和队尾,队首的节点直接出队,其所有子节点按顺序入队即可。

1.3 深度优先搜索栈的变化

人工智能导论——搜索求解_第5张图片
这里只有我的手绘渣图了,将栈顶的元素弹出后,将其所有子节点倒序入栈。之后依次将栈顶元素弹出、入栈即可。

2. 启发式搜索

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

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

3. 对抗搜索(重点!)

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

  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 蒙特卡洛树搜索

蒙特卡洛树搜索包括以下4个步骤:

  1. 选择
  2. 扩展
  3. 模拟
  4. 反向传播

4. 选择题解析

  • 问题1
    人工智能导论——搜索求解_第6张图片

此题全选。

  • 问题2
    人工智能导论——搜索求解_第7张图片

此题全选,可以和下棋博弈对比,不仅知道当前情况,还需预估未来情况。

人工智能导论——搜索求解_第8张图片

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

人工智能导论——搜索求解_第9张图片

C,节点出现的顺序不同,剪枝的效率不同

你可能感兴趣的:(人工智能,人工智能,算法)