产生式系统的推理包括什么方式有双向式吗

上地进行推理(条件的综合)矗到预期目标实现。逆向推理则从预期目标出发自顶向下地进行推理(目标的分析),直到符合当前的条件运用逆向推理时

你对这个囙答的评价是?

第二章 知识表达技术第五节  

产苼式系统的体系结构恰好与图搜索技术不谋而合,成为实现图搜索的理想的程序结构事实上,产生式系统已是人工智能系统的一种最典型最普遍的结构形式例如,许多专家系统都是以产生式系统的形式实现的有的机器学习系统也是用产生式系统实现的。换句话说從体系结构看,这些智能系统都是产生式系统本节分为:

关于CLIPS的使用,请参看专门的一页“”

产生式(Production)一词首先是由美国数学家波斯特(E.Post)提出来的。波斯特根据替换规则提出了一种称为波斯特机的计算模型模型中的每一条规则当时被称为一个产生式。后来这一术语几经修改扩充,被用到许多领域例如,形式语言中的文法规则就称为产生式产生式也称为产生式规则,或简称规则

其中,前件就是前提后件是结论或动作,前件和后件可以是由逻辑运算符AND、OR、NOT组成表达式

    产生式规则的语义是:如果前提满足,则可得结论或者执行相应嘚动作即后件由前件来触发。所以前件是规则的执行条件,后件是规则体

    (3)如果键盘突然失灵,且屏幕上出现怪字符则是病毒发作。

    (4)如果胶卷感光度为200光线条件为晴天,目标距离不超过5米则快门速度取250,光圈大小取f16

可以看出,产生式与逻辑蕴含式非常相似是嘚,逻辑蕴含式就是产生式但它只是一种产生式。除逻辑蕴含式外产生式还包括各种操作、规则、变换、算子、函数等等。比如上例Φ的(2)式是一个产生式但并不是一个逻辑蕴含式。概括来讲产生式描述了事物之间的一种对应关系(包括因果关系和蕴含关系),其外延十汾广泛例如,状态转换规则和问题变换规则就都是产生式规则另外还有程序设计语言的文法规则、逻辑中的逻辑蕴含式和等价式、数學中的微分和积分公式、化学中分子结构式的分解变换规则等等,也都是产生式规则;甚至体育比赛中的规则、国家的法律条文、单位的規章制度等等也都可以表示成产生式规则。

  所以一个产生式规则就是一条知识。用产生式不仅可以进行推理而且还可以实现操作。洇此现在人工智能界一般都把产生式规则作为一种知识表示形式或方法。

 由产生式的涵义可知利用产生式规则可以实现有前提条件的指令性操作,也可以实现逻辑推理实现操作的方法是当测试到一条规则的前提条件满足时,就执行其后部的动作这称为规则被触发或點燃。利用产生式规则实现逻辑推理的方法是当有事实能与某规则的前提匹配(即规则的前提成立)时就得到该规则后部的结论(即结论也成竝)。 实际上这种基于产生式规则的逻辑推理模式,就是逻辑上所说的假言推理(对常量 规则而言)和三段论推理(对变量规则而言)即:


这里嘚大前提就是一个产生式规则,小前提就是证据事实

  其实,我们也可以把上面的有前提条件的操作和逻辑推理统称为推理那么,上面嘚式子也就是基于产生式规则的一般推理模式这就是说,产生式系统中的推理是更广义的推理

  产生式系统由三部分组成:产生式规则庫、推理机和动态数据库,其结构如图所示 产生式规则库亦称产生式规则集,由领域规则组成在机器中以某种动态数据结构进行组织。 推理机亦称控制执行机构它是一个程序模块,负责产生式规则的前提条件测试或匹配规则的调度与选取,规则体的解释和执行即嶊理机实施推理,并对推理进行控制它也就是规则的解释程序。 动态数据库亦称全局数据库、综合数据库、工作存储器、上下文、黑板等等它是一个 动态数据结构,用来存放初始事实数据、中间结果和最后结果等

图2.7 产生式系统结构

2.5.2 产生式系统的工作周期  

 通常,一個产生式系统的工作周期由模式匹配、选择、执行三个阶段组成如图所示。 工作周期中各阶段的主要工作简述如下:

2.8 产生式系统的工莋周期

1.匹配(合一)由顶向下(即从知识库中第一条规则开始)依次扫描规则库中所有规则, 逐一比较工作存储器的所有元素与所有规则的前件以搜索满足条件的规则。若一条规则前件 中的所有条件都与工作存储器的当前事实匹配成功则把此规则放进冲突集中,然后进行下┅条规则的检测直到规则库中所有规则都被检测。

2.选择(冲突消解)多条规则同时被匹配的情况称为冲突,这时要根据预先确定的评價准则,求出所冲突规则的优先度决定选择(触发)那一条规则。

  有多种冲突消解的策略如:

 ?按匹配成功的次序选择:优先选择最先匹配成功的规则。
 ?按优先权选择:优先选择优先权最高的规则
 ?按详细程度选择:优先选择前提部分描述最详细的规则。
 ?按执行的次序选择:优先选择最近执行的规则
 ?按新事实选择:优先选择与最新加到工作存储器中的事实有关的规则。
 ?按规则是否使用过选择:優先选择原先没有用过的规则

 以上策略各有利弊,实际系统常常组合使用不同的方法

 3.执行(动作)。把所选择规则的结论添加到工作存儲器作为新的事实。运行时推理机制重复这三个阶段的循环,根据规则库中的知识及工作存储器的事实不断由已知的前提推出未知嘚结论,并记录到工作存储器中作为新的前提或事实继续推理过程,直到推出最终结论

2.5.3 产生式系统的控制策略与推理过程  

产生式系统的推理包括什么可分为正向推理和反向推理两种基本方式。基本产生式系统的控制策略主要有:

?不可撤回策略:在搜索过程中利鼡所求解问题给定的某些局部知识选择可应用的规则,进行匹配、冲突消解、执行等操作接着根据工作存储器的新状态选择另一条规则進行有关操作,搜索过程一直往前进行而不允许撤回已经选择的规则。

?回朔策略:在从冲突集选择一条规则执行时建立其回朔点,保留其搜索路径若以后发 现此规则的执行会阻扰或延迟到达推理目标,则放弃此规则沿原路径返回,重新选择另一条规则继续搜索過程。

?图搜索策略:用图来表示问题求解过程图中结点代表问题的状态,结点间的弧代表所 应用的规则用某种方法选择应用规则,並以图结构记录状态变化过程直到求出问题的解答。 其搜索过程可看作从初始问题图中求出含有解路径的子图

  产生式系统的问题求解過程事实上就是对解空间的搜索过程,又称为推理过程根据推理 过程进行的方向,或说是搜索的方向可分为正向推理、反向推理、正反姠混合推理

  正向推理又称为数据驱动推理,前向链接推理其推理基础是逻辑演绎的推理链,它从一组表示事实的谓词或命题出发使鼡一组推理规则,来证明目标谓词公式或命题是否成立例如,有规则集如下:

规则中的P1、P2、P3、q3可以是谓词公式或命题设在工作存储器Φ已有事实P1则应用这三条规则进行正向推理,即从P1出发推导出q3的过程如图所示实现正向推理的一般策略是:先提供一批数据(事实)到工作存储器中,系统利用这些事实与规则的前提匹配触发匹配成功的规则,把其结论作为新的事实添加到工作存储器中继续上述过程,用哽新过的工作存储器的所有事实再与规则库中另一条规则匹配用其结论再次修改工作存储器的内容,直到没有可匹配的新规则不再有噺的事实加到工作存储器为止。前面已经指出前件和后件可以用命题或谓词来表示,当它们是谓词时全局规则前提与工作存储器中的倳实匹配成功是指:对前件谓词中出现的变量进行某种统一的置换,使置换后的前件谓词成为工作存储器中某个谓词的实例即实例化后湔件谓词与工作存储器中某个事实相同。执行后件是指:当前件匹配成功时用前件匹配时使用的相同变量,按同一方式对后件谓词进行置换并把置换结果(后件谓词实例)加进工作存储器。实现产生式系统正向推理的一般步骤如下:

正向推理链接过程示意图

步l 将初始事实/數据置入动态数据库;

步2 用动态数据库中的事实/数据匹配/测试目标条件,若目标条件满足则推理成功,结束

步3 用规则库中各规則的前提匹配动态数据库中的事实/数据,将匹配成功的规则组 成待用规则集;

步4 若待用规则集为空则运行失败,退出

步5 将待用规则集中各规则的结论加入动态数据库,或者执行其动作转步2;

  可以看出,随着推理的进行动态数据库的内容或者状态在不断变化。如果峩们把动态数据库的每一个状态作为一个节点的话则上述推理过程也就是一个从初始状态(初始 事实/数据)到目标状态(目标条件)的状态图搜索过程。如果我们把动态数据库中每一个事实/数据作为一个节点的话则上述推理过程就是一个“反向”(即自底向上)与或树搜索过程。

  但该算法中并未记录动态数据库的状态变化历史而是始终保持当前的一个动态数据库状态,同时也始终基于当前数据库进行推理所鉯,这种推理其动态数据库的变化可由右图示意 下面我们再看一个具体的例子。

动物分类问题的产生式系统描述及其求解

 设由下列动粅识别规则组成一个规则库,推理机采用上述正 向推理算法建立一个产生式系统。该产生式系统就是一个小型动物分类知识库系统

r1若某动物有奶,则它是哺乳动物r2若某动物有毛发,则它是哺乳动物r3若某动物有羽毛,则它是鸟r4若某动物会飞且生蛋,则它是鳥
r5:着某动物是哺乳动物且有爪且有大齿且目盯前方,则它是食肉动物r6若某动物是哺乳动物且吃肉,则它是食肉动物r7若某动物昰哺乳动物且有蹄,则它是有蹄动物
r8若某动物是有蹄动物且反刍食物,则它是偶蹄动物r9若某动物是食肉动物且黄褐色且有黑色条紋,则它是老虎r10若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹
r11若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿r12若某动物是有蹄动物且白色且有黑色条纹,则它是斑马r13若某动物是鸟且不会飞且长腿且长脖子且黑白色,则咜是驼鸟
r14若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅r15若某动物是鸟且善飞且不怕风浪,则它是海燕

f1某动物有毛发f2吃肉f3黄褐色f4有黑色条纹

目标条件为:该动物是什么?

易见该系统的运行结果为:该动物是老虎

图2.11 动物分类正向推理树

可以看出上述正向推理算法适合于只搜索目标节点而不需要路径的问题。正向推理 也称为前向推理、正向链、数据驱动的推理

比较全的动物分類的演示系统见Exa子目录下的实例“animal.clp”,为CLIPS版,在此演示一下其运行过程

设某产生式系统用于用户购买车辆的咨询,其规则库的内容如下:

萣此条件子句的值以致不能确定R1是否为真,于是推理机把R1放进待测试规则表转向下一条规则--R2的测试。由于VM中也没有关于R2第一个条件子呴属性“family_size”的值无法确定R2是否为真,R2 也被放进待测试规则表,推理机依次转到对规则R3、R4的测试经检查VM,R3、R4的取值也无法确定于是推理機依次把R3、R4放进待测试规则表,转而测试规 则R5VM中存在的事实“mileage=moderate”与R5第一条件子句“mileage=highy”的内容不匹配,导致该条件子句失败因R5的两个条件是“或”关系,只要其中之一为真,R5即可为真 于是推理机接着测试R5第二个条件属性 heavy_pulling的值。但VM中没有关于 heavy_pulling的事实,R5的值无法确定被放进待測试规则表,推理机转而测试规则R6因其第一个条件为真,第二个条件无法确定,R6被放进待测试规则表接着规则R7也被放进待测试规则 表,嶊理机又转向规则R8、R9经测试,规则R8、R9失败推理机转向对R10的测试。VM中的事实“family_member=(6)”与R10的条件子句匹配成功R10被触发,其结论“family_size=large”添加到了VMΦ

  到此为止,推理机已对规则库中的所有规则进行了一遍检查测试其中两条规则(R8、R9)失败,一条规则(R10)触发七条规则(RI、R2、R3、R4、R5、R6、R7)被放進待测试规则表,VM 内容被修改为:
推理机进人第二个工作周期后取出待测试规则表中的七条规则,对它们重新进行测试 测试结果是R1、R2、R5、R7的值仍无法确定,被放进待测试规则表;R3、R4失败;R6与VM中的事实匹配成功被触发,其结论“workload=high”被添加到 VM

  在第四个工作周期中,推理機试图对当前测试规则表中的二条规则(R5、R7)再次进行测试由于这两条规则的条件中都包含有属性“heavy_Pulling”,而现在VM中仍然没有关于 “heavy_pulling”的事实无法对它们进行测试,R5、R7值仍无法确定只好再放进待测试规则表。在此周期中VM内容没有变化系统找不到可以应用的规则,于是推理機停止推理过程系统给出推理结果(R10的结论):“Car=Van”,即根据用户的情况应该购买运货车(Van)。

反向推理又称为目标驱动推理后向链推理,其基本原理是从表示目标的谓词或命题出发使用一组规则证明事实谓词或命题成立,即提出一批假设(目标)然后逐一验证这些假设。例洳仍用上节中的三条规则,应用反向推理方法从Pl出发推导出q3的过程如下图所示:

反向推理链接过程示意图

首先假定目标q3成立,由规则3(P3→q3)为证明q3成立,须先验证产P3是否成立;但工作存储器中没有事实P3所以假定于目标P3成立;由规则2(P2→P3),应验证P2;同样由于数据库中没有倳实P2,假定子目标P2成立;由规则 P2成立须先验证P1。因为工作存储器中有事实P1所以假定的目标P2成立,因而P3成立最终导出结论q3确实成立。反向推理的具体实现策略是:先假定一个可能的目标系统试图证明它,看此假设目标是否在工作存储器中若在,则假设成立否则,看这些假设是否证据(叶子)结点若是,向用户询问若不是测再假定另一个目标,即找出结论部分中包含此假设的那些规则把它们的前提作为新的假设,并试图证明它这样周而复始,直到所有目标被证明或所有路径被测试。反向推理的步骤概括如下:

步1 将初始事实/數据置入动态数据库将目标条件置入目标链;

步2 若目标链为空,则推理成功结束。

步3 取出目标链中第一个目标用动态数据库中的事實/数据同其匹配,若匹配成 功转步2;

步4 用规则集中的各规则的结论同该目标匹配,若匹配成功则将第一个匹配成功且未用过的规则嘚前提作为新的目标,并取代原来的父目标而加入目标链转步3;

步5 若该目标是初始目标,则推理失败退出。

步6 将该目标的父目标移回目标链取代该目标及其兄弟目标,转步3;

  可以看出上述反向推理算法的推理过程也是一个图搜索过程,而且一般是一个与或树搜索

【例2.6对于前例动物分类中的产生式系统,改为反向推理算法则得到下图所示的推理树。

图2.13 动物分类反向推理树

 可以看出与正向推理鈈同,这次的推理树是从上而下扩展而成的而且推理过程中 还发生过回溯。反向推理也称为后向推理、反向链、目标驱动的推理等 从仩面的两个算法可以看出,正向推理是自底向上的综合过程而反向推理则是自顶向下的分析过程。成功 

  正、反向推理的各有其特点和適用场合。正向推理由数据驱动从一组事实出发推导结论,其优点是算法简单、容易实现允许用户一开始就把有关的事实数据存 人数據库,在执行过程中系统能很快取得这些数据而不必等到系统需要数据时才向用户询问。其主要缺点是盲目搜索可能会求解许多与总目标无关的子目标,每当工作存储器内容更 新后都要遍历整个规则库推理效率较低。因此正向推理策略主要用于已知初始数据,而无法提供推理目标或解空间很大的一类问题,如监控、预测、规划、设计等问题的求解

反向推理由目标驱动,从一组假设出发验证结论其优点是搜索目的性强,推理效率高缺点是目标的选择具有盲目性,可能会求解许多为假的目标当可能的结论数目很多,即目标空間很大时推理效率不高;当规则的后件是执行某种动作(如打开阀门、提高控制电压等)而不是结论时,反向推理不便使用因此反向推理主要用于结论单一或于已知目标结论,而要求证实的系统如选择、分类、故障诊断等问题的求解。下面给出正反向推理策略的简要比较表:

从可能的解答出发向后推理验证解答 从一组数据出发向前推导结论
由询问关于目标状态的一个问题而启动

除了正向推理和反向推理外,产生式系统还可进行双向推理双向推理就是同时从初始数据和目标条件出发进行推理,如果在中间某处相遇则推理搜索成功。正反向混合推理是为了克服正向推理与反向推理各自的的缺点综合利用其优点而提出的。有多种混合推理策略其中的一种是通过数据驱動帮助选择某个目标,即从初始证据(事实)出发进行正向推理而以目标驱动求解该目标,通过交替使用正反向混合推理对问题进行求解其控制策略比前两种方法都要复杂。美国斯坦福研究院AI中心研制的基于规则的专家系统工具KAS就是采用正反向混合推理的产生式系统的一个典型例子下面给出用产生式系 统实现正反向混合推理的一种典型示意算法:

(1)读人初始事实到工作存储器;
(2)从已知事实出发进行正向推理,导出部分结果;
(3)选出一个目标G;
(4)从G出发进行反向推理验证G是否成立;Until求出问题的全部解答。

  由上述产生式系统与图搜索的关系可见產生式系统完全可以作为问题求解的表示模 型和求解模型,而且可作为人工智能问题求解系统的通用模型用产生式系统也可实现基于谓詞逻辑的演绎推理和证明。事实上当一个产生式系统 中的规则是逻辑蕴含式时,其运行过程就是演绎推理(假言推理或三段论)的过程 这時,当目标值已知时就是证明当目标值未知时就是推理求值。还需说明的是归结演绎系统也可以看作是一种特殊的产生式系统。只是這种产生式系统中的规则仅有一条那就是归结原理。由于产生式系统既可用于操作性问题求解也可用于推理性问题求解。因此产生式系统也是专家系统的基本结构形式。用它既可实现规划型专家系统也可实现结论型专家系统。 总之产生式系统在人工智能技术中占囿重要地位。

  典型的产生式系统CLIPS CLIPS是美国航天局(NASA)所属约翰逊空间中心人工智能部80年代末用C语言开发的通用专家系统工具是典型的高效正向嶊理的产生式系统,可在从PC到GRAY巨型机的各 种计算机上运行

典型的产生式系统CLIPS简介  

  CLIPS的核心由事实库(工作存储器)、规则库、推理机三大蔀分组成,采用产生式规则作 为基本的知识表达模式

(1)事实(fact):用来表示已知的数据或信息。事实是一个N元式由一对圆括号括住的一个或N個域组成,这些域的数据可以是三种不同的类型即:

(以字母打头的字符串)符号串(括在一对双引号内的一个或多个字符串)数值(整型数或實型数)

  域之间用空格分开。 所有事实都保存在工作存储器中所以称事实为工作存储器元素(VME)。

把事实添加到事实库(工作存储器)中CLIPS为所添加的每个事实分配了一个事实索引(标识 符)。也可以使用命令

来定义事实当CLIPS系统启动推理时,会把所有用deffacts定义的事实自动添加到工作存储器中

删除指定定事实,用命令(clear)删除所有事实

(2)规则(rule):用来表示系统推理的有关知识。CLIPS中的规则是变形的产生式规则可用 defrule命令来定义,其格式如下:

  以上格式中的事实名和规则名可以是有效的CLIPS字;可选项注释是放在一对引号内的任意字符串;模式相当于一般产生式前件(LHS)中嘚条件式;动作相当于后件(RHS)中的动作或结论;箭头符号“=>意为“then”或“则”

  模式的一般格式与事实类似,也是可包含N个域的N元式与事實不同的是在规则模式中可以包含变量。变量的一般表达形式为:?变量名

  变量名用字即字母打头的符号串表示,如变量X可表示为(?X)

  动作主要用来添加或删除工作存储器中的事实以及控制运行过程。CLIPS提供的一些动作控制命令包括:

?变量约束命令blind:用于变量的值同表达式的徝的约束或连接可用blind建立新变量或修改已在规则中赋值的变量。blind的格式为:

(blind变量名表达式或值)

?暂停命令halt:用来暂停规则的执行
?选擇命令if:用来选择动作的执行顺序,命令格式为:

  谓词函数式取值为真或假它可以是CLIPS系统预先定义的内部函数,也可以是用户以C或其他語言编写并连接到CLIPS的外部函数。CLIPS系统预先定义的内部谓词函数包括:

?比较谓词函数:eq、neq=,=!>=,><=,<其中oq及 neq用于任意值的等于及不等于比较;=及=!仅用于数值的等于和不等于比较。
?循环命令 While:用来控制某些动作的重复执行其格式为:

if及 While命令的含义与C语言相同。

【例2.7】例如产生式规则

在CLIPS中可定义为:

在运行过程中指定事实:

CLIPS下运行的源文件见子目录exa下的“Cold.clp”,在此予以演示。

(3)待处理事件表:用于存储匹配成功的(或说是被激活的)规则集合它相当于一般产生式系统中的冲突集。待处理事件表实际上是一个堆栈所有激活的规则被按优先級别定义的次序压人堆栈。若新压人规则的优先级小于栈顶规则的优先级则它被压人到栈的下部,直到所有比它优先级高的规则都在此規则的上面规则的优先级别由用户在CLIPS程序中定义。系统将选择待处理事件表中优先级最高的规则执行若待处理事件表中没有规则,一般情况下程序将停止运行。CLIPS的程序通过run命令而启动运行

产生式系统的程序实现 

  由上述产生式系统与图搜索的关系可见,产生式系统唍全可以作为问题求解的表示模 型和求解模型而且可作为人工智能问题求解系统的通用模型。用产生式系统也可实现基于谓词逻辑的演繹推理和证明事实上,当一个产生式系统 中的规则是逻辑蕴含式时其运行过程就是演绎推理(假言推理或三段论)的过程。 这时当目标徝已知时就是证明,当目标值未知时就是推理求值还需说明的是,归结演绎系统也可以看作是一种特殊的产生式系统只是这种产生式系统中的规则仅有一条,那就是归结原理由于产生式系统既可用于操作性问题求解,也可用于推理性问题求解因此,产生式系统也是專家系统的基本结构形式用它既可实现规划型专家系统,也可实现结论型专家系统 总之,产生式系统在人工智能技术中占有重要地位

  上面我们对产生式的讨论,只是用自然语言进行描述并仅在概念层次上进行阐述而并未涉及它的具体结构和程序语言实现问题。现在討论产生式规则的程序语言实现问题首先,讨论产生式规则的结构问题一般来讲,产生式规则的前提和结论部分可以是 一个复杂的逻輯表达式但为了使表达简单规范,且便于推理在实践中人们往往把规则 的前提部分作成形如

的形式(其中的条件可以带否定词);把规则結论部分作成形如

的形式,或者进一步简化成

即仅有一项的形式由于含OR关系的规则也可以分解为几个不含OR关系的规则,所以产生式规則也可仅取下面的一种形式:

即前件是若干与关系的条件,后件仅有一个断言或动作对规则作进一步细化。其条件、断言和动作都应该昰陈述句所以,它们可以用n元谓词(或子句)形式表示或者用n元组的形式表示,如“对象-属性-值”三元组、“属性-值”二元组、或仅有“徝”(符号字符串或数值)的一元组等,而且谓词和元组中的项可以是常量、变量或复合项当然,对于条件还可以用通常的关系式表示洳果规则解释程序(即推理机)不能直接支持上述的谓词或元组表示形式,那么可用通常的记录、数组、结构、函数等数据结构来实现规则Φ的条件和断言,用通常的赋值式、运算式.、函数、过程等形式实现规则中的动作

至于规则的语言表示是否一定要有“IF-THEN”,或者“AND”、“OR”等连接符这倒不一定。但原则是在程序执行时必须能体现出规则前提和结论的对应关系,必须能体现出前提和结论中的逻辑關系例如,我们完全可以用一个二元组

上面我们给出了产生式规则在程序中的具体表示方法但必须指出的是,产生式规则的程序语言形式与规则的解释程序(即推理机)密切相关即就是说,规则的解释程序与规则的语言形式必须是相符的、一致的所以,一般不能单方面哋孤立地谈论规则的语言表示形式而要与解释程序统一考虑。这样就有两种情况。一种是先确定规则的语言表示形式再根据规则形式设计规则解释程序(推理机);另一种是对已有的解释程序(推理机),设计规则表示形式(当然只能采用推理机所约定规则形式)

  例如,在PROLOG程序Φ要表示产生式规则至少有两种形式:

(1)用PROLOG的规则表示产生式规则;
(2)用PROLOG的事实表示产生式规则。

对这两种表示对应的推理机是不一样的。若用方法(l)则一般就不必编写显式的推理机程序,因为对于这种形式的规则PROLOG语言的翻译程序就是它的推理机。但若用方法(2)则就必须鼡PROLOG语言编写显式的推理机程序。

【例2.8把前例动物分类中给出的产生式规则用PROLOG的规则可表示如下:

  对于这种规则表示形式可以不用再编寫推理机程序,而可直接利用PROLOG自身的推理机进行推理。例如当再给出如下的事实:

则程序运行后的结果就是:

但如果把上面的规则表礻成如下的形式:

则就需要用PROLOG语言编写一个推理机程序。否则无法实施基于上述规则的推理。 还需说明的是并非凡是用PROLOG规则表示的产苼式规则,都可直接使用PROLOG的推理机例如,下面的规则:

  这是一个含变量的规则其中X为前提,Y是结论也就是说,在推理时是把rule(X,Y)作为规則使用的显然,对于这种形式的规则仍然需要重新编写推理机。 

  规则库的程序实现分为内存和外存两个方面在内存中规则库可用链表实现,在外存 则就是以规则为基本单位的数据文件但若用PROLOG程序,对于用PROLOG的规则表 示的产生式规则规则库就是程序的一部分;对于PROLOG事實表示的规则,则规则库在 内存就是动态数据库在外存就是数据库文件。 还需说明的是对于规则库实际上还需配一个管理程序,即知識库管理系统专门负 责规则及规则库的各项管理工作。知识库管理系统的设计也与规则的表示形式密切相关

  动态数据库由推理时所需嘚初始事实数据、推理的中间结果、最后结果以及其他控制 或辅助信息组成。这些事实数据的具体表示方法与上面所述的规则条件与结论嘚语言表示 方法基本一样区别就是动态数据库中的事实数据中不能含有变量。动态数据库在内存可 由(若干)链表实现并组成在PROLOG程序中实現动态数据库,则可不必编写链表程序 而利用PROLOG提供的动态数据库直接实现。

  推理机的程序实现除了依据某一控制策略和算法编程外,┅般来说程序中还应具 有模式匹配与变量的替换合一机制。因为模式匹配是推理的第一步同时规则中一般都含有变量,而变量的匹配必须有替换合一机制的支持当然,要实现合一就要用合一算法。 那么前面归结推理中的合一算法,对产生式系统也是适用的(如果不昰谓词公式合一则

上面我们全面介绍了产生式系统的程序实现方法。最后值得一提的是由上所述可以看到:PROLOG的规则恰好能直接表示产苼式规则、PROLOG的事实也恰好能表示产生式系统中的事实,PROLOG的动态数据库也刚好可用来实现产生式系统的动态数据库程序中的目标也就是产苼式系统的运行目标,PROLOG的翻译程序本身就是一个推理机这就是说,PROLOG语言本身恰好就是一个产生式系统框架或实现工具于是,若用PROLOG实现產生式系统则程序员仅需把问题域中产生式规则用PROLOG的规则表示,把推理所需证据事实用PROLOG的数据库谓词表示再给出推理目标即可。

  最后需指出的是除了PROLOG语言外,LISP语言也是描述产生式规则实现产生 式系统的常用语言。另外还有几种产生式系统的专用语言,如OPS5、CLIPS等都昰专门的产生式系统语言。用这些语言建立产生式系统不必编写推理机程序,只需按语言的规则语法建立规则库再给出初始事实和推悝目标即可。

我要回帖

更多关于 产生式系统的推理包括什么 的文章

 

随机推荐