资源描述
,第二级,第三级,第四级,第五级,*,第5章 产生式系统,第5章 产生式系统,5.1 产生式规则,5.2 产生式系统,5.3 产生式系统与图搜索,5.4 产生式系统的应用,5.5 产生式系统的程序实现,第5章 产生式系统 5.1 产生式规则,1,5.1 产生式规则,5.1.1 产生式规则,产生式(Production)一词,首先是由美国数学家波斯特(E.Post)提出来的。波斯特根据替换规则提出了一种称为波斯特机的计算模型,模型中的每一条规则当时被称为一个产生式。后来,这一术语几经修改扩充,被用到许多领域。例如,形式语言中的文法规则就称为产生式。产生式也称为产生式规则,或简称规则。,5.1 产生式规则 5.1.1 产生式规则,2,产生式的一般形式为,前件后件,其中,前件就是前提,后件是结论或动作,前件和后件可以是由逻辑运算符AND、OR、NOT组成的表达式。,产生式规则的语义是:如果前提满足,则可得结论或者执行相应的动作,即后件由前件来触发。所以,前件是规则的执行条件,后件是规则体。,产生式的一般形式为,3,例如,产生式规则:,(1)如果银行存款利率下调,那么股票价格上涨。,(2)如果炉温超过上限,则立即关闭风门。,(3)如果键盘突然失灵,且屏幕上出现怪字符,则是病毒发作。,(4)如果胶卷感光度为200,光线条件为晴天,目标距离不超过5米,则快门速度取250,光圈大小取f16。,例如,产生式规则:,4,5.1.2 基于产生式的推理模式,由产生式的涵义可知,利用产生式规则可以实现有前提条件的指令性操作,也可以实现逻辑推理。实现操作的方法是当测试到一条规则的前提条件满足时,就执行其后部的动作。这称为规则被触发或点燃。利用产生式规则实现逻辑推理的方法是当有事实能与某规则的前提匹配(即规则的前提成立)时,就得到该规则后部的结论(即结论也成立)。,5.1.2 基于产生式的推理模式,5,实际上,这种基于产生式规则的逻辑推理模式,就是逻辑上所说的假言推理(对常量规则而言)和三段论推理(对变量规则而言),即:,AB,A,B,这里的大前提就是一个产生式规则,小前提就是证据事实。,实际上,这种基于产生式规则的逻辑推理,6,5.2 产生式系统,5.2.1 产生式系统的组成,产生式系统由三部分组成:产生式规则库、推理机和动态数据库,其结构如图所示。产生式规则库亦称产生式规则集,由领域规则组成,在机器中以某种动态数据结构进行组织。,推理机亦称控制执行机构,它是一个程序模块,负责产生式规则的前提条件测试或匹配,规则的调度与选取,规则体的解释和执行。即推理机实施推理,并对推理进行控制,它也就是规则的解释程序。,产品式规则库,推理机,动态数据库,5.2 产生式系统 5.2.1 产生式系统的组,7,5.2.2 产生式系统的运行过程,产生式系统运行时,除了需要规则库以外,还需要有初始事实(或数据)和目标条件。,目标条件是系统正常结束的条件,也是系统的求解目标。产生式系统启动后,推理机就开始推理,按所给的目标进行问题求解。,推理机的一次推理过程,可如图所示。,一个实际的产生式系统,其目标条件一般不会只经一步推理就可满足,往往要经过多步推理才能满足或者证明问题无解。,从规则库中取一个条规则,将其前提同当前,动态数据库中的事实/数据进行模式匹配,匹配成功否,把该规则的结论放入当前动态数据库:或执,行规则所规定的动作,N,Y,5.2.2 产生式系统的运行过程从规则库中取一个条规,8,5.2.3 控制策略与常用算法,产生式系统的推理可分为正向推理和反向推理两种基本方式。,1.正向推理,正向推理算法一:,步1 将初始事实/数据置入动态数据库;,步2 用动态数据库中的事实/数据,匹配/测试目标条件,若目标条件满足,则推理成功,结束。,步3 用规则库中各规则的前提匹配动态数据库中的事实/数据,将匹配成功的规则组成待用规则集;,步4 若待用规则集为空,则运行失败,退出。,步5 将待用规则集中各规则的结论加入动态数据库,或者执行其动作,转步2;,可以看出:随着推理的进行,动态数据库的内容或者状态在不断变化。,动态数据库,推理,5.2.3 控制策略与常用算法动态数据库推理,9,例5.1 动物分类问题的产生式系统描述及其求解。,设由动物识别规则组成规则库,推理机采用上述正向推理算法。该产生式系统就是一个小型动物分类知识库系统。规则:,r,1,:若某动物有奶,则它是哺乳动物。,r,2,:若某动物有毛发,则它是哺乳动物。,r,3,:若某动物有羽毛,则它是鸟。,r,4,:若某动物会飞且生蛋,则它是鸟。,r,5,:若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。,r,6,:若某动物是哺乳动物且吃肉,则它是食肉动物。,r,7,:若某动物是哺乳动物且有蹄,则它是有蹄动物。,r,8,:若某动物是有蹄动物且反刍食物,则它是偶蹄动物。,r,9,:若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。,r,10,:若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹。,r,11,:若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿。,r,12,:若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。,r,13,:若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。,r,14,:若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。,r,15,:若某动物是鸟且善飞且不怕风浪,则它是海燕。,例5.1 动物分类问题的产生式系统描述及其求解。,10,再给出初始事实:,f,1,:某动物有毛发。,f,2,:吃肉。,f,3,:黄褐色。,f,4,:有黑色条纹。,目标条件:该动物是什么?,易见,该系统的运行结果为:该动物是老虎。,其推理树如图所示。,动物分类正向推理树,老虎,食肉动物,哺乳动物,有毛发,吃肉,黄褐色,有黑色条纹,再给出初始事实:动物分类正向推理树 老虎食肉动物哺乳动物有毛,11,2. 反向推理,步1 将初始事实/数据置入动态数据库,将目标条件置入目标链;,步2 若目标链为空,则推理成功,结束。,步3 取出目标链中第一个目标,用动态数据库中的事实/数据同其匹配,若匹配成功,转步2;,步4 用规则集中的各规则的结论同该目标匹配,若匹配成功,则将第一个匹配成功且未用过的规则的前提作为新的目标,并取代原来的父目标而加入目标链,转步3;,步5 若该目标是初始目标,则推理失败,退出。,步6 将该目标的父目标移回目标链,取代该目标及其兄弟目标,转步3;,可以看出,上述反向推理算法的推理过程也是一个图搜索过程,而且一般是一个与或树搜索。,2. 反向推理,12,例5.2 对于上例的产生式系统,改为反向推理算法,则得到图所示的推理树。,图55 动物分类反向推理树,例5.2 对于上例的产生式系统,改为,13,可以看出,与正向推理不同,这次的推理树是从上而下扩展而成的,而且推理过程中还发生过回溯。,反向推理也称为后向推理、反向链、目标驱动的推理等。,从上面的两个算法可以看出,正向推理是自底向上的综合过程,而反向推理则是自顶向下的分析过程。,除了正向推理和反向推理外,产生式系统还可进行双向推理。双向推理就是同时从初始数据和目标条件出发进行推理,如果在中间某处相遇,则推理搜索成功。,可以看出,与正向推理不同,这次的推理,14,3. 冲突消解策略,上述正向推理算法中,对所有匹配成功的规则都同时触发启用。所以,它实现的搜索是穷举式的树式盲目搜索。下面给出一个正向推理的启发式线式搜索:。,正向推理算法二:,步1 将初始事实/数据置入动态数据库;,步2 用动态数据库中的事实/数据,匹配/测试目标条件,若目标条件满足,则推理成功,结束。,步3 用规则库中各规则的前提匹配动态数据库中的事实/数据,将匹配成功的规则组成待用规则集;,步4 若待用规则集为空,则运行失败,退出。,步5 用某种策略,从待用规则集中选取一条规则,将其结论加入动态数据库,或者执行其动作,撤消待用规则集,转步2;,可以看出,该算法与前面的算法仅在步5有所差别。,3. 冲突消解策略,15,5.3 产生式系统与图搜索,分析前面给出的两个正向推理算法,可以看出,它们只能用于解决逻辑推理问题:,(1)记录动态数据库状态变化的历史,这就需要增设一个CLOSED表。,(2)若要回溯,则还需保存与每个动态数据库状态对应的可用规则集。因为动态数据库状态与可用规则集实际是一一对应的。,(3)要进行树式搜索,还需设置一个OPEN表,以进行新生动态数据库的状态保存和当前动态数据库状态的切换。,(4)还要考虑一条规则是否只允许执行一次。若是,则要对已执行了的规则进行标记。,5.3 产生式系统与图搜索 分析前面,16,表5.1 产生式系统与图搜索对比,可以看出,二者实际是一回事。要说差别的话,图搜索技术描述了问题求解的方法,而产生式系统则给出了实施这种方法的一种计算机程序系统的结构模式。这样,问题求解、图搜索和产生式系统三者的关系是:问题求解是目的,图搜索是方法,产生式系统是形式。,表5.1 产生式系统与图搜索对比,17,5.4 产生式系统的应用,由上述产生式系统与图搜索的关系可见,产生式系统完全可以作为问题求解的表示模型和求解模型,而且可作为人工智能问题求解系统的通用模型。用产生式系统也可实现基于谓词逻辑的演绎推理和证明。,由于产生式系统既可用于操作性问题求解,也可用于推理性问题求解。因此,产生式系统也是专家系统的基本结构形式。用它既可实现规划型专家系统,也可实现结论型专家系统。,产生式系统在人工智能技术中占有重要地位。,5.4 产生式系统的应用 由上述产生式系统与,18,5.5 产生式系统的程序实现,5.5.1 产生式规则的程序语言实现,讨论产生式规则的形式结构:,产生式规则的前提和结论部分可以是一个复杂的逻辑表达式,为使表达简单规范,便于推理,往往把规则的前提部分作成形如:,条件,1,AND条件,2,ANDAND条件n 或者,条件,1,OR条件,2,OROR条件m,把规则结论部分作成形如,断言,1,/动作,1,AND断言,2,/动作,2,ANDAND断言,k,/动作,k,或者,断言,1,/动作,1,OR断言,2,/动作,2,OROR断言,k,/动作,k,或者进一步简化成: 断言/动作 ( 即仅有一项),由于含OR关系的规则也可以分解为若干不含OR关系的规则,所以,产生式规则也可仅取下面的一种形式:,条件,1,AND条件,2,ANDAND条件n断言/动作,5.5 产生式系统的程序实现 5.5.1 产生式,19,前例:,DOMAINS,name=string.,PREDICATES,animal_is(name).,it_is(name).,it_is1(name).,fact(name).,GOAL,animal_is(Y),write(“Y=”,Y).,CLAUSES,fact(“有爪”).,fact(“吃肉”).,fact(“有奶”).,fact(“黄褐色”).,fact(“有黑色斑点”).,it_is(“哺乳动物”):-fact(“有奶”).,it_is(“哺乳动物”):-fact(“有毛发”).,it_is1(“食肉动物”):-it_is(“哺乳动物”),fact(“有爪”), fact(“有犬齿”).,it_is1(“食肉动物”):-it_is(“哺乳动物”),fact(“吃肉”).,it_is1(“有蹄动物”):-it_is(“哺乳动物”),fact(“有蹄”).,animal_is(“老虎”):- it_is1(“食肉动物”), fact(“黄褐色”),fact(“有黑色条纹”).,animal_is(“金钱豹”):- it_is1(“食肉动物”), fact(“黄褐色”),fact(“有黑色斑点”).,animal_is(“长颈鹿”):- it_is1(“有蹄动物”), fact(“长腿”),fact(“长脖”), fact(“有暗斑点”).,animal_is(“斑马”):- it_is1(“有蹄动物”), fact(“有黑色条纹”).,前例: it_is(“哺乳动物”):-fact(“有奶”),20,5.5.2 规则库的程序实现,规则库的程序实现分为内存和外存两个方面。在内存中规则库可用链表实现,在外存则就是以规则为基本单位的数据文件。,若用PROLOG程序,规则库就是程序的一部分;对于事实表示的规则,则规则库在内存就是动态数据库,在外存就是数据库文件。,还需说明的是,对于规则库实际上还需配一个管理程序,即知识库管理系统,专门负责规则及规则库的各项管理工作。知识库管理系统的设计也与规则的表示形式密切相关。,5.5.2 规则库的程序实现,21,5.5.3 动态数据库的程序实现,动态数据库由推理时所需的初始事实数据、推理的中间结果、最后结果以及其他控制或辅助信息组成。这些事实数据的具体表示方法与上面所述的规则条件与结论的语言表示方法基本一样,区别就是动态数据库中的事实数据中不能含有变量。动态数据库在内存可由(若干)链表实现并组成。,在PROLOG程序中实现动态数据库,则可不必编写链表程序,而利用PROLOG提供的动态数据库直接实现。,5.5.3 动态数据库的程序实现,22,
展开阅读全文