zoukankan      html  css  js  c++  java
  • 人工智能原理笔记------确定性推理

    推理方法的分类

    推理的逻辑基础分类

    演绎推理:演绎推理是从一般知识到具体判断的推理过程。即从问题领域的一般知识和具体问题的已知事实、判断出发,推导出这个具体问题的一个新的判断。
    归纳推理:归纳推理是从个别到一般的过程,是从足够多的具体事例中归纳出一般性知识的推理过程。
    缺省推理:缺省推理,也叫做默认推理,指推理时缺少部分前提条件、或部分前提条件没有证据证明为真,在我们假设这部分前提条件为真的情况下,推导出结论的过程。这些缺少的、或没有证据证明为真的部分前提条件,通常是当前推理相关领域的一些常识性知识、事实,并且根据经验其存在、且为真的可能性极大,因此我们有理由默认这部分前提条件存在、且为真。
    演绎推理与归纳推理的区别演绎推理是在已知领域内的一般性知识的前提下,通过演绎求解一个具体问题或者证明一个结论的正确性。它所得出的结论实际上早已蕴含在一般性知识的前提中,演绎推理只不过是将已有事实揭露出来,因此它不能增殖新知识
    归纳推理所推出的结论是没有包含在前提内容中的。这种由个别事物或现象推出一般性知识的过程,是增殖新知识的过程

    按推理的确定性分类

    确定性推理:推理的证据、知识、结论都是确定的。(本篇讨论)
    不确定推理:推理的证据、知识、结论都是不确定的。

    按推理的单调性分类

    单调推理:指系统中已知为真的判断、命题或知识随时间严格增加,呈现单调性,即推导产生的新的为真的判断、命题或知识加入到系统知识库中,不会和系统原有的知识不相容、或矛盾。基于经典命题逻辑和一阶谓词逻辑的推理是单调推理。
    非单调推理:指推理产生的结论有可能与系统知识库中原有的知识不相容、或矛盾,甚至完全否定原有的某些判断。出现这种情况时,必须使用某种正确性维持机制,解除前后推理的不相容和矛盾,系统知识库中知识的增长呈现非单调性。

    归纳推理、缺省推理、不确定性推理等都是非单调推理。

    推理的控制策略

    求解策略:指仅求一个解,还是求所有解或最优解等。
    限制策略:指对推理的深度、宽度、时间、空间等进行的限制。
    推理方向控制策略:用于确定推理的控制方向,可分为正向推理逆向推理混合推理双向推理
    冲突消解策略:指当推理过程有多条知识可用时,如何从这多条可用知识中选出一条最佳知识用于推理的策略。

    推理的方向控制

    正向推理

    从事实出发往目标方向进行的推理
    基本思想:从用户给出的问题的事实开始,扫描系统知识库,得到适用于当前事实的所有知识的集合;运用某种冲突消解策略,从得到的知识集合中选择一条知识;将这条知识与当前事实结合进行推理,推导出新的事实或判断;将推导的结论加入原有的事实集合;重复上述过程,直到到达目标、或知识库中再没有知识可用。

    逆向推理

    从假设目标开始往事实方向进行的推理
    基本思想:用户假设一个目标,找寻这个假设目标成立的证据,首先寻找假设目标的事实证据、或用户交互提供的证据;如果找不到事实证据,接着扫描系统知识库,找寻适用于这个假设的所有知识,使用某种冲突消解策略选择一条知识应用于假设目标,产生新的假设,即子目标;对每个子目标重复前面的过程,直到由假设目标产生的所有子目标都得到事实证据、或用户交互提供的证据。

    混合推理

    把正向推理和逆向推理结合起来所进行的推理称为混合推理。
    先正向后逆向:这种方法先进行正向推理,从已知事实出发推出部分结果,然后再用逆向推理对这些结果进行证实或提高它们的可信度。
    先逆向后正向:这种方法先进行逆向推理,从假设目标出发推出一些中间假设,然后再用正向推理对这些中间假设进行证实。
    双向混合:是指正向推理和逆向推理同时进行,使推理过程在中间的某一步结合起来。

    冲突消解策略

    推理冲突:在正向推理中出现一条事实能与系统知识库中的多条知识匹配,或者多个事实能与同一条知识匹配;在逆向推理中出现同一个假设目标能与系统知识库中多条知识匹配,或多个假设目标能与同一条知识匹配,叫做推理冲突。
    冲突消解:冲突消解策略就是推理出现冲突时,如何在多条冲突的知识中有效地选择知识进行推理的控制策略。

    总体原则

    按针对性排序

    优先选择针对性大的知识
    假设系统知识库中有以下两条知识:
    R1: if (a1 ^ a2 ^ …^ an) then h1
    R2: if (a1 ^ a2 ^ …^ an ^ b1 ^ b2 ^ … ^ bm) then h2
    R2包含了R1的全部条件,我们说R2比R1具有更大的针对性, R1比R2具有更大的通用性。按针对性排序,即优先选择针对性大的知识。如本例选R2

    根据问题领域的特点排序

    根据问题领域的特点,在组织系统知识库时预先给每条知识赋予优先级,出现推理冲突时,按知识的优先级选择知识。缺点是每往知识库中增加一条知识,都需要确定其优先级别参数。

    按匹配程度排序

    在不确定匹配中,只要达到一定的匹配程度就可以认为两个知识模式是可匹配的。在这种情况下出现推理冲突,优先选择匹配度较大的知识进行推理。

    按上下文限制排序

    系统知识库根据问题的状态、属性等,往往采用分块、或分组的方式进行组织。推理中根据推理的进程,即上下文线索,往往只能在某一块或某一组内选择知识。

    按数据冗余限制排序

    当应用一条知识产生上下文冗余项时,这条知识的优先级降低。产生的冗余项越多,其优先级越低。

    并行处理

    并行处理的思想是当出现推理冲突时,对全部的知识,或按某种策略选择的部分知识,并行进行推理。实现并行处理一方面要求计算机有强大的处理能力,另一方面要有一套好的并行处理算法。

    置换与合一

    置换

    在一个谓词公式中用去替换变量
    置换是形如 { t1/x1, t2/x2, …, tn/xn } 的有限集合。

    其中:
    t1,t2,…,tn是项;
    x1,x2,…,xn是互不相同的变元;
    ti/xi表示用ti替换xi。
    并且要求ti与xi不能相同,xi不能循环地出现在另一个ti中。

    比如:{a/x, c/y, f(b)/z} 是一个置换
    {g(y)/x, f(x)/y} 不是一个置换.

    因为置换的目的是用其它的变量、常量、函数替换谓词公式中的某个变量,使其不再出现在公式中,{ f(y)/x, g(x)/y } 中出现了 x,y 的循环替换,结果既不能消去x也不能消去 y,所以不是一个置换。不符合定义的要求。

    置换常用罗马字符表示:如 θ、σ、 α、 λ等

    谓词公式的置换

    设θ={t1/x1,t2/x2,…,tn/xn}是一个置换
    F是一个谓词公式
    把公式F中出现的所有 xi 换成 ti (i=1,2,…,n),得到一个新的公式G,称G为F在置换θ下的例示,记作G=Fθ
    一个谓词公式的任何例示都是该公式的逻辑结论

    置换的合成

    θ={ t1/x1, t2/x2, …, tn/xn }
    λ={ u1/y1, u2/y2, … , um/ym }
    是两个置换。则θ与λ的合成也是一个置换,记作θλ。
    对谓词公式F来说,即先做Fθ ,再做置换(Fθ)λ,通常θλ不等于λθ。

    例如:谓词公式P( x, f(y), z ),有2个置换
    θ = { g(w)/x, c/z } , λ = { a/x, b/y }。
    合成置换:
    w1=θλ= { g(w)/x, c/z, b/y }
    由于实际运算时 Pθ=P(g(w), f(y), c ),λ中对于a/x的操作就没有实际意义了,所以结果是g(w)/x。
    (Pθ)λ=P(g(w), f(b), c )
    Pw1 =P(g(w), f(b), c)

    同理,w2=λθ= { a/x, b/y, c/z }
    Pw2 =P(a, f(b), c)
    Pw1不等于Pw2

    合一

    合一是寻找置换,使得2个谓词或谓词公式一致。

    合一和可合一公式

    设有公式集F={F1, F2,…,Fn},若存在一个置换θ,可使:F1θ=F2θ=…=Fnθ。
    则称θ是F的一个合一置换
    F1,F2,…,Fn可合一的公式

    可合一公式集合的合一置换往往不止一个。
    例:公式集:F={ P( x, f(y), B), P( x, f(B), B) }
    置换 θ={ A/x, B/y } 是一个合一置换。因为:
    P( x, f(y), B ) θ = P( A, f(B), B )
    P( x, f(B), B) θ = P( A, f(B), B )
    置换 λ={ g(w)/x, B/y } 是另一个合一置换。

    最一般(通用)合一者(mgu)

    如果 F={F1, F2,…,Fn}是一个可合一公式集合,设σ是公式集F的一个合一置换。
    即F1σ=F2σ=…=Fn-1σ=Fnσ
    如果对F的任一个合一者(合一置换)θ都存在一个置换λ,使得θ=σλ,则称σ是F的最一般合一者。
    一个公式集的最一般合一者是唯一的

    合一算法

    差异集合:设有一非空有限公式集合 F={F1, F2,…,Fn} , 从F中各个公式的第一个符号同时向右比较, 直到发现第一个不尽相同的符号为止, 从F的各个公式中取出那些以第一个不一致符号开始的最大的子表达式为元素,组成一个集合D, 称为F的差异集合。

    例:F = { P( x, y, z ), P( x, f(a), h(b) ) },从两个表达式的第一个符号从左往右扫描,得到第一个差异集合 D1 = { y,f(a) },接着扫描得到第二个差异集合 D2 = { z,h(b) }。
    实际操作时,总是2个公式进行扫描,所以差异集中只有2个元素,这样便于置换、合一。

    具体算法描述

    目的:寻找mgu。设F为非空有限公式集合
    ①置 i=0, Fi=F, σi= ε, 其中ε为空集合,是不含任何元素的空置换;
    ②若 Fi 只含有一个表达式, 算法停止, σi 就是mgu;
    ③否则,找出 Fi 的差异集合 Di ;
    ④若 Di 中存在元素 ti 和 xi ,其中: ti 是项, xi 是变元, 且 xi 不在 ti 中出现,则置:
    σi+1= σi {ti / xi}
    Fi+1=Fi {ti / xi}
    i=i+1
    GOTO ②
    ⑤ 算法停止,F的mgu不存在。

    例:F ={ P( a, x, f(g(y)) ), P( z, h(z,u), f(u)) }, 求mgu

    ①i=0, F0=F, σ0= ε
    F0未合一,求D0={a, z} ,则:
    σ1= σ0{a/z} ={a/z}
    F1 =F0{a/z}={ P( a, x, f(g(y)) ), P( a, h(a,u), f(u)) }
    i=1;

    ②i=1
    F1未合一,求D1={x, h(a,u)} ,则:
    σ2= σ1{h(a,u)/x} ={a/z, h(a,u)/x}
    F2 =F1{h(a,u)/x}={ P( a, h(a,u), f(g(y)) ), P( a, h(a,u), f(u)) }
    i=2;

    ③i=2
    F2未合一,求D2={g(y), u} ,则:
    σ3= σ2{g(y)/u} = ={a/z, h(a,g(y))/x, g(y)/u}
    F3 =F2{g(u)/u}={ P( a, h(a,u), f(g(y)) ), P( a, h(a,u), f(g(y))) }
    i=3;

    ④i=3
    F3 已经合一, σ3 即为mgu。即:
    mgu={ a/z, h(a,g(y))/x, g(y)/u }
    用 ti 去置换 xi 时,要把一个公式中所有的 xi 都替换成 ti

    推理的逻辑基础

    谓词公式的解释

    命题公式的解释:命题公式的一个解释就是对该命题公式中各个命题变元的一次真值指派,有了命题公式的解释,就可据此求出该命题公式的真值。
    谓词公式的解释:由于谓词公式中可能包含由个体常量、变元或函数,因此,必须先考虑这些个体常量、变量和函数在个体域(论域)上的取值,然后才能根据它们的具体取值为谓词分别指派真值。

    设D是谓词公式P的非空个体域(论域),若对P中的个体常量、变量、函数和谓词按如下规定赋值:
    (1) 为每个个体常量和变量指派D中的一个元素;
    (2) 为每个n元函数指派一个从Dn到D的一个映射,其中Dn ={(x1, x2, …, xn)| x1, x2, …, xn∈D}
    (3) 为每个n元谓词指派一个从Dn到{F,T}的映射。
    这些指派为P在D上的一个解释

    一个谓词公式在其个体域上的解释不是唯一的。对于真值指派的不同获取到的解释也是不同的。
    比如:公式A=(∀x)(∀ y)P(x, y)在D上的解释
    个体域D={1, 2},对x与y取不同的值时P(x,y)的真值可以有{T,F}的组合,所以共有222*2共16种解释。

    谓词公式的永真性

    如果谓词公式 P对非空个体域D上的任一解释都取得真值T,则称P在D上是永真的。
    如果P在任何非空个体域上均是永真的,则称P永真。

    谓词公式的可满足性

    对于谓词公式P,如果至少存在D上的一个解释,使公式P在此解释下的真值为T,则称公式P在D上是可满足的。
    谓词公式的可满足性也称为相容性。

    谓词公式的不可满足性(永假性)

    如果谓词公式P对非空个体域D上的任一解释都取真值F,则称P在D上是永假的;
    如果P在任何非空个体域上均是永假的,则称P永假。
    谓词公式的永假性又称不可满足性或不相容。

    推理规则

    等价式和永真蕴含式都是演绎推理的主要依据,因此也称它们为推理规则。
    等价式:设P与Q是D上的两个谓词公式,若对D上的任意解释,P与Q都有相同的真值,则称P与Q在D 上是等价的。如果D是任意非空个体域,则称P与Q是等价的,记作P⇔Q。
    永真蕴含式:对谓词公式P和Q,如果P→Q永真,则称P永真蕴含Q,且称Q为P的逻辑结论,P为Q的前提,记作P ⇒ Q。

    常用的永真蕴含式
    (1) 化简式 P∧Q ⇒ P, P∧Q ⇒ Q
    (2) 附加式 P ⇒ P∨Q, Q ⇒ P∨Q
    (3) 析取三段论 ﹁ P ∧(P∨Q) ⇒ Q
    (4) 假言推理 P ∧ (P→Q) ⇒ Q
    (5) 拒取式 ¬Q ∧(P→Q) ⇒ ﹁ P
    (6) 假言三段论 (P→Q) ∧(Q→R) ⇒P→R
    (7) 二难推理 (P∨Q) ∧(P→R) ∧(Q→R) ⇒ R
    (8) 全称固化 (∀x)P(x) ⇒ P(y)
    其中,y是个体域中的任一个体,依此可消去谓词公式中的全称量词。
    (9) 存在固化 (∃x)P(x) ⇒ P(y)
    其中,y是个体域中某一个可以使P(y)为真的个体,依此可消去谓词公式中的存在量词。

    谓词公式的范式

    前束范式

    设F为一谓词公式,如果其中的所有量词均非否定地出现在公式的最前面,且它们的辖域为整个公式,则称F为前束范式。

    (Q1x1)……(Qnxn)M(x1,x2,……,xn)
    其中,Qi(i=1,2,……,n)为前缀,它是一个由全称量词或存在量词组成的量词串; M(x1,x2,……,xn)为母式,它是一个不含任何量词的谓词公式。

    Skolem范式

    如果前束范式中所有的存在量词都在全称量词之前,则称这种形式的谓词公式为Skolem范式。

    例如:(∃x) (∃z) (∀y)(P(x)∨Q(y,z)∧R(x,z)) 是Skolem范式

    自然演绎推理

    从一组已知为真的事实出发,直接运用经典逻辑中的推理规则推出结论的过程称为自然演绎推理。
    最基本的推理规则是三段论推理,它包括:

    1. 假言推理 P, P→Q ⇒ Q
    2. 拒取式 ﹁ Q, P→Q ⇒ ﹁ P
    3. 链式规则 P→Q, Q→R ⇒ P→R

    归结推理

    归结原理将永真性的证明转化为关于不可满足性的证明。

    子句及子句集

    文字:原子谓词公式及其否定统称为文字。
    子句:单个文字或任何文字的析取公式称为子句。
    空子句:不含任何文字的子句称为空子句。由于空子句不含有任何文字,也就不能被任何解释所满足,因此空子句是永假的,不可满足的。
    子句集:由子句构成的集合称为子句集。在谓词逻辑中,任何一个谓词公式都可以通过应用等价关系及推理规则化成相应的子句集。

    谓词公式的子句集表示

    任何一个谓词公式都可以化为合取范式合取的每一个部分就是一个子句,所有子句组成这个谓词公式的子句集合,我们将这个子句集合叫做谓词公式的子句集表示。
    步骤如下:

    1. 消去蕴涵符号
      使用等价公式 P→Q ⇔﹁ P∨Q 消去谓词公式中所有的蕴含连接词。
    2. 缩小否定符号的作用范围(辖域)
      反复使用以下推理规则,将每个否定符号“﹁”移到紧靠谓词的位置,即使得每个否定符号只作用于一个谓词上。
      双重否定律
      ﹁(﹁P) ⇔ P
      德摩根定律
      ﹁(P∧Q) ⇔﹁P∨﹁Q
      ﹁(P∨Q) ⇔﹁P∧﹁Q
      量词转换律
      ﹁ (∀x)P(x) ⇔ (∃x) ﹁P(x)
      ﹁ (∃x)P(x) ⇔ (∀x)¬P(x)
    3. 变量命名标准化
      在一个量词的辖域内,把谓词公式中受该量词约束的变元全部用另外一个没有出现过的任意变元代替,使不同量词约束的变元有不同的名字。
    4. 消去存在量词( Skolem化 )
      ①形如 (∀x) [(∃y)P(x,y)],存在量词在全称量词的辖域内
      存在量词y可能依赖于x,令这种依赖关系为y=f(x),由f(x)把每个x值映射到存在的那个y,f(x)叫做Skolem函数。
      上面的公式变为:(∀x) [ P(x, f(x) ]
      ② 形如 (∃y)(∀x)P(x,y),存在量词前没有全称量词约束
      在变量y的论域内,存在一些特定的取值,使得公式为真,那么我们就可以用y论域上使公式为真的一个特定取值–常量,来替代变量y,从而消去存在量词。所以这种情况的Skolem函数为一常量,用变量y论域内的,使得公式为真的特定取值的一个常量符号替代原来的变量y,这个常量符号不能与公式中的其它符号同名,也就是没有在公式中出现过。
      令y=A,Skolem化后,变为:(∀x) [ P(x, A )]
    5. 化为前束范式
      将公式中的所有约束量词移到公式最前面,形成前束公式,形式如下:
      前束式=(约束量词前缀)(母式)
      在移动时不能改变其相对顺序。
      由于第(3)步已对变元进行了标准化,每个量词都有自己的变元,这就消除了任何由变元引起冲突的可能,即:移动不改变量词辖域。
    6. 消去全称量词
      由于母式中的全部变元均受全称量词的约束,并且全称量词的次序已无关紧要,因此可以省掉全称量词。剩下的母式,默认所有变元受全称量词约束。
    7. 化为合取范式
      反复运用谓词公式的结合律和分配律,将公式化为合取范式。
      分配率
      P∧(Q∨R) <=> (P∧Q) ∨ (P∧R)
      P∨(Q∧R) <=> (P∨Q) ∧ (P∨R)
      结合率
      (P∨Q)∨R <=> P∨(Q∨R)
      (P∧Q)∧R <=> P∧(Q∧R)
    8. 将公式用子句集合表示
      取出合取范式中的每个子句;对子句变量换名,使任意两个子句中不出现相同的变量名,便于推理中的置换、合一。

    :(∀x) { P(x) → { (∀y) [ P(y) → P(f(x,y)) ] ∧ ¬(∀y)[ Q(x,y) → P(y) ] }}
    (1) 去蕴含
    (∀x) { ¬P(x) ∨ { (∀y) [¬P(y) ∨ P(f(x,y)) ] ∧ ¬(∀y)[ ¬Q(x,y) ∨ P(y) ] }}
    (2) 处理否定连接词
    (∀x) { ¬P(x) ∨ { (∀y) [¬P(y) ∨ P(f(x,y)) ] ∧ (∃y)[ Q(x,y) ∧ ¬P(y) ] }}
    (3) 变量命名标准化 ---- 令后面y=w
    (∀x) { ¬P(x) ∨ { (∀y) [¬P(y) ∨ P(f(x,y)) ] ∧ (∃w)[ Q(x,w) ∧ ¬P(w) ] }}
    (4) 消去存在量词 – 引入Skolem函数 w=g(x)
    (∀x) { ¬P(x) ∨ { (∀y) [¬P(y) ∨ P(f(x,y)) ] ∧ [ Q(x,g(x)) ∧ ¬P(g(x)) ] }}
    (5) 前束化
    (∀x) (∀y) { ¬P(x) ∨ { [¬P(y) ∨ P(f(x,y)) ] ∧ [ Q(x,g(x)) ∧ ¬P(g(x)) ] }}
    (6) 隐去全称量词
    { ¬P(x) ∨ { [¬P(y) ∨ P(f(x,y)) ] ∧ [ Q(x,g(x)) ∧ ¬P(g(x)) ] }}
    (7) 化为合取范式
    用集合律,去除括号:
    ¬P(x) ∨ { [¬P(y) ∨ P(f(x,y)) ] ∧ Q(x,g(x)) ∧ ¬P(g(x)) }
    用分配律,得合取范式:
    [ ¬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)) ]}

    子句集的不可满足性

    子句集中的子句之间是合取关系。因此,子句集中只要有一个子句为不可满足,则整个子句集就是不可满足的;
    空子句是不可满足的。因此,一个子句集中如果包含有空子句,则此子句集就一定是不可满足的。

    如果一个谓词公式是不可满足的,则其子句集也一定是不可满足的,反之亦然。

    归结式

    互补对(互补文字):若P是原子谓词公式,则称P与﹁P为互补对(文字)
    归结式(消解式):设有C1和C2两个子句,其中C1 =P∨L,C2=Q∨﹁L,消去两个子句中的互补对( L 和﹁L ),两个子句剩下部分组成一个新的子句C12 =P∨Q,称子句C12 =P∨Q为C1和C2的归结式(消解式)。

    注意:两个子句能够消解的先绝条件是两个子句中存在互补的文字对。
    两个子句中若存在多个互补对,可根据需要先任选一对进行消解。
    谓词逻辑子句中常含有变量,需要先进行置换、合一处理,然后消去两个子句中的互补对,得到谓词逻辑的归结式或消解式。
    两个谓词逻辑子句消解时,要求两个子句中不能有相同的变量名称,如果出现相同变量名称,则要将其中一个子句的变量更名,然后做置换、合一处理,再进行消解。

    鲁滨逊归结原理

    设子句C1、C2的归结式为C12,则归结式C12是C1、C2的逻辑结论。如果C1、C2同时为真, C12一定为真,表示为:C1,C2 => C12 。

    C1、C2 是子句集S中的两个子句, C12是C1、C2的归结式,用C12取代S中的C1、C2 ,得到一个新的子句集S1,如果S1不可满足,则S一定不可满足。S1的不可满足性 ⇒ S的不可满足性

    设C1和C2是子句集S中的两个子句,C12是C1和C2的归结式,若把C12加入S中得到新的子句集S2,则S与S2的不可满足性是等价的。S2的不可满足性 ⇔ S的不可满足性

    要证明子句集S的不可满足性,可以通过归结的方法,对S中能够归结的子句进行归结。用产生的归结式取代原来的子句得到新的子句集S1,或将产生的归结式加入到S中得到新的子句集S2 ,只要能证明S1或S2是不可满足的,那么S就是不可满足的。

    归结原理的基本思想:要证明子句集S的不可满足性,可通过归结的方法试图归结出空子句,一旦归结出了空子句,也就证明了S是不可满足的。

    鲁滨逊归结原理
    原命题:在给定前提P为真下,证明结论Q为真。即:P=>Q
    (1) 假设原命题成立 — 即:P为真则Q为真;
    (2) 反证法构造公式:P∧﹁Q ,则此公式一定不可满足。
    (3) 证明P∧﹁Q不可满足
    通过证明P∧﹁Q不可满足,而证明原命题成立。---- 反证(反演)
    (4) 将P∧﹁Q化为子句集S表示;

    归结反演证明

    命题:在给定前提P为真下,证明结论Q为真。即:P=>Q

    1. 构造公式: P∧﹁Q
    2. 将公式P∧﹁Q化为子句集S表示;
    3. 反复对子句集S进行归结处理,并把新产生的归结式加入到S中:
      如果出现空子句,则停止归结,原命题得证,即证明了P为真时,Q为真。 否则,没有新的归结,原命题不成立。

    产生式推理系统

    产生式系统由规则库、工作数据库和推理机三个部分构成。
    规则库:规则库用来存放系统的所有产生式规则,用来表示问题领域的一般知识(背景知识)。规则库是产生式系统问题求解的基础
    工作数据库:用来存放事实知识、中间结论、最终结果,工作数据库中的内容在系统工作时是动态变化的。

    1. 事实知识:即给定的推理前提条件。可以在推理前全部输入;或在推理过程中交互输入;也可以从其它系统导入。
    2. 中间结论:正向推理中是已经证明为真的证据;逆向推理中是匹配产生的中间目标。
    3. 最终结果:推理的最终目标或结论。

    推理机:完成推理控制策略。负责整个产生式系统的运行,决定问题求解过程的推理线路。

    控制系统主要任务

    选择匹配

    按一定策略从规则库种选择规则与综合数据库中的已知事实进行匹配。
    正向推理匹配:匹配是指把所选规则的前提与综合数据库中的已知事实进行比较,若事实库中的事实与所选规则前提一致,则称匹配成功,该规则为可用;否则,称匹配失败,该规则不可用。
    逆向推理匹配:匹配是指选择中间目标,按先事实、后规则次序匹配;
    规则匹配指用所选中间目标与规则后件进行比较;若中间目标与规则后件一致,则称匹配成功,该规则为可用;否则,称匹配失败,该规则不可用。

    冲突消解

    对匹配成功的规则,按照某种策略从中选出一条规则执行。

    执行操作

    对所执行的规则,若其后件为一个或多个结论,则把这些结论加入综合数据库;若其后件为一个或多个操作时,执行这些操作。

    终止推理

    检查综合数据库中是否包含有目标,若有,则停止推理。

    路径解释

    在问题求解过程中,记住应用过的规则序列,以便最终能够给出问题的解的路径。

    正向推理

    从已知事实出发,正向匹配规则,向着结论前进的一种推理方法。

    正向推理过程

    1. 初始化综合数据库,即把欲解决问题的已知事实、目标输入综合数据库中;
    2. 检查规则库中是否有未使用过的规则,若没有,失败,退出;
    3. 检查规则库的未使用规则中是否有其前提可与综合数据库中已知事实相匹配的规则,若有,形成当前可用(候选)规则集;否则转⑥ ;
    4. 按照冲突消解策略,从当前可用(候选)规则集中选择一个规则执行,并对该规则作上标记。把执行该规则后所得到的结论作为新的证据加入综合数据库;如果该规则的结论是一些操作,则执行这些操作;
    5. 检查综合数据库中是否包含了该问题的解(结论),若已包含,说明解已求出,成功,退出;否则,转② ;
    6. 当规则库中还有未使用规则,但均不能与综合数据库中的已有事实相匹配时,要求用户进一步提供关于该问题的已知事实,若能提供,则转② ;否则,失败,退出;

    从第③步到第⑤步的循环过程实际上就是一个搜索过程。

    逆向推理

    从目标出发,逆向匹配规则,向着事实前进的一种推理方法。‘自顶向下’推理。

    逆向推理过程

    1. 初始化综合数据库:即把欲解决问题的已知事实输入综合数据库中,并标记;假设目标输入数据库,并标记;此处标记是为了区分‘事实证据’、‘假设目标’。
    2. 从工作库中取出一个尚未匹配的‘假设目标’,到工作库中检索‘事实证据’匹配,若找到事实匹配,标记匹配。否则,找不到事实证据,转④ 。
    3. 检查综合数据库中是否所有‘假设目标’都已标记匹配,若全部匹配,则总目标目标成立,成功,退出;否则,转② ;
    4. 检查规则库中是否有未使用过的规则,若没有,转⑦ ;
    5. 检索规则库中未使用规则中是否有其后件可与当前‘假设目标’相匹配的规则,若有,形成当前可用(候选)规则集;否则转⑦ ;
    6. 按照冲突消解策略,从当前可用(候选)规则集中选择一个规则执行,并对该规则作上标记。把此规则的前件作为新的子目标加入综合数据库,转② ;
    7. 当工作数据库中还有未匹配的子目标,但既不能找到事实证据,又没有规则匹配,要求用户进一步补充提供关于该假设目标的已知事实,若能提供,则转② ;否则,失败,退出;

    子目标匹配次序:先事实、后规则。

    混合推理

    混合推理是把正向推理和反向推理结合起来使用的一种推理方式,它需要把问题的初始状态和目标状态合并到一起构成综合数据库。方式有:

    1. 先正向推理,再逆向推理
    2. 先逆向推理,再正向推理
    3. 正向和逆向推理同时进行,在中间某处完全匹配—双向推理。
  • 相关阅读:
    第 9 章
    第 8 章
    第 7 章
    第 6 章
    第 5 章
    第 4 章
    跳舞链解数独
    minic 类型声明与变量定义句型处理
    minic 动作句型处理
    minic 符号表
  • 原文地址:https://www.cnblogs.com/yanzs/p/13788264.html
Copyright © 2011-2022 走看看