归结原理修改稿
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.6 利用归结原理求取问题的答案
求解答案的基本思想和定理证明类似。其求解步骤如下: (1)把前提条件用谓词公式表示出来,并且化为相应 的子句集S。 (2)把待求解的问题也用谓词公式表示出来,其中含 有欲求解的变元。 (3)另设一个特殊的一元谓词ANSWER,其变元和求 解问题公式中的变元相同。 (4)把求解公式和ANSWER谓词“或”起来构成析取 式,把此析取式化成子句集后并入条件子句集S中形成新子 句集S'。 (5)对S'用归结原理进行归结。 (6)若归结的结果是ANSWER,则其已实例化的变元 就是问题的答案。
D2={z, h(b)}
求最一般合一的算法。 (1)置k=0, Fk=F, k=。 (2)若Fk只含一个元素,则算法停止,此时k就是所要求的 最一般合一。 (3)找出Fk的差异集Dk。
(4)若Dk中存在元素xk和tk,其中xk是变元,tk是项,且xk不 在tk中出现,则置
k+1=k {tk/xk}
例2-9 证明
S = {P∨Q, ~ P∨Q, P∨ ~Q, ~P∨ ~Q}
是不可满足的子句集。 证明: (1)P∨Q (2)~ P∨Q (3)P∨ ~Q (4)~P∨ ~Q (5)Q ((1)+(2)) (6)~Q ((3)+(4)) (7)NIL ((5)+(6)) 所以S是不可满足的。
这个过程用一棵演绎树表示出来。所谓演绎 树就是表示演绎过程的树,即指出由哪两个子句 推出其归结式,由上到下进行,直到树根的空子 句。树根在演绎树的最下方。
例2-14 设张三、李四、王五三人中有人
从来不说真话,也有人从来不说假话。某
人向这三人分别提出同一个问题:谁是说
假话者?张三答:“李四和王五都是说假
话者”;李四答:“张三和王五都是说假
话者”;王五答:“张三和李四中至少有
一个人是说假话者”。求谁是说假话者, 谁是说真话者?
解: 第一步 首先将已知条件用谓词公式表示出来,并化成
如果王五说的是真话:P(Wang)→ ~ P(Zhang) ∨ ~ P(Li)
如果王五说的是假话: ~ P(Wang)→ P(Zhang) ∧ P(Li) 第二步 把问题用谓词公式表示出来,并将其否定与谓 词ANSWER做析取。 ~P(X) ∨ ANSWER(X)
第三步 应用归结原理对上述子句集进行归结。
2.4 归 结 原 理
定义2-27 归结式:对命题逻辑中任意两个子句 C1和C2。如果C1中有文字L1,它是C2中文字L2的 补(即L1= ~L2),那么从C1和C2中分别消去L1和 L2,并将余下的两个子句析取以构成一个新的子
句C12,则C12称为C1和C2的归结式。即
C12= (C1–{L1})∨(C2–{L2})
C1和C2称为C12的亲本子句。
C1 P∨R ~P∨Q∨R P∨Q P∨Q∨R
C2 ~P∨Q ~Q∨S P∨R ~P∨~Q∨R
C12 R∨Q ~P∨R∨S 不存在 P∨~P∨R = T或 Q∨~Q∨R = T (每次归结只能消去 一个互补对) NIL
P
~P
定理2-8 归结式C12是其亲本子句C1和C2 的逻辑结论。 C1 ∧ C2 C12 推论 如果C1和C2是子句集S中的两个 子句,C12是它们的归结式,则用C12代替 C1和C2所得的新子句集S’ 保持着原子句集 S的不可满足性。 即 (S' 不可满足) (S不可满足)
子句集。先定义谓词和常量。设P(x)表示x说真话。
如果张三说的是真话:P(Zhang)→ ~ P(Wang) ∧ ~ P(Li) 如果张三说的是假话: ~ P(Zhang)→ P(Wang) ∨ P(Li) 如果李四说的是真话:P(Li)→ ~ P(Zhang) ∧ ~ P(Wang) 如果李四说的是假话: ~ P(LI)→ P(Zhang) ∨ P(Wang)
定义2-32 子句C1和C2的归结式是下列 二元归结式之一:
(1)C1与C2的二元归结式
(2)C1与C2的因子的二元归结式
(3)C1的因子与C2的二元归结式
(4)C1的因子与C2的因子的二元归结式
例如,有两个子句
C1=P(x)∨P(f(y))∨R(g(y))
C2= ~ P(f(g(a)))∨Q(b)) (1)子句C1中有可合一的文字 {P(x) ,P(f(y))} , 它们的最一般合一是σ1={f(y)/x} C1的因子是C1σ1 =P(f(y))∨R(g(y)) , (2)又由于P(f(y))和~ P(f(g(a)))是可合一的文字,它们的最 一般合一是θ={g(a)/y} 所以C1σ1和C2有二元归结式R(g(g(a))) ∨ Q(b)
它就是C1和C2的归结式。
2.5 定 理 证 明
设有定理 A B,用归结反演证明B为真的步 骤是: (1)把结论否定得~B; (2)把结论的否定加到前提公式集里面, 得到{A,~B}; (3)把公式集化为子句集S; (4)应用归结原理对子句集S中的子句进行归结, 并把每次得到的归结式并入S中。如此反复进行, 若出现了空子句,则归结停止,此时就证明了B为 真。
(1)~P∨~Q∨R
(2)P∨R (3)Q∨R (4)~R (5)~P∨R (6)R (7)NIL ((1)+(3)) ((2)+(5)) ((4)+(6))
程序常用的方法是水平浸透法,它的做法如下:
(a)把S0中的子句排序;
(b)在S0中顺序地考虑两个子句的归结式:即第一个子句和其 后各子句归结,然后第二个子句和其后各子句归结,第三个子 句再和其后各子句归结,…,直至倒数第二个子句和最后一个 子句归结,得到子句集S1: S1={C12 | C1S0,C2S0}
为空代换,记作。
• 例如, ={f(x)/y, a/z}称为基代换,而={f(x)/x, g(x)/y}为非基代换。
2.谓词逻辑中的归结原理 可以把一个代换作用到谓词公式上而
得到该谓词公式在该代换下的一个实例。
设 ={t1/x1,…, tn/xn},公式为F,则G=F
就是F在 作用下的实例。一个公式的任何
换和的复合 被定义为代换的子集:
。在 中不包含 中的如下元素:
tλ i / xi ui / yi
当ti=xi时(无用代换) 当yi∈{x1,…, xn}时(重复代换)
• 也就是去掉 中无用的和重复的代换。
例如,有代换={f(y)/x, z/y}和 ={a/x, b/y,
例2-12 求证G是F1和F2的逻辑结论。 • F1: (x)(P(x)→ (y)(Q(y)→~L(x,y))) • F2: (x)(P(x)∧(y)(R(y)→L(x,y))) • G: (x)(R(x)→~Q(x))
证明:首先把F1,F2和~G都化成skolem标 准形,并注意给变元改名,使各子句间无 重名变元。
例2-13 已知: (1)自然数都是大于零的整数。 (2)所有整数不是偶数就是奇数。 (3)偶数除以2是整数。 求证:所有自然数不是奇数就是其一半为整数的数。 证明:首先要把用自然语言描述的知识用谓词逻辑中的公 式表示出来。 第一步就是要定义谓词,赋予其含义,确定谓词变元 个数及次序并规定其关系。设定义以下谓词: N(x):x是自然数。 I(x):x是整数。 E(x):x是偶数。 O(x):x是奇数。 GZ(x):x大于零。 又定义一个函数f(x)=x/2,则得到以下公式:
体变元进行代换。
定义2-28 代换:代换是形如{t1/x1, t2/x2, …, tn/xn}
的有限集合,其中ti是项,xi是互不相同的变元 (i=1, 2,…, n )。常用希腊字母,, …表示代换。 如在项t1, t2, …, tn中不含任何变元x1, x2, …, xn,则 这种代换称为是基代换。不含任何元素的代换称
课堂作业: 已知王先生是小李的老师; 小李与小张是同班同学; 如果x和y是同班同学,则x的老师就是y 的老 师。 求:小张的老师是谁?
2.7 归结原理的改进
1.问题的提出
归结原理在定理证明、答案求解方面确实很有用处,但它在实际 应用中仍有很多问题,主要是在归结过程中会产生大量的无用子句。 例如,有子句集S: ~P∨~Q∨R, P∨R, Q∨R, ~R 对其进行归结:
Fk+1=Fk{tk/xk}
k=k+1 然后转步骤(2)。 (5)算法终止,F的最一般合一不存在。
例2-11 求F={P(a, x, f(g(y))), P(z, f(z), f(u))}的最一般合一。 解: k=0:F0=F, 0= F0不是单一元素集,有D0={a, z} 其中a是常量项,不包含z,所以有 1=0 {a/z}={a/z}={a/z} F1=F0{a/z}={P(a, x, f(g(y))), P(a, f(a), f(u))} k=1:F1不是单一元素集,有D1={x, f(a)},则 2=1 {f (a)/x}={a/z, f(a)/x} F2=F1{f(a)/x}={P(a, f(a), f(g(y))), P(a, f(a), f(u))} k=2:F2不是单一元素集,有D2={g(y), u},则 3=2 {g(y)/u}={a/z, f(a)/x, g(y)/u} F3=F2{g(y)/u}={P(a, f(a), f(g(y)))} k=3:F3已是单一元素集,所以 3={a/z, f (a)/x, g (y)/u} 就是公式集F的最一般合一。
如何求一个公式集F的最一般合一呢?有一个算法可以 实现。该算法涉及差异集的概念。所谓差异集即两个公式 中相应位置上有不同的元素。设有谓词公式集合F= {F1, F2},其中
F1:P(x, y, z) F2:P(x, f(a), h(b)) 分别从F1和F2的第一个符号开始,逐个向右比较,发现y 和f(a)不一致,于是它们构成一个差异集: D1={y, f(a)} 继续向右比较,又发现z和h(b)不一致,它们又构成一个差 异集:
称为可合一的。
定义2-31 最一般合一:如果是公式集F
的一个合一,且对F的任何合一 i,都存在
一个代换i使得 i= i,则称为F的最一
般合一。
例如 F={P(u, y, g(y)), P(x, f(u), z)} 它的最一般合一是 ={u/x, f(u)/y, g(f(u))/z} 对F的任何一个代换,如 ={a/x, f(a)/y, g(f(a))/z, a/u} 存在一个代换 ={a/u} 使得 =
实例都是该公式的逻辑结论,即FF。
定义2-29 代换的复合:设有两个代换,={t1/x1,
t2/x2,…, tn/xn}, ={u1/y1, u2/y2, …, um/ym},由此生成
一个代换 ={t1/x1, t2/x2,…, tn/xn, u1/y1, u2/y2,…,
um/ym},其中ti表示把代换作用到项ti上,则代
y/z},由此形成
={f(b)/x, y/y, a/x, b/y, y/z}
去掉其中无用的代换y/y和与前面重复的代换
a/x, b/y,可得
={f(b)/x, y/z}ຫໍສະໝຸດ Baidu
定义2-30 合一:设有一个公式集 F={F1, …, Fn},若存在一个代换,使得
F1 =…=Fn,则称 为F的一个合一,F被
又定义一个函数f(x)=x/2,则得到以下公式 : F1 : (x)( N ( x) GZ ( x) ∧ I ( x))
F2 : (x)( I ( x) E ( x) ∨ O ( x))
F3 : (x)( E ( x) I ( f ( x)))
欲证明的结论G为: G : (x)( N ( x) (O( x) ∨ I ( f ( x)))
例2-10 证明(~P∨Q)∧~Q ~P。 可把问题转化为求子句集 S = (~P∨ Q) ∧~ Q ∧ P 的不可满足性问题。 证明: (1)~P∨ Q (2)~Q (3)P (4)~P ((1)+(2)) (5)NIL ((3)+(4))
2.谓词逻辑中的归结原理
在一阶谓词逻辑中运用归结原理,常需要对个