1.24k likes | 1.42k Views
人工智能 Artificial Intelligence. 自动推理. 自动推理的理论和技术是专家系统、程序推导、程序正确性证明、智能机器人等研究领域的重要基础。 自动推理早期的工作主要集中在机器定理证明。 1930 年 Herbrand 为定理证明建立了一种重要方法,他的方法奠定了机械定理证明的基础。 机械定理证明的主要突破是 1965 年由 J.A.Robinson 做出的,他建立了所谓归结原理,使机械定理证明达到了应用阶段。. Agenda. 引言 命题逻辑中的归结原理 谓词逻辑中的归结原理 非单调推理. 引言( 1 ).
E N D
自动推理的理论和技术是专家系统、程序推导、程序正确性证明、智能机器人等研究领域的重要基础。自动推理的理论和技术是专家系统、程序推导、程序正确性证明、智能机器人等研究领域的重要基础。 • 自动推理早期的工作主要集中在机器定理证明。 • 1930年Herbrand为定理证明建立了一种重要方法,他的方法奠定了机械定理证明的基础。 • 机械定理证明的主要突破是1965年由J.A.Robinson做出的,他建立了所谓归结原理,使机械定理证明达到了应用阶段。
Agenda 引言 命题逻辑中的归结原理 谓词逻辑中的归结原理 非单调推理
引言(1) • 从一个或几个已知的判断(前提)逻辑地推论出一个新的判断(结论)的思维形式称为推理, 这是事物的客观联系在意识中的反映。 • 自动推理早期的工作主要集中在机器定理证明。机械定理证明的中心问题是寻找判定公式是否是有效的(或是不一致的)通用程序。 • 若按推理过程中推出的结论是否单调地增加,或者说推出的结论是否越来越接近最终目标来划分,推理可以分为单调推理和非单调推理。
引言(2) • 所谓单调推理是指在推理过程中随着推理的向前推进以及新知识的加入,推出的结论呈单调增加的趋势,并且越来越接近最终目标,在推理过程中不会出现反复的情况,即不会由于新知识的加入否定了前面推出的结论,从而使推理又退回到前面的某一步。 • 所谓非单调推理是指在推理过程中由于新知识的加入,不仅没有加强已推出的结论,反而要否定它,使得推理退回到前面的某一步,重新开始。非单调推理是在知识不完全的的情况下发生的。
引言(3) • 在现实世界中存在大量不确定问题。不确定性来自人类的主观认识与客观实际之间存在差异。事物发生的随机性,人类知识的不完全、不可靠、不精确和不一致, 自然语言中存在的模糊性和歧义性都反映了这种差异, 都会带来不确定性。 • 针对不同的不确定性的起因, 人们提出了不同的理论和推理方法。在下章中,我们将对不确定性推理进行讨论。
引言(4) • 证明的基本思想是: 设F1、…、Fn、G为公式,G为F1、…、Fn的逻辑推论,当且仅当公式((F1…Fn)G)是有效的 • 也可以采用反证法的思想: 设F1、…、Fn、G为公式,G为F1、…、Fn的逻辑推论,当且仅当公式(F1…Fn G)是不可满足的 • 归结法的本质上就是一种反证法,它是在归结推理规则的基础上实现的: 为了证明一个命题P恒真,它证明其反命题~P恒假,即不存在使得P为真的解释
Agenda 引言 命题逻辑中的归结原理 谓词逻辑中的归结原理 非单调推理
命题逻辑中的归结原理 子句和子句形 归结 归结反演 合理性和完备性 归结反演的搜索策略
子句和子句形(1) • 文字是原子或其否定 • 子句是文字的析取 • 完备连接符集合: • 合取范式(CNF) (L11 … L1n1) … (Lm1 … Lmnm) • 析取范式(DNF) (L11 … L1n1) … (Lm1 … Lmnm) • 定理: 对任意公式,都有与之等值的合取范式和析取范式 • 转换方法:一般方法 真值表方法
子句和子句形(2) • 一般方法 • Eliminate implication signs by using the equivalent form using • Reduce the scopes of ~ signs by using DeMorgan’s law and by eliminating double ~ signs • Convert to CNF by using the associative and distributive laws.
Resolution • 对任意三个文字 p、q 和 r p r, q ~r p q 或者: for C1= P C1’, C2=~P C2’ P C1’, ~P C2’ C1’ C2’ • 归结式: R(C1, C2)=C1’ C2’ • 证明:
Resolution Refutations(1) • 定理证明的任务: 由前提A1 A2 ... An 推出结论B 即证明:A1 A2 ... AnB 永真 • 转化为证明: A1 A2 ... An ~B为永假式 • 归结推理就是:从A1 A2 ... An ~B出发,使用归结推理规则来找出矛盾,最后证明定理A1 A2 ... AnB的成立
Resolution Refutations(2) • 归结方法是一种机械化的,可在计算机上加以实现的推理方法 • 可认为是一种反向推理形式 • 提供了一种自动定理证明的方法
Resolution Refutations(3) • 一般过程: • 建立子句集S • 从子句集S出发,仅对S的子句间使用归结推理规则 • 如果得出空子句, 则结束;否则转下一步 • 将所得归结式仍放入S中 • 对新的子句集使用归结推理规则 • 转(3) • 空子句不含有文字,它不能被任何解释满足,所以空子句是永假的,不可满足的 • 归结过程出现空子句,说明出现互补子句对,说明S中有矛盾,因此S是不可满足的.
Resolution Refutations(4) • 例子:证明(P Q) ~Q ~p • 首先建立子句集: • (P Q)~Q ~(~P) • (~P Q) ~Q P • S={~PQ, ~Q , P} • 对S作归结: (1) ~P Q (2) ~ Q (3) P (4) ~P (1)(2)归结 (5) (3)(4)归结
Soundness and Completeness • 归结原理是合理的 • 归结原理是完备的
Resolution Refutation Search Strategies • 有序策略(Order strategies) • Refinement strategies • 支持集(Set of support): • 每次归结时,参与归结的子句中至少应有一个是由目标公式的否定所得到的子句,或者是它们的后裔 • 该策略是完备的 • 线性输入(Linear Input): • 参与归结的两个子句中至少有一个是初始子句集中的子句 • 该策略是不完备的 • 祖先过滤(Ancestry Filtering) : • 参与归结的两个子句中至少有一个是初始子句集中的句子,或者是另一个子句的祖先 • 该策略是完备的
Agenda 引言 命题逻辑中的归结原理 谓词逻辑中的归结原理 非单调推理
谓词逻辑归结方法 • 子句形 • 归结原理 • 归结的完备性
子句形--SKOLEM标准型 • 前束范式 (Q1x1)…(Qnxn)M(x1,…,xn) 前束形== ( 前 缀 ) { 母 式 } 量词串 无量词公式 • 定理:任何公式G都等价于一个前束范式 • Skolem函数: • 存在量词不出现在全称量词的辖域内,此时只要用一个新的个体常量(称为Skolem常量)替换受该存在量词约束的变元就可消去存在量词 • 存在量词位于一个或多个全称量词的辖域内.此时需要Skolem函数,该函数的变元就是由那些全称量词所约束的全称量词量化的变量.Skolem函数所使用的函数符号必须是新的.
子句形--SKOLEM标准型 • Skolem标准型: 没有存在量词的公式。 • 设G是一阶逻辑中的公式,将其化为Skolem标准型,母式M给出的子句集S称为公式G的子句集
子句形—化子句集-1 • 谓词公式化为子句形的步骤 x [P(x) [y [P(y) P(f(x,y))] ~y [Q(x,y) P(y)]]] (1)消去蕴含符号:PQ ~P Q x [~P(x)[y[~P(y) P(f(x,y))] ~y [~Q(x,y) P(y)]]] (2)减少否定符号的辖域,把“~”移到紧靠谓词的位置上 ~(~P) P ~(P Q) ~P ~Q ~(P Q) ~P ~Q ~(x)P (x) ~P ~(x) P (x) ~P x [~P(x)[y [~P(y) P(f(x,y))] y [Q(x,y) ~ P(y)]]]
子句形—化子句集-2 (3)变量标准化:重新命名变元名,使不同量词约束的变元有不同的名字. x[~P(x) [y [~P(y) P(f(x,y))] w [Q(x,w) ~P(w)]]] (4)消去存在量词: x[~P(x) [y[~P(y)P(f(x,y))] [Q(x,g(x))~P(g(x))]]]
子句形—化子句集-3 (5)化为前束形: • 把所有的全称量词移到公式的左边,并使每个量词的辖域包含这个量词后面公式的整个部分.即得前束形 • 上例变为: x y [~P(x) [[~P(y) P(f(x,y))] [Q(x,g(x))~P(g(x))]]] (6)把母式化为合取范式: • 上例变为: x y [[~P(x) ~P(y) P(f(x,y))] [~P(x) Q(x,g(x))] [~P(x) ~P(g(x))]]
子句形—化子句集-4 (7)消去全称量词: [[~P(x) ~P(y) P(f(x,y))] [~P(x) Q(x,g(x))] [~P(x) ~P(g(x))]] (8)消去连结词符号 ~P(x) ~P(y) P(f(x,y)) ~P(x) Q(x,g(x)) ~P(x) ~P(g(x)) (9)更换变量名称:对变元更名,使不同子句中的变元不同名. ~P(x1) ~P(y) P(f(x1,y)) ~P(x2) Q(x2,g(x2)) ~P(x3) ~P(g(x3))
子句形—化子句集--6 • 一个子句内的文字可含有变量,但这些变量总是被理解为全称量词量化的变量 • G与其子句集S并不等值.但是在不可满足的意义下两者是等价的.而且G是S的逻辑推论,SG.反过来不成立
谓词逻辑的子句形--定理 • 定理:若G是给定的公式,而相应的子句集为S,则G是不可满足的当且仅当S是不可满足的 • 推论:设G=G1 … Gn, Si是 Gi的Skolem标准型,令S= Si… Sn ,则,G是不可满足的当且仅当S是不可满足的。
示例-1 • 例1:证明梯形的对角线与上下底构成的内错角相等 • 设给定梯形的顶点依次为:a,b,c,d. T(x,y,u,v):表示以xy为上底,uv为下底的梯形 P(x,y,u,v):表示xy平行于uv E(x,y,z,u,v,w):表示xyz=uvw 问题的逻辑描述和相应的子句集为: A1: (x)(y)(u)(v)(T(x,y,u,v)P(x,y,u,v)) SA1: ~T(x,y,u,v) P(x,y,u,v) A2: (x)(y)(u)(v)(P(x,y,u,v)E(x,y,v,u,v,y)) SA2: ~P(x,y,u,v) E(x,y,v,u,v,y)
示例-1 (续) A3: T(a,b,c,d ) (已知) SA3: T(a,b,c,d) B: E(a,b,d,c,d,b) (要证的结论) S~B: ~E(a,b,d,c,d,b) 因此: S=SA1 SA2 SA3 S~B
示例-2 • 例2:对所有的x,y,z来说,如果y是x父亲,z是y的父亲,则z是x的祖父.又知道每个人都有父亲,试问对某个人来说,谁是他的祖父? • 引入谓词: P(x,y):表示x是y的父亲 Q(x,y):表示x是y的祖父 A1: (x)(y)(z)(P(x,y)P(y,z)Q(x,z)) SA1: ~P(x,y) ~ P(y,z) Q(x,z) A2: (y)(x)P(x,y) SA2: P(f(y), y)
示例-2(续) B: (x) (y)Q(x,y) (要证的结论) S~B: ~Q(x,y) ANS(x) 其中ANS(x)是人为增加的,在推理过程中,ANS(x)变量x同Q(x,y)中的x作同样的变换,当推理结束的时候,ANS(x)中的变量x便给出了问题的解答 因此: S=SA1 SA2 S~B
谓词逻辑中的归结原理 • 置换与合一 • 归结式 • 归结反演
置换(Substitution)(1) • 例: • C1:P(x) Q(x) • C2:~P(f(x)) R(x) • 没有互补对; • 例: • C1:P(y) Q(y) {y/x} • C1:P(f(x)) Q(f(x)) {f(x)/y} • C3:R(x) Q(f(x))
置换(2) • 置换和合一是为了处理谓词逻辑中子句之间的模式匹配而引进. • 定义: 置换是形如 {t1/v1,t2/v2,… ,tn/vn} 的一个有限集.其中vi是变量,而ti是不同于vi的项(常量,变量,函数),且vi vj (i j),i,j=1,…,n • 例子: • {a/x, w/y, f(s)/z}, {g(x)/x}是置换; • {x/x}, {y/f(x)}不是置换;
置换-(3) • 定义: 不含任何元素的置换称为空置换,记为 • 定义: 设={t1/v1,t2/v2,… ,tn/vn}是一个置换,E是一个表达式。将E中出现的每一个变量符号vi(1 i n),都用项ti置换,这样得到的表达式记为E ,称E 为E的例。
置换-(4) • 例子: • E=P(x, y, z), ={a/x, f(b)/y, c/z} • E=P(a, f(b), c) • E=P(x, g(y), h(x,z)), ={a/x, f(b)/y, g(w)/z} • E=P(a, g(f(b)), h(a,g(w))) • E=P(x, y, z), ={y/x, z/y} • E=P(y, z, z). EP(z, z, z). (同时)
置换的复合(乘积)(1) • 例子: • E=P(x, y, z) • ={a/x, f(z)/y, w/z} • E=P(a, f(z), w) • ={t/z, g(b)/w} • E=P(a, f(t), g(b)) • ={a/x, f(t)/y, g(b)/z}
置换的复合(乘积)(2) • 定义: 设={t1/x1,t2/x2,… ,tn/xn}和 ={u1/y1,u2/y2,… ,um/ym}是两个置换, 也是一个置换,可定义为: 先作置换: {t1 /x1,t2 /x2,… ,tn /xn , u1/y1,u2/y2,… , um/ym} 若: yi (x1,x2,… ,xn) 则删除ui/yi 若: ti =xi, 则删除ti =xi 所得的置换称为 和的复合或乘积,记为 •
置换的复合(乘积)-(3) • 定理: • 设和是两个置换,E是表达式,则 E ()=(E) • 设,,是三个置换,则有: 置换满足结合率: ( •) • = •( • ) 置换的交换率不成立 • • = • =
置换的复合(乘积)-(4) • ={a/x}, ={b/x} • ={a/x} • ={b/x} •
合一(Unification)(1) • 定义: 设有公式集E={E1, ... ,En}和置换,使得: E1 = E2 =… =En 则称E1, ... ,En是可合一的,并且称为一合一置换. 也称为 {E1,…,En}的合一子(unifier). • 定义:如果对{E1,…,En}存在这样的合一子, 则称集合{E1,…,En}是可合一的.
合一(Unification)(2) • 例1: • E={P(a,y), P(x, f(b))}, ={a/x, f(b)/y}. • E={P(a,b), P(x, f(b))} • 合一子不一定唯一 • E={P(a,y), P(x, f(b))} • 1={a/x, f(b)/y} (唯一) • E={P(x,y), P(x,f(b))} • 1={a/x, f(b)/y} (不唯一) • 2={b/x, f(b)/y}
最一般合一(1) • 定义:设是公式集E的一个合一,如果对于任一个合一,都存在置换使得: = • , 则称是公式集E的最一般合一置换,记为mgu (most general unifier)
最一般合一(2) • 例子: • E={P(x,y), P(x,f(b))} • 1={a/x, f(b)/y} • 2={b/x, f(b)/y} • ={f(b)/y} • 1= {a/x} • 2= {b/x}
差异集合 • 设W是非空表达式集合,W的差异集合D定义如下:首先找出W的所有表达式中不是都相同的第一个符号,然后从W的每个表达式中抽出占有这个符号位置的子表达式,所有这些子表达式组成的集合就是W的差异集合D。 • 若D中无变量符号,则W是不可合一的 • 若D中只有一个元素,则W是不可合一的 • 若D中的变量符号x和t,且x出现在t中,则W是不可合一的 • 例子: • W={P(x,f(y,z),z,w), P(x,a), P(x, g(z),z,b)} • D={f(y,z), a, g(z)}
合一算法(1) (1)令k=0, W0=W(W={E1, E2}), 0= (2)如果Wk已经合一,则算法停止, k=mgu 否则,求出Wk的差异集Dk (3)如果Dk中存在元素xk ,tk,且xk不在tk中出现,则转(4);否则不可合一,停止 (4)令 k+1= k •{tk /xk} Wk+1= Wk{tk /xk}=W k+1 (5) k=k+1 然后转(2)
合一算法(2) • 换名: • {P(f(x), x), P(x, a)}; • 如果不换名:D={f(x), x}. • 换名: {P(f(y), y), P(x, a)}; • mgu: {f(a)/x, a/y}
合一算法(3) • 求W={P(a,x,f(g(y))), P(z,f(z),f(u))}的mgu. • D0={a,z}. 1= {a/z}= {a/z}. • W1= W0 1 ={P(a,x,f(g(y))), P(a,f(a),f(u))} • D1={x,f(a)}. 2= 1{f(a)/x}= {a/z, f(a)/x}. • W2= W1 2 ={P(a,f(a),f(g(y))), P(a,f(a),f(u))} • D2={g(y),u}. 3= 2{g(y)/u}={a/z,f(a)/x, g(y)/u} • W3= W2 3 ={P(a,f(a),f(g(y)))} • 3是mgu.