(2) 规则的表示
  (a) 单个规则的表示

  一般,一个规则由前项和后项两部分组成。前项表示前提条件,各个条件由逻辑连接词(合取、析取等)组成各种不同的组合。后项表示当前提条件为真时,应采取的行为或所得的结论。现仍以MYCIN和PROSPETOR系统中的规则表示为例。MYCIN系统中典型规则的定义:
        <rule>=(IF<antecedent> THEN <action> (ELSE <action>))
        <antecedent>=(AND<condition>)
        <condition>=(OR{<condition>|(<predicate> <associative_triple>)
        <associative_triple>=(<attribute> <object> <value>)
        <action>={<consequent>}|{<procedure>}
        <consequent>=(<associative_triple> <certainty_factor>)
  由定义可见,MYCIN规则中,无论前项或后项,其基本部分是关联三元组(〈特性-对象-取值〉)谓词+三元组,同它的事实的表示方式基本上是一致的。此外,每条规则的后项有一项置信度(certainty_factor),用来表明由规则的前提导致结论的可信程度。这一点在多数专家系统中都需要加以考虑,以便反映在不完全知识的条件下推理的不确定性,至于采用何种度量方法为宜,与具体的论域有关。
  PROSPECTOR系统中规则的定义:
        <rule> =(IF <antecedent>
        THEN <rule-strength>  <rule-strength> <consequent> )
        <antecedent> =<statement>
        <consequent> =<descriptive-statement>
        <statement> =<logical-statement>|<descriptive-statement>
        <logica-statement> =(AND{ <statement> })|
        (OR{ <statement> })|
        (NOT<statement> )
  规则的定义与MYCIN的规则类似,只是规则的可信度是以两个称为规则强度的数值来度量。
  有了规则的具体定义,再进一步看一下一个具体的MYCIN规则以及它在机器内部的LISP语言的表示。
  规则的内容:
    前提条件
      ◆  细菌革氏染色阴性
      ◆  形态杆状
      ◆  生长需氧
    结论
      该细菌是肠杆菌属,CF=0.8。
  LISP的表达式
        PREMISE:
        ($AND(SAME CNTXT GRAM GRAMNEG)
        (SAME CNTXT MORPH ROD)
        (SAME CNTXT AIR AEROBIC))
        ACTION:
        (CONCLUDE CNTXT CLASS ENTEROBACTERIACEAE TALLY 0.8)
  在LISP表达式中,规则的前提和结论均以谓词+关联三元组的形式表示,这里三元组中元素的顺序有所不同,为〈object-attribute-value〉。如〈CNTXT GRAM GRAMNEG〉表示某个细菌其革氏染色特性的值是阴性,这里CNTXT是上下文(即对象)context的缩写,表示一个变量,可为某一具体对象——细菌所例化。
  $AND,SAME,CONCLUDE等为MYCIN中自定义函数,其中SAME(C,P,LST)为3个自变量的特殊谓词函数,3个自变量分别是上下文C,临床参数(特性)P,LST是P的可能取值。SAME函数的取值不是简单的T和NIL,而是根据其自变量〈对象-特性-取值〉所表达内容的置信度,或取0.2—1.0之间任一数值,或取NIL(当置信度CF≤0.2时)。
  $AND〈condition〉…〈condition〉也是特殊的谓词函数,与LISP中系统定义的函数AND不同,其取值范围与SAME函数类似。
  TALLY是规则的置信度。
  (b) 规则间的关系
  完全独立的规则集虽然容易增删和修改,但寻找可用规则时只能顺序进行,效率很低。在实际专家系统中,由于规则都较多,所以总是按某种方式把有关规则连结起来,形成某种结构。
  ● 规则按参数分类
  在MYCIN中每一项特性(临床参数)设有一种专门的特性表,表中设置一些属性。其中有两个属性涉及到规则。属性LOOKAHEAD指明那些规则的前提涉及该参数;属性UPDATED-BY指出从哪些规则的行为部分可取得该参数。显然,通过临床参数的特性表将有关的规则组织在一起。MYCIN系统在工作过程中不断地对临床参数求值,为得到参数值,就必须通过特性表寻找同该临床参数有关的规则,从而实现对可用规则的调用。
  现以临床参数FEBRILE(发烧)和IDENT(细菌类别)为例,说明特性表怎样起规则分类的作用,见表4.1和表4.2。

                    表 4.1特性表1
FEBRILE:   <属病人(PERSON)的属性PROP-PT>
EXPECT:    (Y N)
LOOKAHEAD: (RULE149,RULE109,RULE045)
PROMPT :    (Is * febrile?)
TRANS:    (* IS FEBRILE)


                    表 4.2特性表2
IDENT: <属细菌属性PROP-ORG>
CONTAINED-IN: (RULE 030)
EXPECT: (ONE OF (ORGANISMS))
LABDATA: T
LOOKAHEAD: (RULE004,RULE054,…,RULE168)
PROMPT: (Enter the identity (genus)of *)
TRANS: (THE IDENTITY OF *)
UPDATED-BY: (RULE021,RULE003,…,RULE166)

  特性表中列出与该临床参数有关的一些信息。EXPECT属性,指该参数的取值范围,如(YN)指只取"是"、"否"值,(ONE OF 〈list〉)指只能取〈list〉表中的某一元素。
  PROMT属性,为MYCIN向用户显示的提示符,其中符号*在提问过程中将以当前涉及的上下文替代。譬如,MYCIN为了向用户索取目前所涉及细菌(设为细菌-1)的类别时,机器终端将显示如下提示符:
        Enter the identity (genus) of organism-1
  LABDATA:指出该参数是不是实验的原始数据,若为T,则当机器不能从规则的推理中得到该参数时,可以向用 户提问,以索取该参数。
  LOOKAHEAD:指出哪些规则的前提涉及该参数。
  UPDATED-BY:指出从哪些规则的ACTION或ELSE部分可得到该参数。
  TRANS:为了便于人-机对话,在此属性中指出如何将此参数内容译为英语表达式。
  ● 网状结构
  规则可以通过各种方式相互联系,当某一个规则的结论正好是另一条规则的前提时,这两条规则实际上是相互串联的。不同规则的前提或结论中所涉及的事实,它们之间也存在着各种关系。譬如从分类学的角度看,有集合与成员的关系,有集合与子集的关系等等。所以规则之间通常形成复杂的网状结构。
  PROSPECTOR系统中由不同规则所形成的部分推理网络示于图4.15,这是Kuroko型均匀结构的硫化矿沉积层的部分矿床模型。

               
                图4.15 Kuroko型均匀结构的硫化矿沉积层的部分矿床模型