1、人 工 智 能Artificial Intelligence (AI)第 3章 搜索推理技术 3.1 图的搜索策略3.2 盲目搜索3.3 启发式搜索3.4 与或树搜索( 补充 )3.5 博弈树搜索( 补充 )3.6 消解原理3.6 消解原理3.6.1 子句集的求取3.6.2 消解原理(补充)3.6.3 消解推理规则3.6.4 含有变量的消解式3.6.5 消解反演求解过程3.6.6 Horn子句集消解(补充)3.6.7 Prolog 语言简介 (补充)3.6 消解原理 第 2章中介绍 : 谓词逻辑的基本知识 合一算法(求最一般的一致置换或合一者mgu)本节 :消解原理(或者归结原理)3.6.1
2、子句集的求取如何将谓词公式转化为子句集,作为合一算法的输入(公式集) 3.6.1.1 若干基本概念3.6.1.2 子句集的求取3.6.1.1 若干基本概念1 自由变元与约束变元 2 前束范式与前束合取范式3 斯科伦( Skolem) 范式4 子句集设 , 是一个谓词公式,将 量词 记作 ( 即 或 )1 自由变元与约束变元如果 中包含部分公式 (x), 则 中变元 x 的一切出现都称为 x 在 中的约束出现,相应地称 x 为约束变元 (哑元、虚构变量、约束变量)约束变元中不在任何量词作用域内的变元 x , 称为变元 x 在 中的自由出现,相应地称 x 为 自由变元 (自由变量)自由变元 : 量
3、词的作用域(辖域)是直接跟在它后面的公式 如果有括号,则是括号里的公式 如果没有括号,则是最短的完整公式说明 :例 1: x ( P(x) y (R(x, y) )x , y 都是约束变元例 2: x ( P(x) (R(x, y) )x 是约束变量, y 是自由变元改名 :将谓词公式中一个变元名改成另一个变元名,但是要求改名后的公式与原公式 意义相同(真假值相同)原则 :改成的新的变元名一定是 量词作用域 中没有出现过的变元名(包括约束变元和自由变元)约束变元的改名 或 变量的标准化例 3: x ( P(x) (R(x, y) 除了 y 外,可以将 x 改成任何变元名例 4: x P(x)
4、Q(y)可以改成任何变元名,包括 y( 建议不要用 )2 前束范式与前束合取范式 定义 :设谓词公式 具有形式: (1x1)( nxn) M其中: i ( i = 1 , , n ) 是 或 M 是不包含量词的谓词公式则,称 是 前束范式称 (1x1)( nxn ) 为 前束称 M 为 母式定义 :设谓词公式 是一个前束范式,如果 的母式具有形式:( M11 M12 M1 n1) ( M21 M22 M2 n2) (Mm1 Mm2 Mm nm)其中, M i j 是原子公式或其非,则称 是 前束合取范式 。相应地有前束析取范式前束范式 :(x) (y) (z)( P(x) Q(y) R(z)
5、前束合取范式 ( 交换律、 分配律 )(x) (y) (z)(R(z) P(x) (R(z) Q(y)例 :3 斯柯伦范式 定义 :前束中 不含存在量词 的前束范式称为斯柯伦范式 若 xk (1 k n )左边 没有全称量词 ,则取不在母式中出现的常量替代母式中的所有 xk , 并删除前束中的 xk消去存在量词的规则 或 前束范式化成斯柯伦 的步骤 是: 若 xk (1 k n )左边有全称量词(xs1) (xs2)( xsr)( 1 r, 1 s1s2 srk)则,取不在母式中出现的 r 阶函数 fr (xs1, xs2,x sr)替代母式中的所有 xk , 并删除前束中的 xk 反复使用上
6、述两条规则,消除前束中的所有存在量词,即得到 斯柯伦范式其中,引入的函数称为 斯柯伦函数x y z u v w A(x,y,z,u,v,w)(用 a替代 x, 删除 x)= y z u v w A(a,y,z,u,v,w) ( 用 f(y,z)代替 u, 删除 u) = y z v w A(a,y,z, f(y,z),v,w) ( 用 h(y,z,v)代替 w, 删除 w) = y z v A(a,y,z, f(y,z),v,h(y,z,v) 例 :求斯柯伦范式说明 :一个谓词公式的斯科伦范式不是唯一的,尽可能将斯科伦函数取得简单一点 化成前束范式 化成前束合取范式 化成斯科伦范式( 斯科伦函
7、数的变元较多)对于谓词公式: = 1 2正常的做法 : 将 1、 2 分别化成前束范式 对 1、 2 分别求出斯柯伦范式 1、 2 将 1 2 的量词左移得到 的斯柯伦范式(即前束范式)简化的做法 :好处 :简化斯科伦函数 = 1 2 = y1 x1 P( x1 , y1 ) x2 y2 Q( x2 , y2 )= y1 x1 x2 y2 (P( x1 , y1 ) Q( x2 , y2 )( 前束合取范式)= x1 x2 (P( x1 , a1 ) Q( x2 , f(x1,x2) )例 : 正常化法 = y1 x1 P( x1 , y1 ) x2 y2 Q( x2 , y2 )= x1 P
8、( x1 , a1 ) x2 Q( x2 , f(x2) )( 先分别化成斯科伦范式)= x1 x2 (P( x1 , a1 ) Q( x2 , f(x2) )(前束合取范式)简化化法4 子句集 原子命题是原子公式 如果 t1,t n(n1)是项, P是谓词,则P(t1,t n)是原子公式 其它表达式都不是原子公式原子公式的定义 : 文字(或基本式) : “原子公式 ”或者 “原子公式的非 ” 子句 : 一个或多个基本式的 析取析取子句的定义 :一个谓词公式 具有形式: ( x1 )( xn )( c1 c2 cm )其中, ci ( i = 1, , m )为子句x1, , x n 是子句中出现的约束变元则,称谓词公式 具有子句形式子句形式的定义 :闭公式:不含自由变量的谓词公式谓词公式的子句形式是闭公式母式为子句的合取范式前束中只有 全称量词全称量词 ,无存在量词 说明 :