人工智能 搜索推理技术消解原理
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
②若 ∃xk (1< k≤n )左边有全称量词 < ≤ 左边有全称量词 (∀xs1) (∀xs2)…(∀xsr) ∀ ∀ ∀ ( 1≤r,1≤s1<s2<…<sr<k) ≤, ≤ 则,取不在母式中出现的 r 阶函数 fr (xs1, xs2,…xsr) 替代母式中的所有x 替代母式中的所有 k ,并删除前束中的 ∃xk
简化的做法: 简化的做法:
α=α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) ))
4 子句集
原子公式的定义: 原子公式的定义: ①原子命题是原子公式 如果t 是项, 是谓词 是谓词, ②如果 1,…,tn(n≥1)是项,P是谓词,则P(t1,…,tn) 是项 是原子公式 ③其它表达式都不是原子公式
子句的定义: 文字( 或基本式) 原子公式” ① 文字 ( 或基本式 ) : “ 原子公式 ” 或者
例:
前束范式: 前束范式: (∃x) (∀y) (∀z)((~P(x)∧~Q(y))∨R(z)) ∃ ∀ ∀ ~ ∧ ∨ 前束合取范式(交换律、分配律) 前束合取范式(交换律、分配律) (∃x) (∀y) (∀z)((R(z)∨~P(x))∧(R(z)∨~Q(y))) ∃ ∀ ∀ ∨ ∧ ∨
3 斯柯伦范式
两者的差别:在于④⑤⑥三步 两者的差别:在于④⑤⑥三步 ④⑤⑥ 是先得到前束合取范式, 方法 1 是先得到前束合取范式,再化成斯科 伦范式 是先引入斯科伦函数消去存在量词, 方法 2 是先引入斯科伦函数消去存在量词, 再化成前束合取范式
三步的结果:
得到不含存在量词的前束合取范式 得到不含存在量词的前束合取范式 存在量词
3.6 消解原理 章中介绍: 第2章中介绍: 章中介绍 谓词逻辑的基本知识 合一算法(求最一般的一致置换或合一者 合一算法( mgu) ) 本节: 本节: 消解原理(或者归结原理) 消解原理(或者归结原理)
3.6.1 子句集的求取 如何将谓词公式转化为子句集, 如何将谓词公式转化为子句集 , 作为合一算法 的输入(公式集) 的输入(公式集) 3.6.1.1 若干基本概念 3.6.1.2 子句集的求取
2、将前束范式转化为斯柯伦(Skolem)范式 、将前束范式转化为斯柯伦( ) ⑥ 得到斯科伦范式 3、将斯柯伦范式转化为子句集 、 消去前束(全称量词) ⑦ 消去前束(全称量词) ⑧ 消去合取连词 变量改名, ⑨ 变量改名,得到子句集
说明:
为了使斯科伦函数更简单一些, 为了使斯科伦函数更简单一些,可以将合取关 系的各个谓词公式分别先分成前束范式、 系的各个谓词公式分别先分成前束范式、斯科 伦范式,再综合起来化成前束范式、 伦范式,再综合起来化成前束范式、前束合取 范式( 范式(后面的定理证明部分就采用了这一种化 法)
例3:∀ x ( P(x) ⇒ (R(x, y))) : 除了 y 外,可以将 x 改成任何变元名 例4:∀ x P(x) ∧ Q(y) : 可以改成任何变元名, 可以改成任何变元名,包括 y(建议不要用) (建议不要用)
2 前束范式与前束合取范式
定义:设谓词公式 具有形式 具有形式: 定义:设谓词公式α具有形式: α=(θ1x1)…(θnxn) M = 其中: 其中:θi ( i = 1 , … , n ) 是 ∃ 或 ∀ M 是不包含量词的谓词公式 则,称α是前束范式 是 称 (θ1x1)…(θnxn ) 为前束 称 M 为母式
说明:
为了便于消解推理,要通过改名使得一个变量 为了便于消解推理,要通过改名使得一个变量 改名 符号不出现在一个以上的子句中, 符号不出现在一个以上的子句中,即每一个子 句具有不同的变量 句具有不同的变量
例:
子句形式: 子句形式: (∀x) (∀y) (∀z)((R(z)∨~P(x))∧(R(z)∨~Q(y))) ∀ ∀ ∨ ∧ ∨ 子句集: 子句集: { R(z)∨~P(x) , R(z)∨~Q(y) } ∨ ∨ { R(z1)∨~P(x1) , R(z2)∨~Q(y1) } (改名) 改名) ∨ ∨
定义: 前束中不含存在量词 不含存在量词的前束范式称为斯 定义 : 前束中 不含存在量词 的前束范式称为斯 柯伦范式
前束范式化成斯柯伦的 消去存在量词的规则 或 前束范式化成斯柯伦的 步骤是 步骤是: ①若∃xk (1≤k≤n )左边没有全称量词,则取不 左边没有全称量词 ≤ ≤ 左边没有全称量词, 在母式中出现的常量替代母式中的所有 xk ,并 删除前束中的 ∃xk
谓词公式 = 全称量词串 + 合取范式的母式
注:母式中的斯科伦函数变元个数可能不相同
求取子句集的步骤: 求取子句集的步骤:
消去“蕴含” 等价” ① 消去“蕴含”和“等价”连 结词 使用的公式: 使用的公式: A⇒B = ~A∨B ⇒ ∨ A⇔B = (A⇒B)∧(B ⇒A) ⇔ ⇒ ∧
例1:∀ x ( P(x) ⇒ ∃y (R(x, y)) ) : x , y 都是约束变元 例2:∀ x ( P(x) ⇒ (R(x, y)) ) : x 是约束变量,y 是自由变元 是约束变量,
约束变元的改名或 约束变元的改名或变量的标准化
改名:将谓词公式中一个变元名改成另一个变元
但是要求改名后的公式与原公式意义相同 名 , 但是要求改名后的公式与原公式 意义相同 (真假值相同) 真假值相同) 改成的新的变元名一定是量词作用域 量词作用域中没 原则:改成的新的变元名一定是量词作用域中没 有出现过的变元名( 包括约束变元和自由变元) 有出现过的变元名 ( 包括约束变元和自由变元 )
自由变元:
α中不在任何量词作用域内的变元 x ,称为变 中不在任何量词作用域内的变元 元 x 在 α 中的自由出现,相应地称 x 为自由变 中的自由出现, 元(自由变量) 自由变量)
说明:
量词的作用域(辖域) 量词的作用域(辖域)是直接跟在它后面的公 式 如果有括号, 如果有括号,则是括号里的公式 如果没有括号, 如果没有括号,则是最短的完整公式
“原子公式的非” 原子公式的非” ② 子句:一个或多个基本式的 析取
子句形式的定义:
一个谓词公式α具有形式: 一个谓词公式 具有形式: 具有形式 α=( ∀x1 )…( ∀xn )( c1∧c2∧…∧cm ) = ∧ 其中, 其中,ci ( i = 1, …, m )为子句 为子句 x1, …, xn 是子句中出现的约束变元 则,称谓词公式α具有子句形式 称谓词公式α
③反复使用上述两条规则,消除前束中的所 反复使用上述两条规则, 有存在量词,即得到斯柯伦范式 有存在量词,即得到斯柯伦范式 其中,引入的函数称为斯柯伦函数 其中,引入的函数称为斯柯伦函数
例:求斯柯伦范式
∃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) 代替u,删除∃ ) (用f(y,z)代替 ,删除∃u) 代替 = ∀y ∀z ∀v ∃w A(a,y,z, f(y,z),v,w) 代替w,删除∃ (用h(y,z,v)代替 ,删除∃w) 代替 = ∀y ∀z ∀v A(a,y,z, f(y,z),v,h(y,z,v))
百度文库
定义:设谓词公式α是一个前束范式 如果α的母式 是一个前束范式, 定义:设谓词公式 是一个前束范式,如果 的母式 具有形式: 具有形式: (M11∨M12…∨M1 n1)∧ ∨ (M21∨M22…∨M2 n2)∧ ∨ …… (Mm1∨Mm2…∨Mm nm) ∨ 其中, 是原子公式或其非,则称α 其中,M i j 是原子公式或其非,则称α是前束合取 范式。 范式。相应地有前束析取范式
人
工
智
能
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 语言简介 (补充) 补充)
方法2 教材采用的方法): 方法 (教材采用的方法): 消去“蕴含” 等价” ① 消去“蕴含”和“等价”连结词 ② 减少“非”连结词的辖域(将“~”连结词 减少“ 连结词的辖域( 直接作用到原子公式前) 直接作用到原子公式前) 对变量标准化(约束变元改名) ③ 对变量标准化(约束变元改名)
④消去存在量词(引入斯科伦函数) 消去存在量词(引入斯科伦函数) ⑤化成前束范式 ⑥将母式化成合取范式 ⑦消去全称量词 ⑧消去合取连结词 ⑨更改变量名,得到子句集 更改变量名,
3.6.1.1 若干基本概念 1 自由变元与约束变元 2 前束范式与前束合取范式 3 斯科伦(Skolem)范式 斯科伦( ) 4 子句集
1 自由变元与约束变元
是一个谓词公式, 量词记作 记作θ( 设α,β是一个谓词公式,将量词记作 (即 ∃ , 是一个谓词公式 或∀)
约束变元
如果α中包含部分公式 如果 中包含部分公式 (θx)β,则β中变元 x 的一 , 中变元 切出现都称为 x 在 α 中的约束出现,相应地称 x 中的约束出现, 为约束变元(哑元、虚构变量、约束变量) 约束变元(哑元、虚构变量、约束变量)
简化化法 α = ∃ y1 ∀ x1 P( x1 , y1 ) ∧ ∀x2 ∃y2 Q( x2 , y2 ) = ∀ x1 P( x1 , a1 ) ∧ ∀x2 Q( x2 , f(x2) ) (先分别化成斯科伦范式) 先分别化成斯科伦范式) = ∀ x1 ∀x2 (P( x1 , a1 ) ∧ Q( x2 , f(x2) )) (前束合取范式) 前束合取范式) 前束合取范式
说明:
一个谓词公式的斯科伦范式不是唯一的, 一个谓词公式的斯科伦范式不是唯一的,尽可 能将斯科伦函数取得简单一点
对于谓词公式: 对于谓词公式:α=α1∧α2 α 正常的做法: 正常的做法: 化成前束范式 化成前束合取范式 化成斯科伦范式(斯科伦函数的变元较多) 化成斯科伦范式(斯科伦函数的变元较多)
说明:
闭公式: 闭公式:不含自由变量的谓词公式 谓词公式的子句形式是闭公式 母式为子句的合取范式 前束中只有全称量词 全称量词, 前束中只有全称量词,无存在量词
α=( ∀x1 )…( ∀xn )( c1∧c2∧…∧cm ) = ∧
子句集的定义:
具有子句形式, 若谓词公式 α 具有子句形式,记 S = ( c1 , c2 , … , cm ) 则,称 S 为谓词公式的子句集
3.6.1.2 子句集的求取 子句集的求取(将谓词公式化成子句集) 子句集的求取(将谓词公式化成子句集)有两 种方法,其形式上会有差别,但是其逻辑意义 种方法,其形式上会有差别, 是相同
方法1(离散数学、数理逻辑采用的方法) 方法 (离散数学、数理逻辑采用的方法): 1、将谓词合适公式转化为前束合取范式 、 消去“蕴含” 等价” ① 消去“蕴含”和“等价”连结词 ② 将“~”连结词直接作用到原子公式前 约束变元改名, ③ 约束变元改名,使所有的约束变元名都不相同 将量词移到谓词公式的左边, ④ 将量词移到谓词公式的左边,得到前束范式 ⑤ 将前束范式化成前束合取范式