4.3 产生式系统
产生式系统(production
system)首先是由波斯特(Post)于1943年提出的产生式规则(production rule)而得名的。他们用这种规则对符号串进行置换运算。后来,美国的纽厄尔和西蒙利用这个原理建立一个人类的认知模型(1965年)。同时,斯坦福大学利用产生式系统结构设计出第一个专家系统DENDRAL。
产生式系统用来描述若干个不同的以一个基本概念为基础的系统。这个基本概念就是产生式规则或产生式条件和操作对的概念。在产生式系统中,论域的知识分为两部分:用事实表示静态知识,如事物、事件和它们之间的关系;用产生式规则表示推理过程和行为。由于这类系统的知识库主要用于存储规则,因此又把此类系统称为基于规则的系统(rule
based system)。
4.3.1 产生式系统的组成及表示
1.产生式系统的组成
产生式系统由3个部分组成,即总数据库(或全局数据库)、产生式规则和控制策略。各部分间的关系如图4.12所示
产生式规则 是一个以"如果满足这个条件,就应当采取某些操作"形式表示的语句。例如, 规则
如果 某种动物是哺乳动物,并且吃肉
那么 这种动物被称为食肉动物
产生式的IF(如果)被称为条件、前项或产生式的左边。它说明应用这条规则必须满足的条件;THEN(那么)部分被称为操作、结果、后项或产生式的右边。在产生式系统的执行过程中,如果某条规则的条件满足了,那么,这条规则就可以被应用;也就是说,系统的控制部分可以执行规则的操作部分。产生式的两边可用谓词逻辑、符号和语言的形式,或用很复杂的过程语句来表示。这取决于所采用数据结构的类型。
附带说明一下,这里所说的产生式规则和谓词逻辑中所讨论的产生式规则,从形式上看都采用了IF-THEN的形式,但这里所讨论的产生式更为通用。在谓词运算中的IF-THEN实质上是表示了蕴涵关系。也就是说要满足相应的真值表。这里所讨论的条件和操作部分除了可以用谓词逻辑表示外,还可以有其他多种表示形式,并不受相应的真值表的限制。
总数据库 有时也被称作上下文,当前数据库或暂时存储器。总数据库是产生式规则的注意中心。产生式规则的左边表示在启用这一规则之前总数据库内必须准备好的条件。例如在上述例子中,在得出该动物是食肉动物的结论之前,必须在总数据库中存有"该动物是哺乳动物"和"该动物吃肉"这两个事实。执行产生式规则的操作会引起总数据库的变化,这就使其他产生式规则的条件可能被满足。
控制策略的作用是说明下一步应该选用什么规则,也就是如何应用规则。通常从选择规则到执行操作分3步:匹配、冲突解决和操作。
(1) 匹配
在这一步,把当前数据库与规则的条件部分相匹配。如果两者完全匹配,则把这条规则称为触发规则。当按规则的操作部分去执行时,称这条规则为启用规则。被触发的规则不一定总是启用规则,因为可能同时有几条规则的条件部分被满足,这就要在解决冲突步骤中来解决这个问题。在复杂的情况下,在数据库和规则的条件部分之间可能要进行近似匹配。
(2) 冲突解决
当有一条以上规则的条件部分和当前数据库相匹配时,就需要决定首先使用哪一条规则,这称为冲突解决。例如,设有以下两条规则。
规则 R1: IF fourth dawn
short yardage
THEN punt
规则 R2: IF fouth dawn
short yardage
within 30 yards(from the goal line)
THEN field goal
这是两条关于美式足球的规则。R1规则规定进攻一方如果在前三次进攻中前进的距离少于10码(short yardage),那么在第四次进攻(fourth dawn)时,可以踢悬空球(punt)。R2规则规定,如果进攻这一方,在前三次进攻中,前进的距离少于10码,而进攻的位置又在离对方球门线30码距离之内,那么就可以射门(field
goal)。
如果当前数据库包含事实"fourth dawn" 和 "short yardage" 以及 "within
30 yards",则上述两条规则都被触发,这就需要用冲突解决来决定首先使用哪一条规则。有很多种冲突解决策略,其中一种策略是先使用规则R2,因为R2的条件部分包括了更多的限制,因此规定了一个更为特殊的情况。这是一种按专一性来编排顺序的策略,称为专一性排序。还有不少其他的冲突解决策略,如规则排序、数据排序、规模排序和就近排序等。
(a) 专一性排序
如果某一规则条件部分规定的情况,比另一规则条件部分规定的情况更有针对性,则这条规则有较高的优先级。
(b) 规则排序 如果规则编排的顺序就表示了启用的优先级,则称之为规则排序。
(c) 数据排序 把规则条件部分的所有条件按优先级次序编排起来,运行时首先使用在条件部分包含较高优先级数据的规则。
(d) 规模排序 按规则的条件部分的规模排列优先级,优先使用被满足的条件较多的规则。
(e) 就近排序 把最近使用的规则放在最优先的位置。这和人类的行为有相似之处。如果某一规则经常被使用,则人们倾向于更多地使用这条规则。
(f) 上下文限制 把产生式规则按它们所描述的上下文分组,也就是说按上下文对规则分组。在某种上下文条件下,只能从与其相对应的那组规则中选择可应用的规则。
不同的系统,使用上述这些策略的不同组合。如何选择冲突解决策略完全是启发式的。
(3) 操作
操作就是执行规则的操作部分,经过操作以后,当前数据库将被修改。然后,其他的规则有可能被使用。
