人工智能原理复习(吉林大学)
整理一下看到的关于人工智能原理的内容
2020.12.31老师讲的一些关于考试的东西
第二三四章
记录一下第二三四章内容,有的凭感觉写的,很可能有错误
知识点
-
产生式系统
-
组成:综合数据库(存放状态描述集合)、产生式规则、控制系统(选择规则,检验状态描述是否终止)
-
分类
- 根据搜索过程分类
- 正向搜索
- 适用条件:初始节点数≤目标节点数
- 反向搜索
- 双向搜索
- 正向搜索
- 根据搜索过程分类
-
特殊产生式系统
-
可分解的产生式系统
能够把产生式系统综合数据库的状态描述分解为若干组成部分,产生式规则可以分别用在各组成部分上,并且整个系统的终止条件可以用在各组成部分的终止条件表示出来的产生式系统,称为可分解的产生式系统。
-
可交换的产生式系统
规则应用的次序对产生的状态无影响,即从初始状态到目标状态不依赖规则次序,因此可应用不可撤回式控制策略,从而提高了产生式系统的效率,这类产生式系统就是可交换的产生式系统。
-
-
-
控制策略
- 不可撤回式
- 爬山法(局部知识获得全局性解不现实)
- 可撤回式
- 回溯算法(每次从当前状态描述的可用规则中选)
- 问题
- 最坏情况下时间复杂度高,可能进入无限循环
- 改进策略
- 加入深度限制
- 问题
- 图搜索策略(每次从遍历过的状态描述集合中可用的规则中选)
- 无信息策略(宽度优先搜索)
- 启发式算法(A算法 A*算法)
- 回溯算法(每次从当前状态描述的可用规则中选)
- 不可撤回式
-
回溯算法 BACKTRACE
-
图搜索策略 GRAPHSEARCH
-
图搜索算法简单介绍
- 这个算法在更新表的同时建立一个图G;OPEN:未进行扩展的节点(待扩展);CLOSE:已扩展过的节点;
- 维持一个OPEN表与CLOSE表
- 每次从OPEN表中弹出一个节点(弹出哪个可以根据启发式信息选择),并放入CLOSE表中;(判断是否终止)
- 将弹出的节点进行扩展,将那些既不在OPEN也不在CLOSE表的新节点加入OPEN表中
-
启发式搜索:使用与问题有关的信息帮助减少搜索量
-
估价函数: f ( x ) = g ( x ) + h ( x ) f(x) = g(x) + h(x) f(x)=g(x)+h(x)
- g ( x ) g(x) g(x)是 g ∗ ( x ) g^*(x) g∗(x)(实际最小费用)的估计值
- h是启发函数
-
A*算法介绍
-
A算法:应该就是具有启发式信息的算法、使用估价函数对OPEN表排序的算法
-
A*算法条件:对任何节点都有如下限制的A算法
h ( n ) ≤ h ∗ ( n ) h(n) \le h^*(n) h(n)≤h∗(n) -
特点
- 具有可采纳性
- BFS是A*算法(但完全没有启发性信息)
- 若a1和a2是两个A*算法,且对于任何节点都有h1(n)<=h2(n),有如下结论
- h2的启发式信息更多,启发能力更大
- h1扩展的节点会完全包括h2扩展的节点
-
8数码问题的A*算法
- 网上搜了一下,启发函数设置为数字离正确正确位置的距离之和
- 同时这个启发函数也能满足单调限制
-
-
可采纳性:一个搜索算法对于任何具有解路径的图都能找到一条最佳解路径
- 结论
- 图搜索算法(有信息、无信息)的算法对于有限图必然终止
- A*算法对于无限图必然终止
- A*算法是可采纳的
- 结论
-
单调限制:具有单调限制的算法的最佳路径总是最先被发现(不需要再更新节点的最佳路径)
-
条件:如果启发函数h对于任何节点 n i n_i ni与 n j n_j nj,只要 n j n_j nj是 n i n_i ni的后继节点,都有
h i ( n ) − h j ( n ) ≤ c ( h i ( n ) , h j ( n ) ) h ( t ) = 0 ( t 为 目 标 节 点 ) h_i(n)-h_j(n) \le c(h_i(n), h_j(n)) \\ h(t) = 0 \ \ (t为目标节点) hi(n)−hj(n)≤c(hi(n),hj(n))h(t)=0 (t为目标节点)
则称启发函数f满足单调限制。 -
结论
- 对于满足单调限制的算法,当选择节点n扩展的时候,就已经发现了通向节点n的最佳路径,即 g ( n ) = g ∗ ( n ) g(n) = g^*(n) g(n)=g∗(n)
- 如果 A ∗ A^* A∗满足单调限制,则 A ∗ A^* A∗扩展的节点序列的估价函数值是单调上升的
-
-
A算法启发能力介绍
- 影响因素
- 找到的解路径费用(最佳?非最佳?)
- 在搜索解路径过程中需要扩展的节点数
- 计算启发式函数需要的计算量
- 评价指标
- 渗透度 P = L / T P=L/T P=L/T:L为解路径长度,T为产生的节点数量;P越大表明算法越高效
- 有效分支系数(赌一手不考-。-)
- 影响因素
-
-
与或图
-
基础知识
- k-连接符
- 费用:与或图的费用算在每个节点上
-
与或图搜索
- AO*算法的单调限制条件
h ( n ) ≤ c + h ( n 1 ) + h ( n 2 ) + . . . + h ( n k ) h(n) \le c + h(n_1) + h(n_2) + ... + h(n_k) h(n)≤c+h(n1)+h(n2)+...+h(nk)
- AO*算法的单调限制条件
-
-
博弈树
-
极大极小过程
-
MAX先走(MAX为□,对应α值,MIN为○,对应β值)
-
倒推值
在极小极大过程中,第i层节点根据第i+1层节点的值使用极小极大原则而获得的值。
-
极大极小原则
MAX节点在其MIN子节点的倒推值中选max;
MIN节点在其MAX子节点的倒推值中选min
-
极大极小过程:生成0-L层节点、估计L层函数值、自底向上计算节点倒推值,以此确定走步
1.按宽度优先生成0至L层所有节点。
2.使用静态估值函数计算第L层节点的函数值。
3.按极小极大原则计算各层节点的倒推值,直到求出初始节点的倒推值为止。实现该倒推值的走步就是相对好的走步。
-
-
算法
这里记录一下做题的时候自己该怎么想?怎么写?
A算法/A*算法(8数码问题)
启发函数 h ( n ) h(n) h(n)设置为数字离正确正确位置的距离之和
AO*算法
- 重写规则转化为与或图(注意用k连接符表示与关系)
- AO*算法求解中每个循环要记录的内容
- 探索的节点构成的搜索图G
- SOLVED标记
- 启发函数 费用函数
- 指针
做题需要注意的
- 根据重写规则绘制与或图
- 绘制解图,利用AO*算法求解最佳解图
- Graph
- arrow
- cost
- SOLVED mark
- 流程
- 初始:根节点作为叶节点,设置费用
- 外层循环:叶节点操作(从根节点指向的叶节点;没有被标记为SOLVED的;扩展叶节点;若后继节点为SOLVED则此节点也标记为SOLVED;加入S集合)(终止条件:根节点被打SOLVED标记)
- 内层循环:集合中取出元素操作(更新费用;更新指针;若指针指向的后继节点都是SOLVED则此节点也标记为SOLVED;若费用更新或者打SOLVED则将所有指针标记的父节点加入S集合) 注意所有父节点的意思不是所有祖先节点,而是后继是这个节点的这些节点 (终止条件:S集合为空)
极大极小过程 + α-β剪枝
做题流程:
用①②③进行标号
剪枝操作不用标序号
看叶节点 -> 设置父节点alpha-beta值 -> 看能否剪枝
注意 α ≥ 1 β ≤ 1 \alpha \ge1 \ \beta \le1 α≥1 β≤1也要进行剪枝;注意剪枝不知考虑父节点值,还要考虑祖先节点值;注意剪枝之后这个节点不需要改成等于号
试题分析
概念题
- 什么是产生式系统?
- 产生式系统的控制策略有哪几种?
- 什么是可分解的产生式系统?什么是可交换的产生式系统?
- 影响A算法的启发能力的要素?
- 可分解的产生式系统求解一般步骤、哪些步骤能够用控制策略
- 可采纳性条件、定义
- 一般情况下A算法AO算法是否可采纳?
- 单调限制条件
- 渗透度能否完全度量搜索方法的启发能力?
大题
- A*算法-八数码问题
- 给出满足A*的启发式函数
- 画出搜索过程
- 计算渗透度?
- 局部搜索算法
- AO*算法
- α-β剪枝
- 何处为α剪枝?何处为β剪枝?
第六章
知识点
-
Herbrand定理基础知识
- 子句集:注意子句集是相对于一个斯科伦范式的合取母式提出的;子句集(斯科伦范式)与原始公式的关系是G不相容 iff S不相容
- Herbrand域:常量符号、常量函数符号;很多情况下H域的元素个数是无限的
- 原子集:子句集的原子在H域上构成的集合
- 基础项、基础原子、基础文字、基础子句:所谓基础就是没有变量符号
- 基例:子句以H域中元素代入得到的基子句
- H解释:对于一个子句集,将其原子集的所有元素判断TF得到的解释,若H0为多个元素,则逐一做对应;与普通解释的关系:普通解释指派常量、函数在D中的结果以及原子的结果,H解释指派每个原子集中元素的真假关系,原子集和常量、函数、原子应该是多对多关系,但如果给定常量取值,就是一对多关系
- 结论:
- 如果普通解释满足S,则其对应任意一个的H解释都能满足S
- S不可满足 iff 所有H解释都弄假S
- 子句C的基础实例C‘被解释I满足 iff 存在C’的基文字L‘在I下为真:很好理解,子句是文字的析取,只要一个文字为真子句就为真,因此基例满足解释
- 子句在解释I下为真 iff 子句的每个基例都被I满足:因为子句上的变量是被全称量词限制的,所以要求任一种基例都要被满足子句才能被解释I满足
- 子句被解释I弄假 iff 存在一个基例被解释I弄假
- 子句集不可满足 iff 对于每个解释I,都至少又S的某个子句的某个基例不被解释I满足:有点绕,整个子句不可满足对应每个解释都弄假S,每个解释都弄假S对应每个解释都使得子句集中至少一个子句被解释弄假,对应每个解释I都弄假这个子句其中的一个基例
- 语义树:完全语义树、封闭语义树
- 转化过程:首先先算H域、原子集,对原子集建立的二叉树得到完全语义树
- 封闭节点,就是这个节点到根节点构成的部分解释弄假子句集
- Herbrand定理:
- 形式一:子句集不可满足 iff S的每一个完全语义树都存在一个封闭语义树
- 形式二:子句集不可满足 iff 子句集S存在有限不可满足的基例集S’:这个存在的基例集应该这样构造,这个基例集的每个基例就像是部分解释,对于每个解释,都能在S’中存在其部分解释,充分性显然,必要性通过封闭语义树也显然
- 利用Herbrand定理进行自动推理(可满足性判定)的思路:依次构造基例集(应该能将完全语义树封闭住),判断是否可满足
- Gilmore过程
- DP过程
- 互补对删除规则:存在互补对的子句恒真
- 单子句规则:单文字子句可以直接剔除(若可满足必须取真值),并且将其他子句中有这个文字的子句也删除,有这个文字的否的子句去掉这个否文字就可以
- 纯文字规则:某文字的补没出现在子句集中,则可以将含有这些文字的子句剔除
- 分裂规则:分成两个子句集,只要一个可满足就行
-
合一算法
- 基础知识
- 替换:一个替换集合,让一个子句或者子句集(表达式)中的变量以此方式进行变换
- 替换的乘法:前替换集合会被后替换集合替换,并保留后替换集合的替换,删除恒等,二义的替换
- 合一:一个替换将多个表达式变换成同一个表达式
- 最一般合一mgu:一个表达式对应多种合一替换,这些合一替换都可分解为一个最一般合一替换和一个替换的乘积形式
- 一个原子集的最一般合一是(等价)唯一的
- 合一对于SAT的用途:将同一个谓词符号的表达式做合一,转化为一样的形式,方便后面做归结
- 合一算法
- 基础知识
-
归结原理
- 命题逻辑下的归结原理
- 归结式:亲本子句、若某个解释满足两个亲本子句,则其也满足这个归结式
- 归结演绎:
- 若从子句集出发可演绎出空子句,则S是不可满足的
- 若要证明一个定理(S=>P),则建立子句集{S, ~P},若子句集能推出空子句,则说明这个定理是恒真的,即证明定理成立
- 归结演绎:
- 归结式:亲本子句、若某个解释满足两个亲本子句,则其也满足这个归结式
- 一阶谓词逻辑下的归结原理
- 在命题逻辑归结原理的基础上需要进行合一
- 基础知识
- 因子:将一个子句中有最一般合一的文字进行mgu,得到的替换后的子句称为因子
- 二元归结式:无公共变量的子句中的两个文字( L 1 L_1 L1与 ¬ L 2 \neg L_2 ¬L2)进行mgu,然后进行归结
- 命题逻辑下的归结原理
-
归结原理的几种改进
- 水平浸透法:完备
- 支架集归结
- 语义归结
- 线性归结
- 输入归结
- 单元归结
- 锁归结
-
表推演 Tableau
-
命题逻辑下的表推演
-
观察经典逻辑中的语义事实具有某种对偶性,对此建立表:对于第一个表,前项为真,则第二项和第三项为真;对于第二个表,前项为真,第二项或者第三项为真;α规则向下扩展两行,β规则横着扩展
-
当分裂出的节点与前面扩展过的节点为互补节点时,分支封闭;当整个表推演树中每一个分支封闭,则证毕
-
方法:要证明一个公式X有效,则根节点设置为FX,根据α和β规则进行扩展,根据规则进行封闭
-
定理:设X是经i的那命题逻辑公式,则X是有效的(不可满足的),iff 存在FX(TX)的封闭表推演树
-
-
一阶谓词逻辑下的表推演
- 加入两条关于量词的公式γ和δ规则
- γ规则: T ( ∀ x A ( x ) ) T(\forall x A(x)) T(∀xA(x)) 、 F ( ∃ x A ( x ) ) F(\exists x A(x)) F(∃xA(x)) :带入任一个体参量
- δ规则: F ( ∀ x A ( x ) ) F(\forall x A(x)) F(∀xA(x)) 、 T ( ∃ x A ( x ) ) T(\exists x A(x)) T(∃xA(x)) :带入新的个体参量
- 加入两条关于量词的公式γ和δ规则
-
-
扩展规则推理方法
- 扩展规则:子句C可以扩展为KaTeX parse error: Undefined control sequence: \or at position 3: {C\̲o̲r̲ ̲A, C \or \neg A…,将每个子句扩展为极大项
- 判断一个公式是否可满足,可以看扩展出的极大项数是否小于2^m,若小于则子句集可满足
- 实际计算中用容斥原理算极大项个数比较方便
习题
试题分析
出现过的内容:
- 可满足性判断、证明
- 扩展规则 ok
- 局部搜索方法 abandon
- DPLL abandon
- 归结方法 ok
- 表推演 ok
- DP方法 ok
- 计算是否可以合一,给出最一般合一(要求给出算法步骤)hard
- 计算Herbrand域、原子集 easy
- 画完全语义树、封闭语义树、失效点、推理点 easy
- 线性归结方法 abandon
- 计算所有基例 easy
- 替换、替换乘法 easy
- 根据普通解释构造H解释 easy
- 根据公式算子句集 easy
其他章节
试题
- 人工智能之父
- 图灵奖得主
- IJCAI英文及简称
- 人工智能分成哪几个流派?
- 基于规则的正向演绎系统(第七章) abandon
资料
DP算法
关于DP算法的四条规则,书上和PPT上没给例子,很难理解,找了有本书上的解释
参考资料
看到的有个学长的笔记,感觉针不戳-,-