如果采用上一章讨论过的搜索方法那么很难甚至无法使问.ppt
1,讨论了一些简单搜索的基本原理,包括某些推理规则以及置换合一等概念。但对于许多比较复杂的系统和问题,如果采用上一章讨论过的搜索方法,那么很难甚至无法使问题获得解决的。需要应用一些更先进的推理技术和系统求解这种比较复杂的问题。本章讨论消解原理,规则演绎系统、产生式系统、不确定性推理和非单调推理等,而对于那些发展特别快的高级求解技术,如专家系统、机器学习和规划系统等,则将在后续章节讨论它们。,2,内容提要,3.4 消解原理 3.5 规则演绎系统 3.6 产生式系统 3.7 系统组织技术3.8 不确定性推理 3.9 非单调推理,3,3.4 消解原理,化为子句集消解推理规则含有变量的消解式消解反演求解过程,4,第二章中讨论过谓词公式,某些推理规则以及置换合一等概念。在这个基础上,能够进一步研究消解原理(resolution principle)。有些专家把它叫做归结原理。消解是一种可用于一定的子句公式的重要推理规则。一个子句定义为由文字的析取组成的公式(一个原子公式和原子公式的否定都叫文字)。当消解可使用时,消解过程被应用于母体子句对,以便产生一个导出子句。例如,如果存在某个公理E1E2和另一公理E2E3,那么E1E3在逻辑上成立。这就是消解,而称E1E3为E1E2和E2E3的消解式(resolvent)。,5,3.4.1 子句集的求取,在说明消解过程之前,我们首先说明任一谓词演算公式可以化成一个子句集。其变换过程由下列九个步骤组成:(1)消去蕴涵符号 只应用和符号,以AB替换A=B。(2)减少否定符号的辖域 每个否定符号最多只用到一个谓词符号上,并反复应用狄摩根定律。例如:以AB代替(AB)以AB代替(AB)以(x)A代替(x)A以(x)A代替(x)A以A代替(A),6,(3)对变量标准化在任一量词辖域内,受该量词约束的变量为一哑元(虚构变量),它可以在该辖域内处处统一地被另一个没有出现过的任意变量所代替,而不改变公式的真值。合适公式中变量的标准化,意味着对哑元改名以保证每个量词有其自己唯一的哑元。,7,(4)消去存在量词Skolem函数:在公式(y)(x)P(x,y)中,存在量词是在全称量词的辖域内,我们允许所存在的x可能依赖于y值。令这种依赖关系明显地由函数g(y)所定义,它把每个y值映射到存在的那个x。这种函数叫做Skolem函数。如果用Skolem函数代替存在的x,我们就可以消去全部存在量词,并写成:从一个公式消去一个存在量词的一般规则是以一个Skolem函数代替每个出现的存在量词的量化变量,而这个Skolem函数的变量就是由那些全称量词所约束的全称量词量化变量,这些全称量词的辖域包括要被消去的存在量词的辖域在内。Skolem函数所使用的函数符号必须是新的,即不允许是公式中已经出现过的函数符号。,8,如果要消去的存在量词不在任何一个全称量词的辖域内,那么我们就用不含变量的Skolem函数即常量。例如,(x)P(x)化为P(A),其中常量符号A用来表示我们知道的存在实体。A必须是个新的常量符号,它未曾在公式中其它地方使用过。例如:(z)(y)(x)P(x,y,z)被(y)P(g(y),y,A)代替,其中g(y)为一Skolem函数。,9,(5)化为前束形 到这一步,已不留下任何存在量词,而且每个全称量词都有自己的变量。把所有全称量词移到公式的左边,并使每个量词的辖域包括这个量词后面公式的整个部分。所得公式称为前束形。前束形公式由前缀和母式组成,前缀由全称量词串组成,母式由没有量词的公式组成,即前束形=(前缀)(母式)全称量词串 无量词公式,10,(6)把母式化为合取范式任何母式都可写成由一些谓词公式和(或)谓词公式的否定的析取的有限集组成的合取。这种母式叫做合取范式。我们可以反复应用分配律。把任一母式化成合取范式。例如,我们把 ABC化为ABAC,11,(7)消去全称量词 到了这一步,所有余下的量词均被全称量词量化了。同时,全称量词的次序也不重要了。因此,我们可以消去前缀,即消去明显出现的全称量词。(8)消去连词符号 用(AB),(AC)代替(AB)(AC),以消去明显的符号。反复代替的结果,最后得到一个有限集,其中每个公式是文字的析取。任一个只由文字的析取构成的合适公式叫做一个子句。,12,(9)更换变量名称可以更换变量符号的名称,使一个变量符号不出现在一个以上的子句中。例如,对于子集P(x)P(y)Pf(x,y),P(x)Qx,g(x),P(x)Pg(x),在更改变量名后,可以得到子句集:P(x1)P(y)Pf(x1,y),P(x2)Qx2,g(x2),P(x3)Pg(x3),13,3.4.2 消解推理规则,令L1为任一原子公式,L2为另一原子公式;L1和L2具有相同的谓词符号,但一般具有不同的变量。已知两子句L1和L2如果L1和L2具有最一般合一者,那么通过消解可以从这两个父辈子句推导出一个新子句()。这个新子句叫做消解式。它是由取这两个子句的析取,然后消去互补对而得到的。下面举出几个从父辈子句求消解式的例子:,14,15,16,上各例可见,消解可以合并几个运算为一简单的推理规则,17,4.4.3 含有变量的消解式,为了对含有变量的子句使用消解规则,我们必须找到一个置换,作用于父辈子句使其含有互补文字。令父辈子句由Li和Mi给出,而且假设这两个子句中的变量已经分离标准化。设li是Li的一个子集,mi是Mi的一个子集,使得集li和mi的并集存在一个最一般的合一者。消解两个子句Li和Mi,得到的新子句:Li-liMi-mi就是这两个子句的消解式。,18,消解两个子句时,可能有一个以上的消解式,因为有多种选择li和mi的方法。不过,在任何情况下,它们最多具有有限个消解式。作为例子,我们考虑两个子句:Px,f(A)Px,f(y)Q(y)和 Pz,f(A)Q(z)如果取 li=Px,f(A),mi=Pz,f(A)那么得到消解式:Pz,f(y)Q(z)Q(y)如果取 li=Q(y),mi=Q(z)那么得到消解式:Px,f(A)Px,f(y)Py,f(A)进一步消解得消解式为:Py,f(y),19,可见这两个子句消解一共可得4个不同的消解式,其中3个是消解P得到的,而另一个是由消解Q得到的。下面举几个对含有变量的子句使用消解的例子。,20,例3:,本节中所例举的对基子句和对含有变量的子句进行消解的例子,其父辈子句和消解式列表示于表4.1。这些例子表示出消解推理的某些常用规则。,21,表 4.1 消解推理常用规则,22,3.4.4 消解反演求解过程,1 基本思想把要解决的问题作为一个要证明的命题,其目标公式被否定并化成子句形,然后添加到命题公式集中去,把消解反演系统应用于联合集,并推导出一个空子句(NIL),产生一个矛盾,这说明目标公式的否定式不成立,即有目标公式成立,定理得证,问题得到解决。这与数学中反证法的思想十分相似。,23,2 消解反演(1)反演求解的步骤 给出一个公式集S和自标公式L,通过反证或反演来求证目标公式L,其证明步骤如下:(a)否定L,得L;(b)把L添加到S中去;(c)把新产生的集合L,S化成子句集;(d)应用消解原理,力图推导出一个表示矛盾的空子句NIL。,24,(2)反演求解的正确性设公式L在逻辑上遵循公式集S,那么按照定义满足S的每个解释也满足L。决不会有满足S的解释能够满足L的,所以不存在能够满足并集SL的解释。如果一个公式集不能被任一解释所满足,那么这个公式是不可满足的。因此,如果L在逻辑上遵循S,那么SL是不可满足的。可以证明,如果消解反演反复应用到不可满足的子句集,那么最终将要产生空子句NIL。因此,如果L在逻辑上遵循S,那么由并集SL消解得到的子句,最后将产生空子句;反之,可以证明,如果从SL的子句消解得到空子句,那么L在逻辑上遵循S。,25,(3)反演求解的举例 下面举个例子来说明消解反演过程:前提:每个储蓄钱的人都获得利息。结论:如果没有利息,那么就没有人去储蓄钱。证明:令S(x,y)表示x储蓄y M(x)表示x是钱 I(x)表示x是利息 E(x,y)表示x获得y于是上述命题写成下列形式:结论:,26,用化为子句集的九步法,可把前提和结论化为下列的子句集:S=S(x,y)M(y)I(f(x),S(x,y)M(y)E(x,f(x)其中,y=f(x)为Skolem函数。而,L I(z),S(a,b),M(b),27,以下按上述的四个步骤来对问题进行反演求解:否定L,即有 L I(z),S(a,b),M(b)把 L添加到S中去,即 S=L,S=S(x,y)M(y)I(f(x),S(x,y)M(y)E(x,f(x),I(z),S(a,b),M(b)把新产生的集合S化成子句集,即 S=S(x,y)M(y)I(f(x),S(x,y)M(y)E(x,f(x),I(z),S(a,b),M(b),28,应用消解原理,力图推导出一个表示矛盾的空子句NIL。该消解反演可以表示为一棵反演树,如下图4.1所示,其根节点为NIL。因此,储蓄问题的结论获得证明。,图 4.1 储蓄问题反演树,29,(4)反演求解过程 从反演求解的举例中可以看出,用反演树求取对某个问题的答案,其过程如下:(a)把由目标公式的否定产生的每个子句添加到目标公式否定之否定的子句中去。(b)按照反演树,执行和以前相同的消解,直至在根部得到某个子句止。(c)用根部的子句作为一个回答语句。,30,答案求取涉及到把一棵根部有NIL的反演树变换为在根部带有可用作答案的某个语句的一颗证明树。由于变换关系涉及到把由目标公式的否定产生的每个子句变换为一个重言式,所以被变换的证明树就是一棵消解的证明树,其在根部的语句在逻辑上遵循公理加上重言式,因而也单独地遵循公理。因此被变换的证明树本身就证明了求取办法是正确的。下面讨论一个简单的问题,作为例子:“如果无论约翰(John)到哪里去,菲多(Fido)也就去那里,那么如果约翰在学校里,菲多在哪里呢?”,31,很清楚,这个问题说明了两个事实,然后提出一个问题,而问题的答案大概可从这两个事实推导出。这两个事实可以解释为下列公式集S:(x)AT(JOHN,X)=AT(FIDO,X)和T(JOHN,SCHOOL)如果我们首先证明公式(x)AT(FIDO,X)在逻辑上遵循S,然后寻求一个存在x的例,那么就能解决“菲多在哪里”的问题。关键想法是把问题化为一个包含某个存在量词的目标公式,使得此存在量词量化变量表示对该问题的一个解答。如果问题可以从给出的事实得到答案,那么按这种方法建立的目标函数在逻辑上遵循S。在得到一个证明之后,我们就试图求取存在量词量化变量的一个例,作为一个回答。对于上述例题能够容易地证明(x)AT(FIDO,X)遵循S。我们也可以说明,用一种比较简单的方法来求取合适的答案。,32,消解反演可用一般方式得到,其办法是首先对被证明的公式加以否定,再把这个否定式附加到集S中去,化这个扩充集的所有成员为子句形,然后用消解证明这个子句集是不可满足的。图4.2表示出上例的反演树。从S中的公式得到的子句叫做公理。注意目标公式(x)AT(FIDO,x)的否定产生(x)AT(FIDO,x)其子句形式为:AT(FIDO,x),33,对本例应用消解反演求解过程,我们有:(1)目标公式否定的子句形式为:AT(FIDO,x)把它添加至目标公式的否定之否定的子句中去,得重言式 AT(FIDO,x)AT(FIDO,x)(2)用图4.3的反演树进行消解,并在根部得到子句:AT(FIDO,SCHOOL)(3)从根部求得答案AT(FIDO,SCHOOL),用此子句作为回答语句。因此,子句 AT(FIDO,SCHOOL)就是这个问题的合适答案,见图4.3。,34,图 4.2 菲多在哪里例题的反演树,图 4.3 从消解求取答案例题的反演树,35,3.5 规则演绎系统,规则演绎系统规则正向演绎系统 规则逆向演绎系统规则双向演绎系统,36,对于许多公式来说,子句形是一种低效率的表达式,因为一些重要信息可能在求取子句形过程中丢失。本章将研究采用易于叙述的if-then(如果-那么)规则来求解问题基于规则的问题求解系统运用下述规则:,37,在所有基于规则系统中,每个if可能与某断言(assertion)集中的一个或多个断言匹配。有时把该断言集称为工作内存。在许多基于规则系统中,then部分用于规定放入工作内存的新断言。这种基于规则的系统叫做规则演绎系统(rule based deduction system)。在这种系统中,通常称每个if部分为前项(antecedent),称每个then部分为后项(consequent)。有时,then部分用于规定动作;这时,称这种基于规则的系统为反应式系统(reaction system)或产生式系统(production system)。产生式系统将在后续篇章中予以介绍,本节讨论规则演绎系统。,38,3.5.1 规则正向演绎系统,基于规则的演绎系统和产生式系统,均有两种推理方式:正向推理(forward chanining)和逆向推理(backward chaining)。正向推理:从if部分向then部分推理的过程,它是从事实或状况向目标或动作进行操作的。逆向推理:从then部分向if部分推理的过程,它是从目标或动作向事实或状况进行操作的。,39,1.事实表达式的与或形变换,在基于规则的正向演绎系统中,我们把事实表示为非蕴涵形式的与或形,作为系统的总数据库。我们不想把这些事实化为子句形,而是把它们表示为谓词演算公式,并把这些公式变换为叫做与或形的非蕴涵形式。要把一个公式化为与或形,可采用下列步骤:(1)利用(W1W2)和(W1W2)的等价关系,消去符号(如果存在该符号的话)。实际上,在事实中间很少有符号出现,因为可把蕴涵式表示为规则。(2)用狄摩根(De Morgan)定律把否定符号移进括号内,直到每个否定符号的辖域最多只含有一个谓词为止。,40,(3)对所得到的表达式进行Skolem化和前束化。(4)对全称量词辖域内的变量进行改名和变量标准化,而存在量词量化变量用Skolem函数代替。(5)删去全称量词,而任何余下的变量都被认为具有全称量化作用。,41,举例如下:例如,我们有事实表达式(u)(v)Q(v,u)(R(v)P(v)S(u,v)把它化为Q(v,A)R(v)P(v)S(A,v)对变量更名标准化,使得同一变量不出现在事实表达式的不同主要合取式中。更名后得表达式:Q(w,A)R(v)P(v)S(A,v)必须注意到Q(v,A)中的变量v可用新变量w代替,而合取式R(v)P(v)中的变量v却不可更名,因为后者也出现在析取式S(A,v)中。与或形表达式是由符号和连接的一些文字的子表达式组成的。呈与或形的表达式并不是子句形,而是接近于原始表达式形式,特别是它的子表达式不是复合产生的。,42,2.事实表达式的与或图表示与或形的事实表达式可用与或图来表示。如图4.4的与或树表示出上述例子的与或形事实表达。图4.4中,每个节点表示该事实表达式的一个子表达式。某个事实表达式(E1Ek)的析取关系子表达式E1,Ek是用后继节点表示的,并由一个k线连接符把它们连接到父辈节点上。某个事实表达式(E1En)的每个合取子表达式E1,En是由单一的后继节点表示的,并由一个单线连接符接到父辈接点。在事实表达式中,我们用k线连接符(一个合取记号)来分解析取式,很可能会令人感到意外。在后面的讨论中,我们将会了解到采用这种约定的原因。,43,图 4.4 一个事实表达式的与或树表示,44,表示某个事实表达式的与或图的叶节点均由表达式中的文字来标记。图中标记有整个事实表达式的节点,称为根节点,它在图中没有祖先。公式的与或图表示有个有趣的性质,即由变换该公式得到的子句集可作为此与或图的解图的集合(终止于叶节点)读出;也就是说,所得到的每个子句是作为解图的各个叶节点上文字的析取。这样,由表达式Q(w,A)R(v)P(v)S(A,v)得到的子句为Q(w,A),S(A,v)R(v),S(A,v)P(v),45,上述每个子句都是图4.4解图之一的叶节点上文字的析取。所以,我们可把与或图看做是对子句集的简洁表示。不过,实际上表达式的与或图表示此子句集表示的通用性稍差,因为没有复合出共同的子表达式会妨碍在子句形中可能做到的某些变量的更名。例如,上面的最后一个子句,其变量v可全部改为u,但无法在与或图中加以表示,因而失去了通用性,并且可能带来一些困难。我们一般把事实表达式的与或图表示倒过来画,即把根节点画在最下面,而把其后继节点往上画。在本章的第二节,我们将要讨论到目标公式的与或图表示,它是按通常方式画出的,即目标在上面。,46,3.与或图的F规则变换这些规则是建立在某个问题辖域中普通陈述性知识的蕴涵公式基础上的。我们把允许用作规则的公式类型限制为下列形式:L W 式中:L是单文字;W为与或形的唯一公式。我们也假设出现在蕴涵式中的任何变量都有全称量化作用于整个蕴涵式。这些事实和规则中的一些变量被分离标准化,使得没有一个变量出现在一个以上的规则中,而且使规则变量不同于事实变量。单文字前项的任何蕴涵式,不管其量化情况如何都可以化为某种量化辖域为整个蕴涵式的形式。这个变换过程首先把这些变量的量词局部地调换到前项,然后再把全部存在量词Skolem化。,47,举例说明如下:公式(x)(y)(z)P(x,y,z)(u)Q(x,u可以通过下列步骤加以变换:(1)暂时消去蕴涵符号(x)(y)(z)P(x,y,z)(u)Q(x,u)(2)把否定符号移进第一个析 取式内,调换变量的量词(x)(y)(z)P(x,y,z)(u)Q(x,u),48,(3)进行Skolem化(x)(y)P(x,y,f(x,y)(u)Q(x,u)(4)把所有全称量词移至前面然后消去 P(x,y,f(x,y)Q(x,u)(5)恢复蕴涵式 P(x,y,f(x,y)Q(x,u),49,以下用一个自由变量的命题演算情况来说明如何把这类规则应用于与或图。把形式为L W的规则应用到任一个具有叶节点n并由文字L标记的与或图上,可以得到一个新的与或图。在新的图上,节点n由一个单线连接符接到后继节点(也由L标记),它是表示为W的一个与或图结构的根节点。作为例子,考虑把规则 S(XY)Z应用到图4.5所示的与或图中标有S的叶节点上。所得到的新与或图结构表示于图4.6,图中标记S的两个节点由一条叫做匹配弧的弧线连接起来。,50,图 4.5 不含变量的与或图,4.6 应用一条 规则得到的与或图,51,在应用某条规则之前,一个与或图(如图4.5)表示一个具体的事实表达式。其中,在叶节点结束的一组解图表示该事实表达式的子句形。我们希望在应用规则之后得到的图,既能表示原始事实,又能表示从原始事实和该规则推出的事实表达式。假设我们有一条规则LW,根据此规则及事实表达式F(L),可以推出表达式F(W)。F(W)是用W代替F中的所有L而得到的。当用规则L W来变换以上述方式描述的F(L)的与或图表示时,我们就产生一个含有F(W)表示的新图;也就是说,它是以叶节点终止的解图集以F(W)子句形式代表该子句集。这个子句集包括在F(L)的子句形和LW的子句形间对L进行所有可能的消解而得到的整集。,52,再讨论图4.6的情况。规则S(XY)Z的子句形是:SXZ,SYZ(PQ)RS(TU)的子句形解图集为:PQS,RS,PQTU,RTU应用两个规则子句中任一个对上述子句形中的S进行消解:于是我们得到4个子句对S进行消解的消解式的完备集为:XZPQ,YZPQ,RXZ,RYZ,53,这些消解式全部包含在图4.4的解图所表示的子句之中。,54,从上述讨论我们可以得出结论:应用一条规则到与或图的过程,以极其经济的方式达到了用其它方法要进行多次消解才能达到的目的。我们要使应用一条规则得到的与或图继续表示事实表达式和推得的表达式,这可利用匹配弧两侧有相同标记的节点来实现。对一个节点应用一条规则之后,此节点就不再是该图的叶节点。不过,它仍然由单一文字标记而且可以继续具有一些应用于它的规则。我们把图中标有单文字的任一节点都称为文字节点,由一个与或图表示的子句集就是对应于该图中以文字节点终止的解图集。,55,4.作为终止条件的目标公式应用F规则的目的在于从某个事实公式和某个规则集出发来证明某个目标公式。在正向推理系统中,这种目标表达式只限于可证明的表达式,尤其是可证明的文字析取形的目标公式表达式。我们用文字集表示此目标公式,并设该集各元都为析取关系。(在以后各节所要讨论的逆向系统和双向系统,都不对目标表达式作此限制。)目标文字和规则可用来对与或图添加后继节点,当一个目标文字与该图中文字节点n上的一个文字相匹配时,我们就对该图添加这个节点n的新后裔,并标记为匹配的目标文字。这个后裔叫做目标节点,目标节点都用匹配弧分别接到它们的父辈节点上。当产生式系统产生一个与或图,并包含有终止在目标节点上的一个解图时,系统便成功地结束。此时,该系统实际上已推出一个等价于目标子句的一部分的子句。,56,图4.7给出一个满足以目标公式(CG)为基础的终止条件的与或图,可把它解释为用一个“以事实来推理”的策略对目标表达式(CG)的一个证明。最初的事实表达式为(AB)。由于不知道A或B哪个为真,因此我们可以试着首先假定A为真,然后再假定B为真,分别地进行证明。如果两个证明都成功,那么我们就得到根据析取式(AB)的一个证明。而A或B到底哪个为真都无关紧要。图4.7中标有(AB)的节点,其两个后裔由一个2线连接符来连接。因而这两个后裔都必须出现在最后解图中,如果对节点n的一个解图通过k线连接符包含n的任一后裔,那么此解图必须包含通过这个k线连接符的所有k个后裔。,57,图 4.7 满足中终止条件的与或图,58,图4.7的例子证明过程如下:事实:AB 规则:ACD,BEG 目标:CG 把规则化为子句形,得子句集:AC,AD BE,BG 目标的否定为:(CG)其子句形为:C,G 用消解反演来证明目标公式,如图4.8所示。,59,图 4.8 用消解反演求证目标公式的图解,60,从图4.8我们推得一个空子句NIL,从而使目标公式(CG)得到证明。我们得到的结论是:当正向演绎系统产生一个含有以目标节点作为终止的解图时,此系统就成功地终止。对于表达式含有变量的正向产生式系统,我们考虑把一条(L W)形式的规则应用到与或图的过程,其中L是文字,W是与或形的一个公式,而且所有表达式都可以包含变量。如果这个与或图含有的某个文字节点L同L合一,那么这条规则就是可应用的。设其最一般合一者为u,那么这条规则的应用能够扩展这个图。为此,建立一个有向的匹配弧,从与或图中标有L的节点出发到达一个新的标有L的后继节点。这个后继节点是Wu的与或图表示的根节点,我们用mgu,或者简写为u来标记这段匹配弧。,61,3.5.2 规则逆向演绎系统,基于规则的逆向演绎系统,其操作过程与正向演绎系统相反,即为从目标到事实的操作过程,从then到if的推理过程。1.目标表达式的与或形式逆向演绎系统能够处理任意形式的目标表达式。首先,采用与变换事实表达式同样的过程,把目标公式化成与或形,即消去蕴涵符号,把否定符号移进括号内,对全称量词Skolem化并删去存在量词。留在目标表达式与或形中的变量假定都已存在量词量化。,62,举例如下:目标表达式(y)(x)P(x)(x,y)P(x)S(y)被化成与或形:P(f(y)Q(f(y),y)P(f(y)S(y)式中,f(y)为一Skolem函数。对目标的主要析取式中的变量分离标准化可得:P(f(z)Q(f(y),y)P(f(y)S(y)应注意不能对析取的子表达式内的变量y改名而使每个析取式具有不同的变量。,63,与或形的目标公式也可以表示为与或图。不过,与事实表达式的与或图不同的是,对于目标表达式,与或图中的k线连接符用来分开合取关系的子表达式。上例所用的目标公式的与或图如图4.9所示。在目标公式的与或图中,我们把根节点的任一后裔叫做子目标节点,而标在这些后裔节点中的表达式叫做子目标。,64,图 4.9 一个目标公式的与或图表示,这个目标公式的子句形表示中的子句集可从终止在叶节点上的解图集读出:P(f(z),Q(f(y),y)R(f(y),Q(f(y),y)S(y)可见目标子句是文字的合取,而这些子句的析取是目标公式的子句形。,65,2.与或图的B规则变换现在让我们应用B规则即逆向推理规则来变换逆向演绎系统的与或图结构,这个B规则是建立在确定的蕴涵式基础上的,正如正向系统的F规则一样。不过,我们现在把这些B规则限制为:W L 形式的表达式。其中,W为任一与或形公式,L为文字,而且蕴涵式中任何变量的量词辖域为整个蕴涵式。其次,把B规则限制为这种形式的蕴涵式还可以简化匹配,使之不会引起重大的实际困难。此外,可以把像W(L1L2)这样的蕴涵式化为两个规则W L1和W L2。,66,3.作为终止条件的事实节点的一致解图逆向系统中的事实表达式均限制为文字合取形,它可以表示为一个文字集。当一个事实文字和标在该图文字节点上的文字相匹配时,就可把相应的后裔事实节点添加到该与或图中去。这个事实节点通过标有mgu的匹配弧与匹配的子目标文字节点连接起来。同一个事实文字可以多次重复使用(每次用不同变量),以便建立多重事实节点。逆向系统成功的终止条件是与或图包含有某个终止在事实节点上的一致解图。下面我们讨论一个简单的例子,看看基于规则的逆向演绎系统是怎样工作的。,67,举例如下:这个例子的事实、应用规则和问题分别表示于下:事实:F1:DOG(FIDO);狗的名字叫 Fido F2:BARKS(FIDO);Fido是不叫的 F3:WAGS TAIL(FIDO);Fido摇尾巴F4:MEOWS(MYRTLE);猫咪的名字叫Myrtle,68,规则:R1:WAGS TAIL(x1)DOG(x1)FRIENDLY(x1);摇尾巴的狗是温顺的狗 R2:FRIENDLY(x2)BARKS(x2)AFRAID(y2,x2);温顺而又不叫的东西是不值得害怕的 R3:DOG(x3)ANIMAL(x3);狗为动物 R4:CAT(x4)ANIMAL(x4);猫为动物 R5:MEOWS(x5)CAT(x5);猫咪是猫,69,问题:是否存在这样的一只猫和一条狗,使得这只猫不怕这条狗?用目标表达式表示此问题为:(x)(y)CAT(x)DOG(y)AFRAID(x,y),70,图 4.10 逆向系统的一个一致解图,71,图4.10表示出这个问题的一致解图。图中,用双线框表示事实节点,用规则编号R1、R2和R5等来标记所应用的规则。此解图中有八条匹配弧,每条匹配弧上都有一个置换。这些置换为x/x5,MYRTLE/x,FIDO/y,x/y2,y/x2,FIDO/y(FIDO/y重复使用四次)。由图4.10可见,终止在事实节点前的置换为MYRTLE/x和FIDO/y。把它应用到目标表达式,我们就得到该问题的回答语句如下:CAT(MYRTLE)DOG(FIDO)AFRAID(MYRTLE,FIDO),72,3.5.3 规则双向演绎系统,在上两节中我们所讨论的基于规则的正向演绎系统和逆向演绎系统都具有局限性。正向演绎系统能够处理任意形式的if表达式,但被限制在then表达式为由文字析取组成的一些表达式。逆向演绎系统能够处理任意形式的then表达式,但被限制在if表达式为文字合取组成的一些表达式。我们希望能够构成一个组合的系统,使它具有正向和逆向两系统的优点,以求克服各自的缺点(局限性)。这个系统就是本节要研究的双向(正向和逆向)组合演绎系统。,73,正向和逆向组合系统是建立在两个系统相结合的基础上的。此组合系统的总数据库由表示目标和表示事实的两个与或图结构组成。这些与或图最初用来表示给出的事实和目标的某些表达式集合,现在这些表达式的形式不受约束。这些与或图结构分别用正向系统的F规则和逆向系统的B规则来修正。设计者必须决定哪些规则用来处理事实图以及哪些规则用来处理目标图。尽管我们的新系统在修正由两部分构成的数据库时实际上只沿一个方向进行,但是我们仍然把这些规则分别称为F规则和B规则。我们继续限制F规则为单文字前项和B规则为单文字后项。,74,组合演绎系统的主要复杂之处在于其终止条件,终止涉及两个图结构之间的适当交接处。这些结构可由标有合一文字的节点上的匹配棱线来连接。我们是用对应的mgu来标记匹配棱线的。对于初始图,事实图和目标图间的匹配棱线必须在叶节点之间。当用F规则和B规则对图进行扩展之后,匹配就可以出现在任何文字节点上。,75,在完成两个图间的所有可能匹配之后,目标图中根节点上的表达式是否已经根据事实图中根节点上的表达式和规则得到证明的问题仍然需要判定。只有当我们求得这样的一个证明时,证明过程才算成功地终止。当然,当我们能够断定在给定方法限度内找不到证明时过程则以失败告终。一个简单的终止条件是某个判定与或图根节点是否为可解过程的直接归纳。这个终止条件是建立在事实节点和目标节点间一种叫做CANCEL的对称关系的基础上的。CANCEL的递归定义如下:,76,定义:如果(n,m)中有一个为事实节点,另一个为目标节点,而且如果n和m都由可合一的文字所标记,或者n有个外向k线连接符接至一个后继节点集Si使得对此集的每个元CANCEL(Si,m)都成立,那么就称这两节点n和m互相CANCEL(即互相抵消)。当事实图的根节点和目标图的根节点互相CANCEL时,我们得到一个候补解。在事实和目标图内证明该目标根节点和事实根节点互相CANCEL的图结构叫做候补CANCEL图。如果候补CANCEL图中所有匹配的mgu都是一致的,那么这个候补解就是一个实际解。,77,下面我们举例说明图4.11中的初始事实图和初始目标图间的匹配。图中用粗线条弧线表示出一个一致的候补CANCEL图。每个事实目标节点匹配的mgu都标示在匹配棱线的旁边,而且所有这些mgu的合一复合为f(A)/v,A/y。由于两个与或图的根节点能够互相CANCEL,所以两个与或图得到匹配,使图4.11的证明获得成功。,78,图 4.11 CANCEL图举例用,79,值得说明的是,应用CANCEL图能够正确处理与合取有关的目标节点。在证明父辈之前必须证明每个合取式。我们可以用类似的方法来处理与析取有关的事实节点。要在某个证明中使用析取的一个成员,我们就必须能使用每个析取分别证明同一目标。这一过程执行了“据情推理”的策略。我们应用F规则和B规则来扩展与或搜索图,因此,置换关系到每条规则的应用。解图中的所有置换,包括在规则匹配中得到的mgu和匹配事实与目标文字间所得到的mgu,都必须是一致的。,80,3.6 产生式系统,产生式系统的组成及表示 正向与反向推理,81,定义:用来描述若干个不同的以一个基本概念为基础的系统。这个基本概念就是产生式规则或产生式条件和操作对的概念。实质:在产生式系统中,论域的知识分为两部分:用事实表示静态知识,如事物、事件和它们之间的关系;用产生式规则表示推理过程和行为。由于这类系统的知识库主要用于存储规则,因此又把此类系统称为基于规则的系统。优点:表达自然直观,便于推理,可进行模块化处理,格式清晰,设计和检测方便,表示灵活,从而得到广泛应用。缺点:效率低,无法表示结构性知识,82,3.6.1 产生式系统的组成,控制策略,图3.22 产生式系统的主要组成,总数据库,产生式规则,83,产生式规则,是一个以“如果满足这个条件,就应当采取某些操作”形式表示的语句。例如,规则:如果 某种动物是哺乳动物,并且吃肉那么 这种动物被称为食肉动物 产生式的IF(如果)被称为条件、前项或产生式的左边。它说明应用这条规则必须满足的条件;THEN(那么)部分被称为操作、结果、后项或产生式的右边。可以由谓词逻辑、符号或语言的形式,或用复杂的过程语句来表示,这取决于采用的数据结构。如果某条规则的条件满足了,那么,这条规则就可以被应用,添加到总数据库中。产生式规则是一个规则库,84,总数据库,被称作上下文,当前数据库或暂时存储器,综合数据库,黑板等等 用于存放求解过程中各种当前信息的数据结构问题的初始状态、事实或证据、中间推理结论和最后结果,85,控制策略,产生式系统的控制系统,也是推理机构,有一组程序组成,用来控制产生式系统的运行,决定问题求解过程的推理线路,实现问题的求解选择规则,匹配总数据库多条匹配时的合适选择目标和执行动作终止条件推理路径可撤回、回溯、图搜索策略,取决于搜索的方式,86,其作用是说明下一步应该选用什么规则,也就是如何应用规则。通常从选择规则到执行操作分3步:,1 匹配 把当前数据库与规则的条件部分相匹配。2 冲突 当有一条以上规则的条件部分和当前数据库相匹配时,就需要决定首先使用哪一条规则,这称为冲突解决。有专一性、规则、数据、规模和就近排序等策略 3 操作 操作就是执行规则的操作部分。,87,3.6.2 产生式系统的推理,1.正向推理正向推理又称为正向链接推理,其推理基础是逻辑演绎的推理链,它从一组表示事实的谓词或命题出发,使用一组推理规则,来证明目标谓词公式或命题是否成立。实现正向推理的一般策略是:先提供一批数据(事实)到总数据库中,系统利用这些事实与规则的前提匹配,触发匹配成功的规则(即启用规则),把其结论作为新的事实添加到总数据库中。继续上述过程,用更新过的总数据库中的所有事实再与规则库中另一条规则匹配,用其结论再修改总数据库的内容,直到没有可匹配的新规则,不再有新的事实加到总数据库为止。,88,例如,有规则集如下:规则1:IF P1 THEN P2 规则2:IF P2 THEN P3 规则3:IF P3 THEN q3 规则中的P1、P2、P3、q3可以是谓词公式或命题。设总数据库(工作存储器)中已有事实P1,则应用这三条规则进行正向推理,即从P1出发推导出q3的过程如图4.16所示。,89,图 4.16 正向推理链接过程示意图,90,前面已经指出,前件和后件可以用命题或谓词来表示,当它们是谓词时,全局前提与总数据库中的事实匹配成功是指:对前件谓词中出现的变量进行某种统一的置换,使置换后的前件谓词成为总数据库中某个谓词的实例,即实例化后前件谓词与总数据库中某个事实相同。执行后件是指:当前件匹配成功时,用前件匹配时使用的相同变量,按同一方式对后件谓词进行置换,并把置换结果(后件谓词实例)加进总数据库。,91,2.反向推理 反向推理又称为后向链接推理,其基本原理是从表示目标的谓词或命题出发,使用一组规则证明事实谓词或命题成立,即提出一批假设(目标),然后逐一验证这些假设。举例如下:仍用上述的三条规则为例,应用反向推理方法,从P1出发推导出q3的过程如图4.18所示:,92,图 4.18 正向推理链接过程示意图,93,首先假定目标q3成立,由规则3(P3q3),为证明q3成立,须先验证P3是否成立;但总数据库没有事实P3,所以假定子目标P3成立;由规则2(P2P3),应验证P2;同样,由于数据库中没有事实P2,假定子目标P2成立;由规则1(P1P2),为验证P2成立,须先验证P1。因为数据库中有事实P1,所以假定的目标P2成立,因而P3成立,最终导出结论q3确实成立。总之,反向推理的具体实现策略是:先假定一个可能的目标,系统试图证明它,看此假设目标是否在总数据库中,若在,则假设成立。否则,看这些假设是否证据(叶子)结点,若是,向用户询问,若不是,则再假定另一个目标,即找出结论部分中包含此假设的那些规则,把它们的前提作为新的假设,试图证明它。这样周而复始,直到所有目标被证明,或所有路径被测试。,94,图 4.17 一种简单的产生式系统,95,双向推理,正向推理和逆向推理都有各自的特点和适用场合双向推理综合了两者的优势,克服了两者的短处困难之处:控制策略比较复杂例子:KAS,96,3.6.3 产生式系统举例,分类:综合与分析的两种,至于选择那种取决于推理的目标和搜索空间的形状(给定的是事实还是证实一个特定结论)对于综合系统:采用逐步分类的规则比较容易描述系统,同时规则少、容易理解、便于使用和建立规则,97,3.7 系统组织技