2004.11.3 AI程序设计 1
第一部分:第 3章 AI编程基础
第 3章 AI编程基础
3.1 命题逻辑
3.2 一阶谓词逻辑
3.3 产生式系统
3.4 专家系统
本章小结与习题
2004.11.3 AI程序设计 2
第一部分:第 3章 AI编程基础
3.1 命题逻辑
逻辑学是研究人如何正确地思维以达到认识客观真理的
科学, 它包括形式逻辑和辨证逻辑两部分 。 形式逻辑又
名静态逻辑或初等逻辑, 它着重研究思维形式的结构及
其规律 。 辩证逻辑又名动态逻辑或高等逻辑, 它是全面
研究思维的形式和内容, 研究思维的辨证发展规律的科
学 。 形式逻辑反映的是认识过程处在量变阶段的规律,
它完成的是已知规律的逻辑推理 。 辩证逻辑反映的是认
识过程处在质变阶段的规律, 它研究的是人的认识的发
生, 发展和完善的全过程 。
2004.11.3 AI程序设计 3
第一部分:第 3章 AI编程基础
3.1 命题逻辑
数理逻辑是用数学方法研究逻辑学的科学, 目前仅局限
在形式逻辑范围内 。 数理逻辑以命题演算和一阶谓词演
算为基础 。 在数理逻辑中, 仅关心推理在形式上的有效
性, 而不涉及推理的内容本身 。 命题逻辑与谓词逻辑是
最先应用于人工智能的两种逻辑, 对于知识的形式化表
示, 特别是定理的自动证明发挥了重要作用, 在人工智
能的发展史中占有重要地位 。 本节主要介绍命题逻辑,
在下一节介绍谓词逻辑 。
2004.11.3 AI程序设计 4
第一部分:第 3章 AI编程基础
3.1 命题逻辑
3.1.1 命题
3.1.2 命题定律
3.1.3 范式
3.1.4 命题逻辑的推论规则
3.1.5 命题逻辑的局限性
2004.11.3 AI程序设计 5
第一部分:第 3章 AI编程基础
3.1.1 命题
定义 3.1 命题( Proposition),命题是具有真假意义的语句。
命题代表人们进行思维时的一种判断, 或者是肯定, 或者是否定, 只有
这两种情况 。 如果命题的意义为真, 称它的真值为真, 记作 T;如果命
题的意义为假, 称它的真值为假, 记作 F。 一个命题不能同时既为真又
为假, 但可以在一定条件下为真, 在另一种条件下为假 。 没有真假意义
的语句 (如感叹句, 疑问句等 )不是命题 。 例如,, 北京是中华人民共和
国的首都,,, 3<5” 等都是真值为 T的命题;, 太阳从西边升起,,
,煤球是白色的, 都是真值为 F的命题 。, 1+1=10”在二进制情况下
是真值为 T的命题, 但在十进制情况下却是真值为 F的命题 。 同样, 对
于命题, 今天是雨天,, 也要看当天的实际情况才能决定其真值 。
2004.11.3 AI程序设计 6
第一部分:第 3章 AI编程基础
3.1.1 命题
如果一个命题不能进一步分解为更简单的命题,则此命题叫原子命题
(或本原命题、原始命题)。使用适当的联结词,可以把原子命题组合
成复合命题或分子命题。
在命题逻辑中,命题通常用大写的英文字母表示,例如可用英文字母
P表示“北京是中国的首都”这个命题。英文字母表示的命题既可以是
一个特定的命题,也可以是一个抽象的命题,前者称为命题常量,后者
称为命题变元。当,P”表示某个特定命题时,我们说 P 是一个命题常量,
它的真值就是该特定命题的真值。当,P”仅是任意命题的位置标志符时,
我们说 P 是一个命题变元,它没有真值。在数理逻辑中,命题变元不代
表一个确定的命题,没法确定其真值,但可以用任意一个给定的命题取
代它。这时就可以给出 P的真值。也就是说可以给命题变元任意指派真
值。在命题逻辑中常把命题变元简称为变元。
2004.11.3 AI程序设计 7
第一部分:第 3章 AI编程基础
3.1.1 命题
定义 3.2 命题联接词,在数理逻辑中也有类似的严格定义过的联结
词,叫命题联接词。常用的命题联接词有五个:合取、析取、否
定、蕴含、双条件。它们的定义如表 3-1所示。
2004.11.3 AI程序设计 8
第一部分:第 3章 AI编程基础
3.1.1 命题
表 3-1 命题连接词逻辑真值表
P Q
~P
P∧ Q
P∨ Q
P→ Q
P ? Q
F F
T
F
F
T
T
F T
T
F
T
T
F
T F
F
F
T
F
F
T T
F
T
T
T
T
2004.11.3 AI程序设计 9
第一部分:第 3章 AI编程基础
3.1.1 命题
定义 3.3 合式公式,合式公式是指,
① 孤立的命题变元或逻辑常量是一个合式公式 ( 叫原子公式 ) ;
② 如果 A是一个合式公式, 则 ~A也是一个合式公式;
③ 如果 A和 B是合式公式, 则 ( A∧ B), ( A∨ B), ( A→ B) 和 ( A
? B) 都是合式公式;
④ 当且仅当经过有限次使用规律①、②、③得到的由命题变元、联结
词符号和圆括号所组成的字符串,才是合式公式。
为了减少括号的使用次数, 特作如下简化的规定,
① 联结词运算的优先级从高到低为,~,∧, ∨, →, ? ;
② 同级联结词中, 先出现的先运算;
③ 最外层的括号可以省去, 在上述优先级规定下, 凡省去后不会引起
二义性的括号, 均可省去 。
2004.11.3 AI程序设计 10
第一部分:第 3章 AI编程基础
3.1.1 命题
定义 3.4 真值指派,设有一个由 n个变元 P1,P2,...,Pn所组成的
谓词公式 A,则 A的取值由这 n个变元唯一确定 。 如果给 ( P1,
P2,...,Pn) 一组确定的值 ( Pi=T或 F,i=1,2,...,n), 则 A有一确
定的真值 ( T或 F ) 。 我们把变元的一组取值叫做公式的一个真值指
派 。
真值表:由公式的所有真值指派和对应的公式真值所组成的表叫该
公式的真值表 。 例如公式 ( P→ Q) ∧ ( Q→ P) 的真值表可构造如表
3-2所示 。
2004.11.3 AI程序设计 11
第一部分:第 3章 AI编程基础
3.1.1 命题
表 3-2 公式( P→ Q) ∧ ( Q→ P)逻辑真值表
给定一个公式, 如果对于所有的真值指派, 它的真值都是 T,则称该公式为
永真式 ( 或重言式 ) ;如果对于所有的真值指派, 它的真值都是 F,则称该
公式为永假式 ( 或不可满足的 ) ;除了这两种极端情况外, 一般的命题公式
的真值有 T有 F。 称非永假的公式为可满足的公式 。
P Q
P→ Q
Q→ P
( P→ Q) ∧ ( Q→ P)
F F
T
T
T
F T
T
F
F
T F
F
T
F
T T
T
T
T
2004.11.3 AI程序设计 12
第一部分:第 3章 AI编程基础
3.1.1 命题
定义 3.5 等价( Equivalence),设 A,B都是命题公式,
Pi(i=1,2,...,n)是出现在 A和 B中的所有命题变元。如果对于这 n个变
元的任何一个真值指派集合,A和 B都相等,则称公式 A等价于公式 B,
记作,A?B。
等价又可定义为:,A?B当且仅当 A? B是一个永真式”。
定义 3.6 永真蕴含,命题公式 A永真蕴含命题公式 B,当且仅当 A→ B
是一个永真式,记作,A?B,读作,A永真蕴含 B,,简称,A蕴含
B,。
2004.11.3 AI程序设计 13
第一部分:第 3章 AI编程基础
3.1.2 命题定律
利用真值表, 我们可以证明一批常用的蕴含式和等价
式, 统称为命题定律 。
蕴含式 ( 16条 ) 略
等价式 ( 40条 ) 略
2004.11.3 AI程序设计 14
第一部分:第 3章 AI编程基础
3.1.3 范 式
我们知道, 具有相同真值表的公式可以有无穷多个, 但他们都是等价
的 。 为了研究的方便, 我们需要找到它们的标准形式 —— 范式 。 首先
看基本概念,
文字:原子公式及其否定叫文字 。
基本积:仅由文字构成的合取式叫基本积 。
基本和:仅由文字构成的析取式叫基本和 。
2004.11.3 AI程序设计 15
第一部分:第 3章 AI编程基础
3.1.3 范 式
1) 析 取范式
由基本积的析取构成的命题公式叫析取范式 。 例如
~ P∨ (P∧ Q) ∨ (P∧ ~R)∨ (~P∧ ~Q)
其中的每一个基本积叫一个析取项 。
任意给定一个命题公式都可以化成与之等价的析取范式 。
求公式A的析取范式的步骤
① 利用等价式 E38和 E39( 或 E40) 消去公式中的 → 和联结词;
② 利用 E11和 E12将联结词 ~深入到变元, 并用双重否定律 E10化简到变
元前最多只有一个 ~;
③ 利用分配律 E7和 E8将公式最后化为析取范式 。
2004.11.3 AI程序设计 16
第一部分:第 3章 AI编程基础
3.1.3 范 式
2) 合取范式
由基本和的合取构成的命题公式叫合取范式 。 例如
P∧ (~P∨ Q) ∧ (P∨ ~Q) ∧ (~P∨ ~R)
其中的每一个基本和叫合取项 。
任意给定一个命题公式 A都可以化成与之等价的合取范式 。
求公式 A的合取范式的步骤与析取范式类同 。
析取范式和合取范式可以解决公式表达的标准化问题, 但它们都
不唯一, 同一公式可以写出许多与之等价的析取范式和合取范式 。 主
范式可以解决公式表达的唯一性问题 。
2004.11.3 AI程序设计 17
第一部分:第 3章 AI编程基础
3.1.3 范 式
3) 主析取范式
如果析取范式中的每一个变元或它的否定形式在每一个析取项中必
出现一次且仅出现一次, 则该析取范式叫主析取范式 。
求一个命题公式的主析取范式的方法如下,
① 将给定公式化为析取范式;
② 除去析取范式中所有的永假的析取项 ( 即含有 P∧ ~P的析取项 ) ;
③ 若析取项中有同一变元的多次出现, 则用化简成只出现一次;
④ 若给定公式中的变 元 Q或 ~Q未出现在某析取项中, 则用等价式
引入 Q或 ~Q,然后除去相同之析取项 。
)~()()~( QPQPQQPP ???????
2004.11.3 AI程序设计 18
第一部分:第 3章 AI编程基础
3.1.3 范 式
例 1:求公式 ( P∧ ( P→ Q)) ∨ Q的主析取范式 。
(P∧ Q)∨ (~P∧ Q)就是它的主析取范式 。
求给定公式的主析取范式的方法有两种, 除了上述推导法外, 还有
一种真值表法, 这里不再详细叙述 。
? ?? ? ? ?? ?
? ? ? ?
? ?
? ? ? ? ? ?
? ? ? ?QPQP
QPQPQP
QQP
QQPPP
QQPPQQPP
????
??????
???
?????
???????
~
~
~
~
2004.11.3 AI程序设计 19
第一部分:第 3章 AI编程基础
3.1.3 范 式
4) 主合取范式
如果合取范式中的每一个变元或它的否定形式在每一个合取项中必出
现一次且仅出现一次, 则该合取范式叫主合取范式 。
求一个命题公式的主合取范式的方法与主析取范式类似 。
例 2:求公式 ( P∧ ( P→ Q)) ∨ Q的主合取范式 。
( P∨ Q) ∧ ( ~ P∨ Q) 就是它的主合取范式 。
与求主析取范式一样, 除了推导法外, 还有真值表法, 具体内容略 。
? ?? ? ? ?? ?
? ? ? ?
? ? ? ?QPQP
QQPQP
QQPPQQPP
????
?????
???????
~
~
~
2004.11.3 AI程序设计 20
第一部分:第 3章 AI编程基础
3.1.4 命题逻辑的推论规则
推论规则是保证推理有效性的一组规则, 常用的有,
(1) 代换规则 用任一公式 A全部代换永真式 B中的某个变元 Pi的所有出
现, 形成的新公式 B’( 叫 B的代换实例 ) 仍然是永真式 。 即 B?B’。
(2) 取代规则 若 A’是公式 A中的子公式且 A’?B’,用 B’取代 A中的 A’的
一处或多处出现, 所得到的新公式为 B,则有 A?B。
(3) 分离规则 若公式 A和 A→ B均为永真式, 则 B必为永真式 。
为了简化推导过程的书写形式, 常用一个公式序列来表示, 为此引入另
外三个规则 。
2004.11.3 AI程序设计 21
第一部分:第 3章 AI编程基础
3.1.4 命题逻辑的推论规则
(4) P规则 在推导的任何步骤上都可以引入前提 。
(5) T规则 在推导时, 如果前面步骤中有一个或多个公式永真蕴含公
式 S,则可以把 S引入推导过程之中 。
(6) CP规则 如果能从 R和前提集合中推导出 S来, 则可从前提集合推导
出 R→ S来 。
(7) 反证法 P?Q,当且仅当 P∧ ~Q ?F
2004.11.3 AI程序设计 22
第一部分:第 3章 AI编程基础
3.1.4 命题逻辑的推论规则
例 3:试证明 R→ S可由前提 P→(Q→S), ~R∨ P和 Q推导出来 。
解:如果将 R作为假设前提, 使它和原前提一起推出 S,则本题得证 。
① ~R∨ P ( P)
② R ( P,假设前提 )
③ P ( T,①, ②, I10)
④ P→( Q→ S) ( P)
⑤ Q→ S ( T,③, ④, I11)
⑥ Q ( P)
⑦ S ( T,⑤, ⑥, I11)
⑧ R→ S ( C P)
2004.11.3 AI程序设计 23
第一部分:第 3章 AI编程基础
3.1.5 命题逻辑的局限性
命题逻辑的这种表示法有较大的局限性, 它无法把它所描述的客观事
物的结构及逻辑特征反映出来, 也不能把不同事物间的共同特征表述出来 。
假设我们要表示下列句子叙述的明显事实:, 李明是工人 。, 用命题
逻辑表示时可写为,LIWORKER。
如果要表示:, 王华也是工人 。, 就必须写出,WANGWORKER。
这是一些完全独立的格式, 我们无法从中得出两者的共同特征, 也就
无法把两者的共同特征形式地表示出来 。 如果把这些事实表示为,
WORKER(LI); WORKER(WANG)
那么这就要好得多, 因为现在这种表示结构反映出知识本身的结构 。
2004.11.3 AI程序设计 24
第一部分:第 3章 AI编程基础
3.1.5 命题逻辑的局限性
如果我们试图用命题逻辑表示下列句子:, 所有的人都要学习 。,
那么我们将面临更大的困难, 因为如果我们现在不对问题进行量化,
我们就必须一个一个地写出已经知道的人都需要学习的独立命题 。
这样看来, 我们不得不应用谓词逻辑作为一种知识表示方法, 因为
谓词逻辑允许我们表达那些无法用命题逻辑相应地加以表达的事情 。
由于这些原因, 谓词逻辑在命题逻辑的基础上发展起来 。
2004.11.3 AI程序设计 25
第一部分:第 3章 AI编程基础
3.2 一阶谓词逻辑
谓词逻辑是在命题逻辑基础上发展起来的,命题逻辑
可看作是谓词逻辑的一种特殊形式。本节主要讨论谓词
逻辑的主要概念及有关定理。
2004.11.3 AI程序设计 26
第一部分:第 3章 AI编程基础
3.2 一阶谓词逻辑
3.2.1 谓词
3.2.2 量词
3.2.3 谓词逻辑的合式公式
3.2.4 自由变元与约束变元
3.2.5 谓词公式的解释
3.2.6 含有量词的等价式和蕴含式
3.2.7 谓词逻辑中的推论规则
3.2.8 谓词公式的范式与斯柯林标准形
2004.11.3 AI程序设计 27
第一部分:第 3章 AI编程基础
3.2.1 谓词
在谓词逻辑中,命题是用谓词表示的,一个谓词可分为谓词名与
个体这两个部分。个体表示某个独立存在的事物或者某个抽象的概
念;谓词名用于刻画个体的性质、状态或个体间的关系。
例如,对于“老张是教师”这个命题,用谓词可表示为 Teacher
( Zhang )。其中 Teacher是谓词名,Zhang是个体,,Teacher”
刻画了,Zhang”的职业是教师这一特征。又如,“5>3”这个不等式
可用谓词表示为 Greater( 5,3),这里 Greater刻画了 5与 3之间
的“大于”关系。
2004.11.3 AI程序设计 28
第一部分:第 3章 AI编程基础
3.2.1 谓词
谓词的一般形式是,P (x1,x2,...,xn)
其中, P是谓词名, x1,x2,...,xn是个体 。 谓词名通常用大写的英文字
母表示, 个体通常用小写的英文字母表示,个体可以是常量, 也可以
是变元, 还可以是一个函数 。
例如, 对于, x<5",可表示为 Less (x,5 ),其中 x是变元 。 又如, 对于
,小王的父亲是教师,, 可表示为 Teacher (father(Wang)),其中 father
(Wang)是一个函数 。
在用谓词表示客观事物时, 谓词的语义是由使用者根据需要人为地
定义的 。 例如对于谓词 S(x),既可以定义它表示, x是一个学生,, 也
可以定义它表示, x是一只船, 或者别的什么 。
当谓词中的变元都用特定的个体取代时, 谓词就具有一个确定的真
值,T或 F。
2004.11.3 AI程序设计 29
第一部分:第 3章 AI编程基础
3.2.1 谓词
谓词中包含的个体数目称为谓词的元数 。 例如 P (x)是一元谓词, P (x,y)
是二元谓词, P (x1,x2,...,xn)是 n元谓词 。
在谓词 P (x1,x2,...,xn)中, 若 xi (i = 1,...,n)都是个体常量, 变元或函数, 称
它为一阶谓词 。 如果某个 xi本身又是一个一阶谓词, 则称它为二阶谓词 。
余者类推 。
个体变元的取值范围称为个体域 。 个体域可以是有限的, 也可以是无
限的 。 例, 若用 I (x)表示, x是整数,, 则个体域是所有整数, 是无限的 。
谓词与函数表面上很相似, 容易混淆, 其实这是两个完全不同的概念 。
谓词的真值是, 真, 或, 假,, 而函数的值是个体域中的某个个体, 函
数无真值可言, 它只是在个体域中从一个个体到另一个个体的映射 。
个体常量, 个体变元, 函数统称为, 项, 。
2004.11.3 AI程序设计 30
第一部分:第 3章 AI编程基础
3.2.2 量词
怎样来刻画谓词与个体之间的这两种不同的关系呢? 为此我们引
入了一个新的概念 —— 量词 。 量词有两种:全称量词和存在量词 。
全称量词 (?x), 读作, 对于所有的 x”,它表示, 对个体域中的所有
(或任一个 )个体 x;另一个是 存在量词 (?x), 读作, 存在 x”,它表示
,在个体域中存在个体 x”。
符号, (?x)P(x)”表示命题:, 对于个体域中所有的个体 x,谓词 P(x)
均为 T”。 谓词 P(x)称为的辖域或作用范围 。
符号, (?x)Q(x)”表示命题:, 对于个体域中存在某些个体使谓词 Q(x)
为 T”。 谓词 Q(x)称为的辖域或存在范围 。
2004.11.3 AI程序设计 31
第一部分:第 3章 AI编程基础
3.2.2 量词
将谓词转化成命题的方法有二,
① 将谓词中的个体变元全部换成确定的个体; ② 使谓词量化 。
注意,
① 量词本身并不是一个独立的逻辑概念, 可以用 ∧, ∨ 联结词代替 。
设某个体域是有限集合 S,
S={a1,a2,...,an},对任意谓词 A(x)有
② 由量词所确定的命题的真值与个体域有关 。
)()()()()( 21 naAaAaAxAx ??????
)()()()()( 21 naAaAaAxAx ??????
2004.11.3 AI程序设计 32
第一部分:第 3章 AI编程基础
3.2.3 谓词逻辑的合式公式
可按下述规则得到谓词逻辑的合式公式,
(1) 单个谓词是合式公式, 称为原子谓词公式;
(2) 若 A是合式公式, 则 ~A也是合式公式;
(3) 若 A,B都是合式公式, 则 A∧ B,A∨ B,A→ B,A? B也都是合式公
式;
(4) 若 A是合式公式, x是任一个体变元, 则 (?x)A和 (?x)A也都是合式公
式 。
在合式公式中, 连接词的优先级别是 ~,∧,∨,→,?
2004.11.3 AI程序设计 33
第一部分:第 3章 AI编程基础
3.2.4 自由变元与约束变元
位于量词后面的单个谓词或者用括弧括起来的合式公式称为量词的
辖域, 那么, 辖域内与量词中同名的变元称为约束变元, 不受约束的变
元称为自由变元 。 例如,
其中, ( P(x,y) → Q(x,y)) 是 (?x)的辖域, 辖域内的变元 x是受 (?x)约束
的变元, 而 R(x,y)中的 x是自由变元, 公式中的所有 y都是自由变元 。
在谓词公式中,变元的名字是无关紧要的,可以把一个名字换成另一
个名字。但必须注意,当对量词辖域内的约束变元更名时,必须把同名
的约束变元都统一改成相同的名字,且不能与辖域内的自由变元同名;
当对辖域内的自由变元改名时,不能改成与约束变元相同的名字。
? ? ),(),(),( yxRyxQyxPx ??? )(
2004.11.3 AI程序设计 34
第一部分:第 3章 AI编程基础
3.2.5 谓词公式的解释
在命题逻辑中, 对命题公式中各个命题变元的一次真值指派称为命
题公式的一个解释 。 一旦解释确定后, 根据各连接词的定义就可求出
命题公式的真值 (T或 F)。 在谓词逻辑中, 由于公式中可能有个体常量
,个体变元以及函数, 因此不能像命题公式那样直接通过真值指派给
出解释, 必须首先考虑个体常量和函数在个体域中的取值, 然后才能
针对常量与函数的具体取值为谓词分别指派真值 。 由于存在多种组合
情况, 所以一个谓词公式的解释可能有很多个 。 对于每一个解释, 谓
词公式都可求出一个真值 (T或 F)。
下面首先给出解释的定义, 然后用例子说明如何构造一个解释以及
如何根据解释求出谓词公式的真值 。
2004.11.3 AI程序设计 35
第一部分:第 3章 AI编程基础
3.2.5 谓词公式的解释
定义 3.7,设 D为谓词公式 P的个体域, 若对 P中的个体常量, 函数和谓
词按如下规定赋值,
(1) 为每个个体常量指派 D中的一个元素;
(2) 为每个 n元函数指派一个从 Dn到 D的映射, 其中
Dn={(x1,x2,...,xn) | x1,x2,...,xn∈ D}
(3) 为每个 n元谓词指派一个从 Dn到 {F,T}的映射 。
则称这些指派为公式 P在 D上的一个解释。
2004.11.3 AI程序设计 36
第一部分:第 3章 AI编程基础
3.2.5 谓词公式的解释
例 1:设个体域 D={1,2},求公式
在 D上的解释,并指出在每一种解释下公式 A的真值。
解:在公式 A中没有包括个体常量和函数, 所以可直接为谓词指派真值, 设为
P(1,1)=T,P(1,2)=F,P(2,1)=T,P(2,2)=F
这就是公式 A在 D上的一个解释 。 在此解释下, 因为 x= 1时有 y= 1使 P(x,y)的真值
为 T; x=2时也有 y= 1使 F(x,y)的真值为 T,即对于 D中的所有 x都有 y= 1使 P(x,y)的
真值为 T,所以在此解释下公式 A的真值为 T。
还可以对公式 A中的谓词指派另外一组真值, 设为
P(1,1)=F,P(1,2)=F,P(2,1)=F,P(2,2)=F
这是对公式 A的另一个解释 。 在此解释下, 对 D中的所有 x (x= 1与 x= 2)不存在一
个 y,使得公式 A的真值为 T,所以在此解释下公式 A的真值为 F。
公式 A在 D上共有 16种解释, 这里不再一一列出, 读者可列出其中的几个, 并求出
公式 A的真值 。
),())(( yxPyxA ???
2004.11.3 AI程序设计 37
第一部分:第 3章 AI编程基础
3.2.5 谓词公式的解释
例 2:设个体域 D={1,2},求公式
在 D上的某一个解释,并指出公式 B在此解释下的真值。
解:设对个体常量 b,函数 f (x)指派的值分别为,
b=1,f (1)=2,f (2)=1
对谓词指派的真值为,
P(1)=F,P(2)=T, Q(1,1)=T,Q(2,1)=F
这里, 由于已指派 b=1,所以 Q(1,2)与 Q(2,2)不可能出现, 故没有给它们指派真值 。
上述指派就是对公式 B的一个解释 。 在此解释下, 由于当 x= 1时, 有
P(1)=F, Q(f (1),1)= Q(2,1)=F
所以 P(1) → Q(f (1),1)的真值为 T。 = 2时
P(2)=T,Q(f (2),1)= Q(1,1)=T
所以 P(2) → Q(f (2),1)的真值也为 T。 即对个体域 D中的所有 x均有
(P(x) → Q(f (x),b))
的真值为 T。所以公式 B在此解释下的真值为 T。
))),(()()(( bxfQxPx ??
2004.11.3 AI程序设计 38
第一部分:第 3章 AI编程基础
3.2.6 含有量词的等价式和蕴含式
逻辑中的永真式, 等价和蕴含等概念可以推广到谓词逻辑, 命题逻
辑中常用的等价式和蕴含式也可以全部推广到谓词逻辑来 。 一般来说
,只要把原式中的命题公式用谓词公式代替, 且把这种代替贯穿于整
个表达式中, 命题逻辑中的永真式就转化成谓词逻辑中的永真式了 。
谓词逻辑中特有的一些重要等价式和蕴含式:略
2004.11.3 AI程序设计 39
第一部分:第 3章 AI编程基础
3.2.7 谓词逻辑中的推论规则
谓词逻辑是一种比命题逻辑范围更加广泛的形式语言系统。命题逻辑
中的推论规则都可以无条件地推广到谓词逻辑中来。除此而外,谓词逻
辑中还有一些自己独立的推论规则。
约束变元的改名规则
自由变元的代入规则
命题变元的代换规则
全称规定规则 US
存在规定规则 ES
存在推广规则 EG
全称推广规则 UG
2004.11.3 AI程序设计 40
第一部分:第 3章 AI编程基础
3.2.8 谓词公式的范式与斯柯林标准形
前束范式 设有一谓词公式 F,如果其中所有量词均非否定地出现在公式
的最前面, 且它们的辖域为整个公式, 则称 F为前束范式 。 例如
是前束范式
任一公式都可以化为与之等价的前束范式 。 其方法如下,
① 消去公式中的联结词 ? 和 → ( E38,E39) ;
② 将公式内之否定符号深入到谓词变元 (E11,E12,E47,E48)并化简到谓词
变元前最多只有一个 ~ (E10)
③ 利用改名, 代入规则使所有约束变元均不同, 且使自由变元与约束变
元亦不同;
④ 扩充量词的辖域至整个公式 (E43,E44,E45,E46)。
)),,(),(),()()()(( zyxRzxQyxPzyx ?????
2004.11.3 AI程序设计 41
第一部分:第 3章 AI编程基础
3.2.8 谓词公式的范式与斯柯林标准形
例 3:试将公式 化为前束范式 。
解,
? ? ? ? ? ? ? ?? ? ? ? ? ?xFxyRyxPx ?????
? ? ? ? ? ? ? ?? ? ? ? ? ?xFxyRyxPx ????? ? ? ? ? ? ? ? ?? ? ? ? ? ?
? ? ? ? ? ? ? ?? ? ? ? ? ?
? ? ? ? ? ? ? ?? ? ? ? ? ?
? ? ? ? ? ? ? ?? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?? ? ? ?? ?
~
~~
~~
~~
~~
x P x y R y x F x
x P x y R y x F x
x P x y R y x F x
x P x y R y z F z
x y z P x R y F x
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
? ? ? ? ? ?
2004.11.3 AI程序设计 42
第一部分:第 3章 AI编程基础
3.2.8 谓词公式的范式与斯柯林标准形
斯柯林范式 如果前束范式中所有的存在量词均在全称量词之前, 则称
这种形式为斯柯林范式 。
例如 是斯柯林范式。
任何一个公式都可以化为与之等价的斯柯林范式, 其方法略 。
))(),(),()()()(( yRzyQyxPyzx ?????
2004.11.3 AI程序设计 43
第一部分:第 3章 AI编程基础
3.2.8 谓词公式的范式与斯柯林标准形
斯柯林标准形
设有一个公式 F的前束范式为,( Q1x1),.,( Qnxn) M
其中 M是合取范式, ((Q1x1)..,(Qnxn))是量词序列 。 设 Qr(1≤r ≤n)是量词序
列中的一个存在量词 。
① 如果没有全称量词出现在 Qr之前, 我们就选择一个 M中未出现过的常
量 a,代替所有在 M中出现的 xr;
② 如果 QS1,...,QSm是出现在 Qr之前的所有全称量词, 其中 1≤s1< s2<...< sm≤
r,我们就选择一个 M中没有出现过的 m元函数符号 f,用 f( xS1,xS2,...,xSm,)
代替 M中出现的所有 xr,并在前束中消去 ( Qrxr) 。
用上述方法除去公式 F的前束中的所有存在量词后得到的最后公式, 叫公
式 F的斯柯林标准形, 简称标准形 。 用来代替 xr的 a和 f称为斯柯林函数 。
标准形中量词后的内容为母式 。
2004.11.3 AI程序设计 44
第一部分:第 3章 AI编程基础
3.3 产生式系统
产生式系统 ( Production System) 是 1943年波斯特 ( Post) 提出的一种
计算形式体系里所使用的术语, 主要是类似于文法的规则, 对符号串作
替换运算 。 到了 60年代产生式系统成为认知心理学研究人类心理活动中
信息加工过程的基础, 并用它来建立人类认识的模型 。 到现在, 产生式
系统在人工智能领域内, 无论在理论上和应用上都经历了很大的发展,
所以现在的产生式系统和波斯特的系统已很不相同 。 它已发展成为人工
智能系统中最典型最普遍的一种结构, 例如, 目前大多数专家系统都采
用产生式系统的结构来建造 。 采用产生式系统作为 AI系统的主要结构,
原因有两点:第一:用产生式系统结构求解问题的过程和人类求解问题
时的思维过程很相像, 因而可以用它来模拟人类求解问题时的思维过程 。
第二:可以把产生式系统作为 AI系统的基本结构单元或基本模式看待,
就好像是积木块一样, 因而研究产生式系统的基本问题就具有一般意义 。
2004.11.3 AI程序设计 45
第一部分:第 3章 AI编程基础
3.3 产生式系统
3.3.1 产生式系统的基本组成
3.3.2 产生式系统的基本过程
3.3.3 基于产生式系统的具体问题建模
3.3.4 产生式系统的类型
3.3.5 产生式系统的搜索策略
3.3.6 两种典型的产生式系统
2004.11.3 AI程序设计 46
第一部分:第 3章 AI编程基础
3.3.1 产生式系统的基本组成
一个高效的人工智能系统需要大量的有关知识作为背景, 而知识可
以分为三部分:叙述性知识, 过程性知识和控制性知识 。 AI系统的任
务就是要把这三部分知识有效地组织起来, 形成一个系统, 以便实现
问题求解过程的自动化 。
产生式系统中, 与这三方面的知识相对应, 也包含了三个基本组成
部分:综合数据库 ( Global Database), 一组产生式规则 ( Set of
Rules) 和一个控制策略 ( Control Strategies) 。 它们之间的关系如
图 3.1所示 。
2004.11.3 AI程序设计 47
第一部分:第 3章 AI编程基础
3.3.1 产生式系统的基本组成
控制策略
产生式规则 综合数据库
图 3.1 产生式系统的基本组成
2004.11.3 AI程序设计 48
第一部分:第 3章 AI编程基础
3.3.1 产生式系统的基本组成
综合数据库 是产生式系统所使用的主要数据结构, 它用来表述问
题状态或有关事实, 即它含有所求解问题的信息, 其中有些部分可以
是不变的, 有些部分则可能只与当前问题的解有关 。
产生式规则集 是作用在全局数据库上的一些规则 ( 算子, 操作 )
的集合, 每条规则都有一定的条件, 若全局数据库中的内容满足这个
条件, 就可以调用这条规则, 执行规则的结果会改变全局数据库中的
内容 。
产生式规则的一般形式为,
条件 → 行动 或 前提 → 结论
控制系统或控制策略 是负责选择规则的决策系统, 即决定了问题
求解过程的推理路线 。
2004.11.3 AI程序设计 49
第一部分:第 3章 AI编程基础
3.3.1 产生式系统的基本组成
通常从选择规则到执行操作分三步:匹配, 冲突消解和操作 。
1) 匹配
2) 冲突消解
3) 操作
下面介绍其含义 。
2004.11.3 AI程序设计 50
第一部分:第 3章 AI编程基础
3.3.1 产生式系统的基本组成
1) 匹配
在这一步, 把当前数据库和规则的条件部分相匹配 。 如果两者完全
匹配, 则把这条规则称为触发的规则 。 当按规则的操作系统去执行
时, 把这条规则称为被启用的规则 。 被触发的规则不一定总是被启
用的规则 。 因为可能同时有几条规则的条件部分被满足, 这就要在
解决冲突步骤中来解决这个问题 。 在复杂的情况下, 在数据库和规
则的条件部分之间可能要进行近似匹配 。
2004.11.3 AI程序设计 51
第一部分:第 3章 AI编程基础
3.3.1 产生式系统的基本组成
2) 冲突消解
当有一个以上的规则条件部分和当前数据库相匹配时, 就需要决定
首先使用哪一条规则, 这称为冲突消解 。 一般的冲突消解策略有以
下几种,
① 专一性排序
② 规则排序
③ 数据排序
④ 规模排序
⑤ 就近排序
⑥ 上下文限制
不同的系统, 使用上述这些策略的不同组合, 如何选择冲突解决策
略完全是启发式的 。
2004.11.3 AI程序设计 52
第一部分:第 3章 AI编程基础
3.3.1 产生式系统的基本组成
3) 操作
操作就是执行规则的操作部分, 经过操作以后, 当前数据库将被
修改 。 然后, 其他的规则有可能被使用 。
2004.11.3 AI程序设计 53
第一部分:第 3章 AI编程基础
3.3.2 产生式系统的基本过程
用产生式系统求解问题的过程可用下列算法来描述,
步 1,DATA← 初始数据库;
步 2,until DATA 满足终止条件, do
步 3,begin
步 4,在规则集中选择能作用到 DATA上的规则 R;
步 5,DATA← R作用到 DATA上的结果;
步 6,end,
2004.11.3 AI程序设计 54
第一部分:第 3章 AI编程基础
3.3.2 产生式系统的基本过程
通过上述过程可以看出, 产生式系统与一般分级组织的计算机软
件系统比较, 具有以下特点,
① 全局数据库的内容可以为所有的规则所访问, 没有任何部分是专
为某一规则建立的, 这种特性便于模仿智能行为中的强数据驱动性;
② 规则本身不能调用其他规则 。 规则之间的联系必须通过全局数据
库进行;
③ 全局数据库, 规则和控制系统之间相对独立, 这种积木式结构便
于整个系统增加和修改知识 。 这些特点对于建立一个大型人工智能系
统是十分可贵的 。
2004.11.3 AI程序设计 55
第一部分:第 3章 AI编程基础
3.3.3 基于产生式系统的问题建模
这里举例说明如何用产生式系统来描述或表示求解的问题, 即如
何对具体的问题建立起产生式系统的描述, 以及用产生式系统求解
问题的基本思想 。
八数码游戏问题 ( Eight-Puzzle), 在 3× 3组成的九宫格棋盘上,
每一个将牌都刻有 1- 8中的某一个数码 。 棋盘中留有一个空格, 允
许其周围的某一个将牌向空格移动, 这样通过移动将牌就可以不断
改变将牌的布局 。 这种游戏求解的问题是:给定一种初始的将牌布
局或结构 ( 称初始状态 ) 和一个目标布局 ( 称目标状态 ), 问如何
移动将牌, 实现从初始状态向目标状态的转变 。 问题的解答其实就
是给出一个合法的走步序列 。
2004.11.3 AI程序设计 56
第一部分:第 3章 AI编程基础
3.3.3 基于产生式系统的问题建模
设给定的具体问题如图 3.2所示 。
初始状态 目标状态
图 3.2 八数码游戏实例
2
8
3
1
2
3
1
6
4
8
4
7
5
7
6
5
2004.11.3 AI程序设计 57
第一部分:第 3章 AI编程基础
3.3.3 基于产生式系统的问题建模
( 1) 综合数据库,( Sij) 其中 1≤i,j≤3,Sij∈ {0,1,...,8},且 Sij互不相等 。
( 2) 规则集合:移动一块将牌 ( 即走一步 ) 就使状态发生转变 。 改变状态有
4种走法:空格左移, 空格上移, 空格右移, 空格下移 。 这 4种走法可用 4条产
生式规则来模拟, 应用每条规则都应满足一定的条件 。 于是规则集可形式化
表示如下,
设 Sij记矩阵第 i行第 j列的数码, i0,j0记空格所在的行, 列数值, 即 Si0j0= 0,
则 if j0-1≥1 then Si0j0:= Si0(j0-1),Si0(j0-1):= 0; ( Si0j0向左 )
if i0-1≥1 then Si0j0:= S(i0-1)j0,S(i0-1)j0:= 0; ( Si0j0向上 )
if j0+ 1≤3 then Si0j0:= Si0(j0+ 1),Si0(j0+1):= 0; ( Si0j0向右 )
if i0+ 1≤3 then Si0j0:= S(i0+1)j0,S(i0+ 1)j0:= 0; ( Si0j0向下 )
( 3) 搜索策略:从规则集中选取规则并作用于状态的一种广义选取函数 。
建立了产生式系统描述后, 通过控制策略, 可求得实现目标的一个走步序列
( 即规则序列 ), 这就是所谓的问题的解, 如走步序列 ( 上, 上, 左, 下,
右 ) 就是一个解 。
2004.11.3 AI程序设计 58
第一部分:第 3章 AI编程基础
3.3.4 产生式系统的类型
按照控制系统, 规则, 综合数据库的内容和应用的不同, 产生式系统可以分为
几种不同的类型, 尼尔逊按照控制策略的不同提出了如下的产生式系统分类体系,
1) 按搜索策略划分
按搜索策略, 产生式系统可分为不可撤回的产生式系统和试探性的产生式系统 。
所谓不可撤回的产生式系统是指规则使用后, 不允许回过头来重新选用其他规
则 。 如爬山法, 只考虑选有最大增量的规则向上爬, 不允许退下来, 故有可能遇
到局部极值 。 换句话说, 这种方式是利用问题给出的局部知识来决定如何选取规
则的 。 根据当前可靠的局部知识选一条可应用的规则, 并作用于当前综合数据库,
接着再根据新的状态继续选取规则, 搜索过程一直进行下去 。 不必考虑撤回用过
的规则, 这是由于在搜索过程中如果能有效利用局部知识, 即使使用了一条不理
想的规则, 也不妨碍下一步选得另一条更合适的规则, 这样不撤消用过的规则 。
显然, 这种策略具有控制简单的优点 。
2004.11.3 AI程序设计 59
第一部分:第 3章 AI编程基础
3.3.4 产生式系统的类型
所谓试探性的产生式系统指规则使用后, 允许返回原出发点重新选
择其他规则 。 试探式的产生系统又分为两类:即回溯式产生式系统和
图搜索式产生式系统 。
回溯式产生式系统:当搜索遇到困难时, 可返回再选其他规则 。 例
如有界深度优先搜索 。
图搜索式产生式系统:它同时掌握若干规则序列的效果, 从中寻找
问题的答案 。 为避免循环, 通常采用树搜索法, 例如广度优先搜索 。
2004.11.3 AI程序设计 60
第一部分:第 3章 AI编程基础
3.3.4 产生式系统的类型
2) 按搜索方向划分
我们一般是从初始状态向着目标方向进行搜索, 如果规则可以逆向运用, 也
可以从目标状态向着初始状态方向进行搜索, 或者双向同时进行搜索 。 这样就
形成了三种不同方向的产生式系统:正向产生式系统, 逆向产生式系统, 双向
产生式系统 。
正向产生式系统是从初始状态出发, 朝着目标状态这个方向来使用规则, 即
正推的方式工作, 我们称这些规则为 F规则 。 反过来如果选取目标描述作为初始
综合数据库逆向进行求解, 即从目标状态出发, 反方向一步一步朝着初始状态
方向求解, 则称为逆向产生式系统 。 逆向应用的规则称为 B规则 。 若以双向搜索
方式去求解问题, 则称为双向产生式系统 。 这时必须把状态描述和目标描述合
并构成综合数据库, F规则只适用于状态描述部分, B规则只适用于目标描述部
分 。 这种类型的搜索, 其控制策略所使用的结束条件要表示成综合数据库中状
态描述部分与目标描述部分之间某种形式的匹配条件, 而且搜索时还要决定每
一段上要选用 F规则还是 B规则 。
2004.11.3 AI程序设计 61
第一部分:第 3章 AI编程基础
3.3.4 产生式系统的类型
3) 其他分类
除一般类型的产生式系统外, 还有两种特殊类型的产生式系统,
可交换的产生式系统:各规则的选用次序不重要 。
可分解的产生式系统:初始数据库可分解为若干独立部分, 并能用规
则单独对各部分进行处理, 终止条件也可以相应被分解 。
2004.11.3 AI程序设计 62
第一部分:第 3章 AI编程基础
3.3.5 产生式系统的搜索策略
我们知道, 搜索策略的主要任务是确定如何选取规则的方式 。 有两
种基本的方式:一种是不考虑给定问题所具有的特定知识, 系统根据
事先确定好的某种固定排序, 依次调用规则或随机调用规则, 这实际
上就是盲目搜索方法, 一般统称为无信息引导的搜索策略 。 另一种是
考虑问题领域可应用的知识, 动态地确定规则的排序, 优先调用较合
适的规则使用, 这就是通常称为启发式搜索策略或有信息引导的搜索
策略 。 到目前为止, AI领域中已提出许多具体的搜索方法 。 这里主要
讨论用不可撤回策略和回溯控制策略求解八数码问题的方法 。
2004.11.3 AI程序设计 63
第一部分:第 3章 AI编程基础
3.3.5.1 不可撤回的控制方法
对于不可撤回的控制方法, 首先要建立一个描述综合数据库变化的
函数, 如果这个函数具有单极值, 且这个极值对应的状态就是目标,
则不可撤回的控制策略就是选择使函数值发生最大增长变化的那条规
则来作用于综合数据库, 如此循环下去直到没有规则使函数值继续增
长, 这时函数值取得最大值, 满足结束条件 。
下面我们通过八数码游戏的例子加以说明 。 我们用, 不在位, 将牌
个数并取其负值作为状态描述的函数- W(n)(, 不在位, 将牌个数
是指当前状态与目标状态对应位置逐一比较后有差异的将牌总个数,
用 W(n)表示, 其中 n表示任一状态 ), 例如, 图 3.2中的初始状态,
其函数值是- 4,而对目标状态, 函数值是 0。 用这样定义的函数就能
计算出任一状态的函数值来 。
2004.11.3 AI程序设计 64
第一部分:第 3章 AI编程基础
3.3.5.1 不可撤回的控制方法
从初始状态出发, 看一看如何应用这个函数来选取规则 。 对初始状
态, 有三条可应用规则, 空格向左和空格向右这两条规则生成新的状
态, 其- W(n)均为- 5,空格向上所得新状态, 其- W(n)为- 3,比
较后看出这条规则可获得函数值的最大增长, 所以产生式系统就选取
这条规则来应用 。 按此一步一步进行下去, 直至产生式系统结束时就
可获得解 。 图 3.3表示出求解过程所出现的状态序列, 图中矩阵下面
的数字就是该状态的函数值 ( 或称爬山函数值 ) 。 从图中还可以看出,
沿着状态变化路径, 出现有函数值不增加的情况, 就是说出现了没有
一条合适的规则能使函数值增加, 这时就要任选一条函数值不减小的
规则来应用, 如果不存在这样的规则, 则过程停止 。
2004.11.3 AI程序设计 65
第一部分:第 3章 AI编程基础
3.3.5.1 不可撤回的控制方法
0123
567
48
321
567
428
31
567
428
31
567
42
318
3333
567
42
318
567
412
38
567
412
38
567
41
382
012334
567
41
382
567
48
321
567
481
32
567
481
32
567
41
382
57
461
382
???
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
????
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?????
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
结束下右上
左下右上左
结束右下左上上
图 3.3 八数码游戏各状态的爬山函数值
2004.11.3 AI程序设计 66
第一部分:第 3章 AI编程基础
3.3.5.1 不可撤回的控制方法
从图 3.3中所示的情况来看, 用不可撤回策略能找到一条通往目标的
路径 。 然而一般来说, 爬山函数会有多个局部极大值的情况, 这样一
来就会破坏爬山法找到真正的目标 。 例如初始状态和目标状态分别为
时, 任意一条可应用于初始状态的规则, 都会使- W(n)下降, 这相当
于初始状态的描述函数值处于局部极大值上, 搜索过程停止不前, 找
不到代表目标的全局极大值 。
?
?
?
?
?
?
?
?
?
?
368
47
521
?
?
?
?
?
?
?
?
?
?
568
47
321
2004.11.3 AI程序设计 67
第一部分:第 3章 AI编程基础
3.3.5.1 不可撤回的控制方法
根据以上讨论看出, 对 AI感兴趣的一些问题, 使用不可撤回的策略,
虽然其控制简单, 然而它不可能对任何状态总能选得最优的规则, 甚
至有时很难对给定问题构造出任何情况下都能通用的简单爬山函数
( 该爬山函数应该不具有多极值或, 平顶, 等情况 ) 。 因而不可撤回
的方式具有一定的局限性 。
2004.11.3 AI程序设计 68
第一部分:第 3章 AI编程基础
3.3.5.2 回溯控制方法
在问题求解过程中, 有时会发现用一条不适合的规则, 会阻挠或拖
延达到目标的过程, 在这种情况下, 需要有这样的控制策略:先试一
试某一条规则, 如果以后发现这条规则不合适, 则允许退回去, 另选
一条规则来试 。
使用回溯策略首要的问题是要研究在什么情况下应该回溯, 即回溯
条件;其次就是如何利用有用的知识进行规则排序, 以减少回溯次数 。
下面我们还用八数码问题来讨论回溯条件即搜索过程, 有关利用知识
选取规则的问题在下一节介绍 。 这里选择应用的规则采用事先确定的
固定排序依次选取 。 例如, 以左, 上, 右, 下这种顺序来选取规则 。
2004.11.3 AI程序设计 69
第一部分:第 3章 AI编程基础
3.3.5.2 回溯控制方法
对八数码问题, 回溯应发生在以下三种情况,① 新生成的状态在通向
目标状态的路径上已经出现过; ② 从初始状态开始, 应用的规则数目达
到所规定的数目之后还未找到目标状态 ( 这一组规则的数目实际上就是
搜索深度范围所规定的 ) ; ③ 对当前状态, 再没有可应用的规则 。
图 3.4表示出回溯策略应用于八数码游戏时的一部分搜索图, 这里规
定搜索的深度到第 6层, 即用了 6条规则后仍没有找到目标就要回溯到上
一层 。 显然 6层以内的所有路径都会被搜索到, 因此对这个问题一定能
找到解 。 然而对一般情况, 深度设置太浅时, 有可能找不到解, 设置太
深有可能导致回溯次数聚增, 因而应根据实际情况来规定搜索范围, 先
设置适中的深度搜索, 失败后再逐步加深 。
2004.11.3 AI程序设计 70
第一部分:第 3章 AI编程基础
未找到解,回溯到五
条规则用了同四,回溯到五
六六六
左下左同三,回溯到四
(左、上、右、下)五
回溯到四
用完所有规则
(左、下)五五
下右左
(左、右、下)四

(右、下)三

(上、右、下)二

(上、右)一

(左、上、右)零
6
571
42
368
571
62
438
571
462
38
121
571
42
368
571
462
38
571
462
38
31
571
462
38
571
462
38
571
46
382
57
461
382
57
461
382
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
??????
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?????
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
图 3.4 八数码游戏回溯控制方式
2004.11.3 AI程序设计 71
第一部分:第 3章 AI编程基础
3.3.5.2 回溯控制方法
回溯过程是一种可试探的方法, 从形式上看, 不论是否存在对选择规
则有用的知识, 都可以采用这种策略 。 即如果没有有用的知识来引导规
则选取, 那么规则可按任意方式 ( 固定排序或随机 ) 选取;如果有好的
选择规则的知识可用, 那么用这种知识来引导规则的选取, 就会减少盲
目性, 降低回溯次数, 甚至不回溯就能找到解, 总之一般来说有利于提
高效率 。 此外由于引入回溯机理, 可以避免陷入局部极大值的情况, 继
续寻找其他达到目标的路径 。
2004.11.3 AI程序设计 72
第一部分:第 3章 AI编程基础
3.3.6 两种典型的产生式系统
1) 回溯式产生式系统
2) 可分解的产生式系统
2004.11.3 AI程序设计 73
第一部分:第 3章 AI编程基础
3.3.6.1 回溯式产生式系统
对于搜索量小的问题, 回溯式策略往往是完备的和有效的, 它有
易于实现, 占用存储量小等优点 。 下面来说明这种产生式系统的工作
原理 。 整个系统可用一个递归过程 BACKTRACK来实现 。 它是一种局
部试探性搜索系统 。
给定一个待求解的问题后, 我们首先利用知识表示技术, 建立起
该问题的状态描述 ( 全局数据库 DATA), 和操作描述 ( 该问题的规
则集 ) 。 其他各种知识反映在下述谓词和函数中,
2004.11.3 AI程序设计 74
第一部分:第 3章 AI编程基础
3.3.6.1 回溯式产生式系统
TEAM(DATA),判 DATA是否满足终止条件的谓词;
DEADEND(DATA),判 DATA是否满足失败条件的谓词;
APPRULES(DATA),选取可作用在 DATA上的所有操作并排序的函数;
R(DATA),求操作 R作用在 DATA上面所产生的新数据库的函数 。
此外还有几个与符号处理有关的谓词和函数,
NULL(RULES),判可用规则表空否的谓词, 空表用 NIL表示;
FIRST(RULES),取可用规则表中第一个元素的函数;
TAIL(RULES),在可用规则表中除去第一元素的函数;
CONS(R PATH),把元素 R加入到路径表 ( PATH) 的最前面的函数 。
2004.11.3 AI程序设计 75
第一部分:第 3章 AI编程基础
3.3.6.1 回溯式产生式系统
有了这些函数和谓词后, 就可以建立下述递归过程 BACKTRACK。
递归过程 BACKTRACK(DATA)
步 1 if TERM(DATA),return NIL( 按成功返回 ) ;
步 2 if DEADEND(DATA),return FAIL( 按失败返回 ) ;
步 3 RULES← APPRULES(DATA);
步 4 LOOP,if NULL(RULES),return FAIL;
步 5 R?FIRST(RULES);
步 6 RULES← TALL(RULES);
步 7 RDATA← R(DATA);
步 8 PATH← BACKTRACK(RDATA);
步 9 if PATH=FAIL,go LOOP(重选其他规则 );
步 10 return CONS(R PATH)。
2004.11.3 AI程序设计 76
第一部分:第 3章 AI编程基础
3.3.6.1 回溯式产生式系统
上述递归过程在步 8处逐层深入下去, 直到 DATA变成步 1或步 2可以判
断的本原问题为止 。 步 10和步 8可以引导过程逐层回升, 通过步 10建立
起来的规则序列就是问题的解 。
本过程有可能永不终止, 为克服这一缺点, 可以,① 采用递归深度限
制; ② 记忆一部分已产生过的数据库, 防止死循环 。 采用以上步骤, 本
过程可以成为一种算法 。
为提高效率, 在步 3中可以运用各种启发信息来安排规则的先后顺序 。
2004.11.3 AI程序设计 77
第一部分:第 3章 AI编程基础
3.3.6.2 可分解的产生式系统
可分解的产生式系统是求解与 /或图问题的系统, 它也是一种特殊的
产生式系统, 其特点是初始数据库可以分解为一些相互独立的部分, 并
能用规则对各部分进行处理, 终止条件也可以相应被分解 。 可分解的产
生式系统可用下述基本过程来描述 。
给定一个待求解的问题后, 我们首先利用知识表示技术, 建立起该问
题的状态描述 ( 全局数据库 DATA), 和操作描述 ( 该问题的规则集 ) 。
其他各种知识反映在下述谓词和函数中,
2004.11.3 AI程序设计 78
第一部分:第 3章 AI编程基础
3.3.6.2 可分解的产生式系统
过程 SPLIT
步 1 DATA?初始数据库;
步 2 {Di}?DATA的分解式 (现在单独的 Di可以被看作是独立的
数据库 );
步 3 until 所有的 {Di}满足终止条件为止, do
步 4 begin
步 5 从不满足终止条件的状态集合 {Di}中选出 D*;
步 6 从 {Di}中抹去 D*;
步 7 从规则集选出可以作用 D*上的一个规则 R;
步 8 D?R作用到 D*上所得的结果;
步 9 {di}?D的分解式;
步 10 把 {di}合并到 {Di}中去;
步 11 end,
在 SPLIT系统中,控
制策略在步 5和步 7发
挥作用:在步 5,它
决定从 {Di}中选出
D*的最好次序;在步
7,它决定选出作用
在 D*上最好规则 R。
但根据步 3的要求,
{Di}中的全部元素必
须选到。
2004.11.3 AI程序设计 79
第一部分:第 3章 AI编程基础
3.3.6.2 可分解的产生式系统
【 例 】 有一个产生式系统, 它的初始数据库为 (C,B,Z),产生式规则为,
R1,C=>D,L
R2,C=>B,M
R3,B=>M,M
R4,Z=>B,B,M
终止条件为:数据库中的元素为 M。
用图搜索产生式系统可以解决这个问题, 但它会产生许多等价的解, 造成很大
浪费 ( 见图 3.6), 如果用可分解的产生式系统来求解这个问题, 即把初始数
据库分解为三个独立的子库 (C),(B)和 (Z),单独对它们使用规则, 直至全是
M为止, 那么求解过程会简单得多 (见图 3.7)。 它形成的是一个典型的与 /或图,
其中的任一个解树都是产生式系统的解 。
2004.11.3 AI程序设计 80
第一部分:第 3章 AI编程基础
3.3.6.2 可分解的产生式系统
图 3.6 用图搜索产生式系统求解
R3
R3
R4 R3
R3 R3
R4 × R3 R1 R2 R3 R1 R2 R4
R3 R
4 R2
R1
( M,M,M,M,M,M,M,M,M,M)
(M,M,M,M,M,B,B,M)
( M,M,M,M,M,M,M,B,M)
( C,B,Z)
( C,M,M,Z) ( C,B,B,B,Z) ( B,M,B,Z) ( D,L,,B,Z)
( B,M,B,B,B,M)
(M,M,M,B,B,B,M)
(M,M,M,B,Z)
( M,M,M,M,M,Z)
2004.11.3 AI程序设计 81
第一部分:第 3章 AI编程基础
3.3.6.2 可分解的产生式系统
( C,B,Z )
( C ) ( B ) ( Z )
( D,L ) ( B,M ) ( M,M)
D
( B,B,M )
L B M M M B M B
( M,M ) ( M,M ) ( M,M )
M M M M M M
图 3.7 可用分解的产生式系统求解
2004.11.3 AI程序设计 82
第一部分:第 3章 AI编程基础
3.4 专家系统
专家系统 (ES)的研究致力于在具体的专门领域内建立高性能的程序,
其实质就是把与领域问题求解相关的知识有机地结合到程序设计之中,
使程序能够像人类专家一样进行推理, 学习, 解释, 从而实现问题的求
解 。 因而 ES的内核通常是为一定类型的知识表示, 如规则, 逻辑等而设
计的;并且 ES中知识表示的方式也直接影响着 ES的开发, 效率, 速度及
其维护 。
ES是 AI的一个重要分支 。 自 1968年 Feigenbaum等人研制成功第一个专家
系统 DENDRAL以来, ES技术已经获得了迅速发展, 广泛地应用于医疗诊
断, 图像处理, 石油化工, 地质勘探, 金融决策, 实时监控, 分子遗传
工程, 教学和军事等多种领域中, 促进了人工智能基本理论和基本技术
的研究与发展 。 目前, 它已成为 AI中一个最活跃, 最有成效的研究领域 。
2004.11.3 AI程序设计 83
第一部分:第 3章 AI编程基础
3.4 专家系统
3.4.1 专家系统的概念与组成
3.4.2 专家系统的类型
3.4.3 专家系统的特点
3.4.4 专家系统的开发工具
3.4.5 新一代专家系统研究
2004.11.3 AI程序设计 84
第一部分:第 3章 AI编程基础
3.4.1 专家系统的概念与组成
对于专家系统,至今没有一个确切的定义,不过总结各种陈述可
以得出,专家系统就是一种在相关领域中具有专家水平解题能力的、
包含着知识和推理的智能程序系统。但这种程序与传统的, 应用程序,
有本质的区别,在专家系统中,求解问题的知识已不再隐含在程序和
数据结构之中,而是单独构成一个知识库,即传统的, 数据结构 +算
法 =程序, 的应用程序模式发生了变化,使之成为, 知识 +推理 =系统,
的模式。它能运用领域专家多年积累的经验与专门知识,模拟人类专
家的思维过程,求解需要专家才能解决的困难问题。其一般结构如图
3.8所示。
2004.11.3 AI程序设计 85
第一部分:第 3章 AI编程基础
3.4.1 专家系统的概念与组成
人 机 接 口
解释机构 推理机 知识获取机构
数据库及其
管理系统
知识库及其
管理系统
用户
领域专家
知识工程师
图 3.8 专家系统的一般结构
2004.11.3 AI程序设计 86
第一部分:第 3章 AI编程基础
3.4.1 专家系统的概念与组成
1) 知识获取机构
知识的获取问题,很多资料上都称知识获取是构造 ES的, 瓶颈, 。
实际上,它是成功构造专家系统中非常重要的、也是非常困难的一
部分,是 ES研究的关键。它的任务是把专家对书本上的知识、客观
世界的认识和理解进行选择、抽取、汇集、分类和组织,将它们转
化为计算机可以利用的形式。对于大的复杂系统,很好完成这一任
务非常困难。
2004.11.3 AI程序设计 87
第一部分:第 3章 AI编程基础
3.4.1 专家系统的概念与组成
2) 知识库及其管理系统
知识库主要用来存储某领域专家系统的专门知识, 为了建立知识
库, 要解决知识获取和知识表示问题 。 知识获取涉及知识工程师如
何从专家那里获得专门知识的问题;知识表示则要解决如何用计算
机能够理解的形式表达并存储知识的问题 。
2004.11.3 AI程序设计 88
第一部分:第 3章 AI编程基础
3.4.1 专家系统的概念与组成
3) 数据库及其管理系统
这里的数据库用于存储领域或问题的初始数据和推理过程中得到
的中间数据 (信息 ),即被处理对象的一些当前事实 。 数据库又称为
,黑板,,它是由数据库管理系统进行管理的, 这与一般程序设计
中的数据库管理没有什么区别, 只是应使数据的表示方法与知识的
表示方法保持一致 。
需注意的是, 知识库与传统的数据库不一样:数据库一般是被动
的, 而知识库则更有创造性;数据库中的事实是固定的, 而知识库
总是不断补充新的知识 。
2004.11.3 AI程序设计 89
第一部分:第 3章 AI编程基础
3.4.1 专家系统的概念与组成
4) 推理机
推理机是专家系统的, 思维, 机构, 是构成专家系统的核心部分 。
它的功能是根据一定的推理策略从知识库中选取有关知识, 对用户提
供的证据进行推理, 直到得出相应的结论为止 。 推理机包括推理方法
和控制策略两部分 。
推理方法, 推理分精确与不精确两种 。
精确推理指把领域知识表示成必然的因果关系, 推理的结论或是肯
定的, 或是否定的 。
不精确推理指在, 公理, ( 如领域专家给出的规则强度和用户给出
的原始证据的不确定性 ) 的基础上, 定义一组函数, 求出, 定理,
( 非原始证据的命题 ) 的不确定性度量 。
2004.11.3 AI程序设计 90
第一部分:第 3章 AI编程基础
3.4.1 专家系统的概念与组成
4) 推理机
专家系统中主要使用不精确推理, 在这种推理中根据的事实可能是不
充分的, 依据的知识可能是不完整的经验性知识, 这导致了这种推理要
比精确推理复杂得多 。
常用的不精确推理模型有,
① 确定性理论 ;② 主观 Bayes方法
③ 可能性理论 ;④ 证据理论
⑤ 模糊逻辑
这些方法的基本思想是给各个不确定的知识某种确定性因子 。 在推理
过程中, 依某种算法计算各中间结果的确定因子, 再沿着推理链传播这
种不确定性, 直到到达结论 。 当结论的确定性因子超过某个阈值后, 结
论便可成立 。
2004.11.3 AI程序设计 91
第一部分:第 3章 AI编程基础
3.4.2 专家系统的类型
按照专家系统所求解问题的性质,可把它分为下列几种类型。
1.解释专家系统
2.预测专家系统
3.诊断专家系统
4.设计专家系统
5.规划专家系统
6.监视专家系统
7.控制专家系统
8.调试专家系统
9.教学专家系统
10.修理专家系统
2004.11.3 AI程序设计 92
第一部分:第 3章 AI编程基础
3.4.2 专家系统的类型
1.解释专家系统
解释专家系统的任务是通过对已知信息和数据的分析与解释, 确定
它们的含义 。
这样的专家系统具有下列特点,
·系统处理的数据量很大, 且往往是不准确的, 有错误的或不完全的 。
·系统能够从不完全的信息中得出解释, 并能对数据做出某些假设 。
解释专家系统的例子有染色体分类, PROSPECTOR地质勘探数据解释和
丘陵找水等实用系统 。
2004.11.3 AI程序设计 93
第一部分:第 3章 AI编程基础
3.4.2 专家系统的类型
2.预测专家系统
预测专家系统的任务是通过对过去和现在已知状况的分析, 推断未
来可能发生的动作 。 预测专家系统具有下列特点,
·系统处理的数据随时间变化, 而且可能是不准确和不完全的 。
·系统需要有适应时间变化的动态模型, 能够从不完全和不准确的
信息中得出预报, 并达到快速响应的要求 。
预测专家系统的例子有气象预报、军事预测、人口预测、交通预测、
经济预测等。例如,恶劣气候 (包括暴雨、飓风、冰雹等 )预报、战场
前景预测和农作物虫害预报等专家系统。
2004.11.3 AI程序设计 94
第一部分:第 3章 AI编程基础
3.4.2 专家系统的类型
3.诊断专家系统
诊断专家系统的任务是根据观察到的情况 (数据 )来推断出某个对象
机能失常 (即故障 )的原因 。 诊断专家系统具有下列特点,
·能够了解被诊断对象或客体各组成部分的特性以及它们之间的联系 。
·能够区分一种现象及其所掩盖的另一种现象 。
·能够向用户提出测量的数据, 并从不确切信息中得出尽可能正确的
诊断 。
诊断专家系统的例子特别多, 有医疗诊断, 电子机械和软件故障诊
断以及材料失效诊断等 。 用于抗生素治疗的 MYCIN,肝功能检验的 PUFF、
青光眼治疗的 CASNET,内科的 INTERNIST-I和血清蛋白诊断等医疗诊断
专家系统, IBM公司的计算机故障诊断, 火电厂锅炉给水系统故障检测
与诊断系统, 雷达故障诊断系统等都是国内外颇有名气的实例 。
2004.11.3 AI程序设计 95
第一部分:第 3章 AI编程基础
3.4.2 专家系统的类型
4.设计专家系统
设计专家系统的任务是根据设计要求, 求出满足设计问题约束的
目标配置 。 设计专家系统具有如下特点,
·善于从多方面的约束中得到符合要求的设计结果 。
·系统需要检索较大的可能解空间 。
·善于分析各种子问题, 并处理好子问题间的相互作用 。
·能够试验性地构造出可能设计, 并易于对所得设计方案进行修改 。
·能够使用已被证明是正确的设计来解释当前的 (新的 )设计 。
设计专家系统涉及电路 (如数字电路和集成电路 )设计、土木建筑工
程设计、机械产品设计和生产工艺设计等。比较有影响的专家设计系
统有浙江大学的花布立体感图案设计和花布印染专家系统、大规模集
成电路设计专家系统等。
2004.11.3 AI程序设计 96
第一部分:第 3章 AI编程基础
3.4.2 专家系统的类型
5.规划专家系统
规划专家系统的任务在于寻找出某个能够达到给定目标的动作序列
或步骤 。 规划专家系统的特点如下;
·所要规划的目标可能是动态的或静态的, 因而需要对未来动作做
出预测 。
·所涉及的问题可能很复杂, 要求系统能抓住重点, 处理好各子目
标间的关系和不确定的数据信息, 并通过试验性动作得出可行规划 。
规划专家系统可用于机器人规划、交通运输调度、工程项目论证、
通信与军事指挥以及优良作物施肥方案规划等。比较典型的规划专家
系统的例子有军事指挥调度系统,ROPES机器人规划专家系统、汽车和
火车运行调度专家系统以及小麦和水稻施肥专家系统。
2004.11.3 AI程序设计 97
第一部分:第 3章 AI编程基础
3.4.2 专家系统的类型
6.监视专家系统
监视专家系统的任务在于对系统, 对象或过程的行为进行不断观察,
并把观察到的行为与其应当具有的行为进行比较, 以发现异常情况,
发出警报 。 监视专家系统具有下列特点,
·系统应具有快速反应能力, 在造成事故之前及时发出警报 。
·系统发出的警报要有很高的准确性 。 在需要发出警报时发警报,
在不需要发出警报时不得轻易发警报 (假警报 )。
·系统能够随时间和条件的变化而动态地处理其输入信息 。
监视专家系统可用于核电站的安全监视、防空监视与警报、国家财
政的监控、传染病疫情监视及农作物病虫害监视与警报等。粘虫测报
专家系统是监视专家系统的一个实例 。
2004.11.3 AI程序设计 98
第一部分:第 3章 AI编程基础
3.4.2 专家系统的类型
7.控制专家系统
控制专家系统的任务是自适应地管理一个受控对象或客体的全面行为,
使之满足预期的要求 。 控制专家系统的特点为:能够解释当前情况,
预测未来可能发生的情况, 诊断可能发生的问题及其原因, 不断修正
计划, 并控制计划的执行 。 也就是说, 控制专家系统具有解释, 预报,
诊断, 规划和执行等多种功能 。
空中交通管制, 商业管理, 自主机器人控制, 作战管理, 生产过程
控制和生产质量控制等都是控制专家系统的潜在应用方面 。
2004.11.3 AI程序设计 99
第一部分:第 3章 AI编程基础
3.4.2 专家系统的类型
8.调试专家系统
调试专家系统的任务是对失灵的对象给出处理意见和方法 。
调试专家系统的特点是同时具有规划, 设计, 预报和诊断等专家系
统的功能 。
调试专家系统可用于新产品或新系统的调试,也可用于维修站进行
被修设备的调整、测量与试验。在这方面的实例还很少见。
2004.11.3 AI程序设计 100
第一部分:第 3章 AI编程基础
3.4.2 专家系统的类型
9.教学专家系统
教学专家系统的任务是根据学生的特点, 弱点和基础知识, 以最适当
的教案和教学方法,对学生进行教学和辅导 。
教学专家系统的特点为,
·同时具有诊断和调试等功能 。
·具有良好的人机界面 。
已经开发和应用的教学专家系统有美国麻省理工学院的 MACSYMA符号
积分系统, 我国一些大学开发的计算机程序设计语言和物理智能计算
机辅助教学系统以及机器人语言训练专家系统等 。
2004.11.3 AI程序设计 101
第一部分:第 3章 AI编程基础
3.4.2 专家系统的类型
10.修理专家系统
修理专家系统的任务是对发生故障的对象 (系统或设备 )进行处理, 使
其恢复正常 。 修理专家系统具有诊断, 调试, 计划和执行等功能 。
美国贝尔实验室的 ACI电话和有线电视维护修理系统是修理专家系统
的一个应用实例 。 此外, 还有决策专家系统和咨询专家系统等 。
2004.11.3 AI程序设计 102
第一部分:第 3章 AI编程基础
3.4.3 专家系统的特点
我们已经介绍过各类专家系统的特点。在总体上,
专家系统还具有下列 3个共同的特点,
1.启发性
2.透明性
3.灵活性
2004.11.3 AI程序设计 103
第一部分:第 3章 AI编程基础
3.4.3 专家系统的特点
启发性。 专家系统能运用专家的知识与经验进行推理、判断和决策。世界上大
部分工作和知识都是非数学性的,只有一小部分人类活动是以数学公式为核心
的。即使是化学和物理学科,大部分也是靠推理进行思考的;对于生物学、大
部分医学等情况也是这样。企业管理的思考几乎全靠符号推理,而不是数值计
算。
透明性 。 专家系统能够解释本身的推理过程和回答用户提出的问题, 以便让用
户能够了解推理过程, 提高对专家系统的信赖感 。 例如, 一个医疗诊断专家系
统诊断某病人为肺炎, 而且必需用某种抗生素治疗, 那么, 这一专家系统将会
向病人解释为什么确诊他患肺炎, 而且必须用某种抗生素治疗, 就像一位医疗
专家对病人详细解释病情一样 。
灵活性。 专家系统能不断地增长知识,修改原有知识,不断更新。由于这一特
点,使得专家系统具有十分广泛的应用领域。
2004.11.3 AI程序设计 104
第一部分:第 3章 AI编程基础
3.4.3 专家系统的特点
优点,
·专家系统能够高效率, 准确, 周到, 迅速和不知疲倦地进行工作 。
·专家系统解决实际问题时不受周围环境的影响, 也不可能遗漏忘记 。
·可以使专家的专长不受时间和空间的限制, 以便推广珍贵和稀缺的专
家知识 。
·专家系统能促进各领域的发展, 它使各领域专家的专业知识和经验得
到总结并精炼, 能够广泛有力地传播专家的知识, 经验和能力 。
·专家系统能汇集多领域专家的知识和经验以及他们协作解决重大问题
的能力, 所以它拥有更渊博的知识, 更丰富的经验和更强的工作能力 。
·专家系统的研制和应用, 具有巨大的经济效益和社会效益 。
·军事专家系统的水平是一个国家国防现代化的重要标志之一 。
· 研究专家系统能够促进整个科学技术的发展。
2004.11.3 AI程序设计 105
第一部分:第 3章 AI编程基础
3.4.4 专家系统的开发工具
由于专家系统具有十分广泛的应用领域, 而每个系统一般只具有某
个领域专家的知识 。 如果在建造每个具体的专家系统时, 一切都从头
开始, 就必然会降低工作效率 。 人们已经研制出一些比较通用的工具,
作为设计和开发专家系统的辅助手段和环境, 以求提高专家系统的开
发效率, 质量和自动化水平 。 这种开发工具或环境, 就称为专家系统
开发工具 。
现有的专家系统开发工具, 大致分为下面几类,
1) 面向 AI的通用程序设计语言。
2) 通用知识表示语言。
3) 专家系统的外壳,有的称为骨架。
4) 通用化专家系统构造工具也称组合式专家系统研制工具。
2004.11.3 AI程序设计 106
第一部分:第 3章 AI编程基础
3.4.4 专家系统的开发工具
1) 面向 AI的通用程序设计语言, 如 PROLOG,LISP,CLISP等 。 由于它们可以
将符号直接写在程序中, 因此能够以接近自然语言的方式表达知识和规则以
及推理过程 。 这些语言还可以直接生成新知识, 因而在建立专家系统时特别
有效 。
2) 通用知识表示语言 。 这是针对知识工程发展起来的程序设计语言, 这些语
言并不与具体的体系和范例有紧密联系, 也不局限于实现任一特殊的控制策
略, 因而便于实现较广泛的问题 。
由于不同的应用目的知识类型不同, 其知识表达方式也不同, 所以开发了若
干流行的知识表示语言 。 如产生式语言系统 OPS-5,基于框架理论的知识表示
语言 PLL,KRL,UNITS,还有 LOOPS,它集中了 4种编程方式, 即面向目标, 面
向数据, 面向规则和它们组合在面向过程的语言 INTERLISP-D程序设计环境下,
允许设计者选择最合适其目的的那种方式 。 LOOPS还包括用于创建和调整知识
库系统的编程环境 。
2004.11.3 AI程序设计 107
第一部分:第 3章 AI编程基础
3.4.4 专家系统的开发工具
3) 专家系统的外壳, 有的称为骨架 。 这些系统通常提供知识获取模
块, 推理机制, 解释功能等 。 只要加上领域专门知识就可以构成一个
专家系统 。 这些骨架有的是从原有的专家系统中演变过来的, 因此,
它们的控制策略局限于原有系统提供的一些控制策略 。 这类系统典型
的代表有 EMYCIN,KAS和 EXPERT等 。
4) 通用化专家系统构造工具也称组合式专家系统研制工具 。 它向用
户提供多种知识表示方法和多个推理控制机构, 使用户可以选择和设
计各种组成部件, 非常方便地组合, 设计自己所需的专家系统, 该系
统的典型代表是 AGE等 。
2004.11.3 AI程序设计 108
第一部分:第 3章 AI编程基础
3.4.5 新一代专家系统研究
自从世界上第一个专家系统 DENDRAL问世以来, 专家系统已经走过了 30
余年的发展历程 。 从技术角度看, 基于知识库 ( 特别是规则库 ) 的传统
专家系统已趋于成熟, 但仍存在不少问题, 诸如知识获取问题, 知识的
深层化问题, 不确定性推理问题, 系统的优化和发展问题, 人机界面问
题, 同其他应用系统的融合与接口问题等等, 都还未得到满意解决 。 为
此, 人们就针对这些问题, 对专家系统作进一步研究, 引入了多种新思
想, 新技术, 提出了形形色色的所谓新一代专家系统 。
2004.11.3 AI程序设计 109
第一部分:第 3章 AI编程基础
3.4.5 新一代专家系统研究
1.新一代专家系统的特征,
(1) 并行分布式处理;
(2) 多专家协同工作;
(3) 高级语言和知识语言描述;
(4) 具有学习功能;
(5) 引人新的推理机制;
(6) 具有纠错和自完善能力;
(7) 先进的智能人机接口 。
2004.11.3 AI程序设计 110
第一部分:第 3章 AI编程基础
3.4.5 新一代专家系统研究
2.分布式专家系统
这种专家系统具有分布处理的特征, 其目的在于把一个专家系统的功
能经分解以后分布到各个处理机上去并行工作, 从而在总体上提高系统
的处理效率 。 为设计一个分布式专家系统, 一般需要解决下述问题 。
(1)功能分布:把系统功能分解为多个子功能, 并均衡地分配到各个处
理节点上 。 每个节点上实现一个或两个子功能, 各节点合在一起作为一
个整体完成一个完整的任务 。
(2)知识分布:根据功能分布的情况, 把有关知识合理划分后分配到各
个处理节点上 。
(3)接口设计:各个部分之间要相互独立, 接口要易于通信, 同步 。
2004.11.3 AI程序设计 111
第一部分:第 3章 AI编程基础
3.4.5 新一代专家系统研究
2.分布式专家系统
(4)系统结构:系统结构一方面与问题本身的性质有关, 另一方面与
硬件环境有关 。
(5)驱动方式:系统各模块间的驱动方式有以下几种:控制驱动, 即
当需要某个模块工作时, 就直接将控制转到该模块, 或将它作为一个过
程直接进行调用;数据驱动, 即当一个模块的输人数据齐备后, 该模块
就自动启动工作;要求驱动, 也称为目的驱动, 即从最顶层的目标开始
逐层驱动下层的子目标;事件驱动, 即当且仅当一个模块的相应事件集
合中的所有事件都已经发生时, 才驱动该模块开始工作 。
2004.11.3 AI程序设计 112
第一部分:第 3章 AI编程基础
3.4.5 新一代专家系统研究
3.协同式专家系统
当前现存的专家系统一般为单个专家的系统, 其解决问题的领域很窄,
很难获得满意的应用 。 协同式专家系统是克服单专家系统局限性的一个
重要途径 。 协同式专家系统也称为, 群专家系统,, 是一种能综合若干
个相近领域或一个领域的多个方面的分专家系统相互协作, 共同解决一
个更广领域问题的专家系统 。
协同式专家系统和分布式专家系统有一定的共性, 它们都会涉及到多个
分专家系统 。 但是, 分布式强调的是处理的分布和知识的分布, 它要求
系统必须在多个处理机上运行;而协调式强调的是分系统之间的协同合
作, 各分专家系统也可以在同一个处理机上运行 。 要设计协同式专家系
统, 一般需要解决以下问题 。
2004.11.3 AI程序设计 113
第一部分:第 3章 AI编程基础
3.4.5 新一代专家系统研究
3.协同式专家系统
(1) 任务的分解:根据领域知识, 将确定的总任务合理地划分为若干个子任务
( 各个子任务间允许有一定的重叠 ), 每个子任务对应着一个分专家系统 。
(2) 公共知识的导出:把各子任务所需知识的公共部分分离出来形成一个公共
知识库, 供各分专家系统共享 。
(3)“讨论, 方式:用, 黑板, ( 即设在内存的一个可供各分专家系统随机存取
的存储区 ) 作为各分专家系统进行讨论的园地 。
(4) 裁决问题:所谓裁决问题是指如何由多个分专家系统来决定某个问题 。 其
解决办法与问题的性质有关, 若为选择问题, 可采用少数服从多数的方法;若
为评分问题, 则可采用加权平均法等办法;若为互补问题, 则可采用互相配合
的方法 。
(5) 驱动方式:这个问题与分布式专家系统中所采用的驱动方式基本上是一样
的 。 在分布式专家系统中介绍的驱动方式对协同式专家系统同样可用 。
2004.11.3 AI程序设计 114
第一部分:第 3章 AI编程基础
3.4.5 新一代专家系统研究
4,深层知识专家系统
即不仅具有专家经验性表层知识, 而且具有深层次的专业知识 。 这样,
系统的智能就更强了, 也更接近于专家水平了 。 例如一个故障诊断专家
系统, 如果不仅有专家的经验知识, 而且也有设备本身的原理性知识,
那么, 对于故障判断的准确性将会进一步提高 。 要做到这一点, 这里存
在一个如何把专家知识与领域知识融合的问题 。
2004.11.3 AI程序设计 115
第一部分:第 3章 AI编程基础
3.4.5 新一代专家系统研究
5,模糊专家系统
主要特点是通过模糊推理解决问题的专家系统 。 这种系统善于解决那些
含有模糊性数据, 信息或知识的复杂问题, 但也可以通过把精确数据或
信息模糊化, 然后通过模糊推理进行处理的复杂问题 。
这里所说的模糊推理包括基于模糊规则的串行演绎推理和基于模糊集并
行计算 ( 即模糊关系合成 ) 的推理 。 对于后一种模糊推理, 其模糊关系
矩阵也就相当于通常的知识库, 模糊矩阵的运算方法也就相当于通常的
推理机 。
2004.11.3 AI程序设计 116
第一部分:第 3章 AI编程基础
3.4.5 新一代专家系统研究
6,神经网络专家系统
利用神经网络的自学习, 自适应, 分布存储, 联想记忆, 并行处理, 以
及鲁棒性和容错性强等一系列特点, 用神经网络来实现专家系统的功能
模块 。
神经网络专家系统的建造过程是:先根据问题的规模, 构造一个神经网
络, 再用专家提供的典型样本规则, 对网络进行训练, 然后利用学成的
网络, 对输入数据进行处理, 便得到所期望的输出 。
可以看出, 这种系统把知识库融入网络之中, 而推理过程就是沿着网络
的计算过程 。 而基于神经网络的这种推理, 实际是一种并行推理 。
2004.11.3 AI程序设计 117
第一部分:第 3章 AI编程基础
3.4.5 新一代专家系统研究
6,神经网络专家系统
这种系统实际上是自学习的, 它将知识获取和知识利用溶为一体 。 而且
它所获得的知识往往还高于专家知识, 因为它所获得的知识是从专家提
供的特殊知识中归纳出的一般知识 。
这种专家系统还有一个重要特点, 即它具有很好的鲁棒性和容错性 。
研究发现, 模糊技术与神经网络存在某种等价和互补关系 。 于是, 人们
就将二者结合起来, 构造模糊 —神经系统或神经 —模糊系统 。 从而开辟了
将模糊技术与神经网络技术相结合, 将模糊系统与神经网络系统相融合
的新方向 。
2004.11.3 AI程序设计 118
第一部分:第 3章 AI编程基础
本章小结
? 本章介绍人工智能编程的基础知识, 内容包括命题逻辑, 一阶谓词逻辑, 产生
式系统, 专家系统等 。
? 命题逻辑, 主要介绍了命题的概念, 命题联接词, 合式公式, 真值指派, 等价
与蕴含, 命题定律, 析取范式与合取范式, 命题逻辑的推论规则以及命题逻辑
的局限性 。
? 一阶谓词逻辑, 主要介绍谓词与量词的概念, 谓词逻辑的合式公式, 谓词公式
中的自由变元与约束变元, 谓词公式的解释, 含有量词的等价式和蕴含式, 谓
词逻辑中的推论规则, 谓词公式的范式与斯柯林标准形 。
? 产生式系统, 主要介绍产生式系统的基本组成, 基本类型, 用产生式系统进行
问题建模的方法及求解问题的过程, 并针对八数码游戏问题, 详细介绍了不可
回撤的搜索策略与回溯控制方法 。 最后介绍了两种典型的系统, 回溯式产生式
系统和可分解的产生式系统 。
? 专家系统, 主要介绍了专家系统的概念与组成, 专家系统的类型, 专家系统的
一般特点与优, 专家系统开发工具, 以及新一代专家系统展望 。
2004.11.3 AI程序设计 119
第一部分:第 3章 AI编程基础
习 题
1,试构造下列公式的真值表, 指出其中的永真式, 永假式 。
① Q∧ (P→ Q) → P

2,用命题定律和谓词定律证明下列等价式 。




3,试求下列公式的主析取范式和主合取范式 。


? ?? ? ? ? ? ?~ P Q R P Q P R? ? ? ? ? ?
? ? ? ? ? ?~~P Q P Q P Q? ? ? ? ?
? ? ? ?~P Q P P P Q? ? ? ? ?
? ? ? ? ? ? ? ?( ) ( ),~ ( ) ( )x P x Q x x P x x Q x? ? ? ? ?
? ? ? ? ? ? ? ?( ) ( ) ( ) ( )x P x x Q x x P x Q x? ? ? ? ? ?
? ? ? ?~~P Q R Q R? ? ? ?
? ? ? ?~ ( ) ( )P Q R P Q R? ? ? ? ?
2004.11.3 AI程序设计 120
第一部分:第 3章 AI编程基础
习 题
4,已知公理集为 P,(P∧ Q)→ R,(S∨ T)→ Q,T,求证 R。
5,化下列公式成子句形式 。


6,对猴子摘香蕉问题, 给出产生式系统描述 。
一个房间里, 天花板上挂有一串香蕉, 有一只猴子可在房间里任意活动
( 到处走动, 推移箱子, 攀登箱子等 ) 。 设房间里还有一只可被猴子移
动的箱子, 且猴子登上箱子时才能摘到香蕉, 问猴子在某一状态下 ( 设
猴子位置为 a,箱子位置为 b,香蕉位置为 c), 如何行动可摘取到香蕉 。
? ?? ?? ? ? ? ? ?~ ( ) ~ ( )x P x x P x? ? ?
? ? ? ? ? ? ? ? ? ?? ?? ?( ) ( ) ( (,) ) ~ (,) ( )~ P x y P y P f x y y Q x y P yx ? ? ? ? ? ??
2004.11.3 AI程序设计 121
第一部分:第 3章 AI编程基础
习 题
7.用产生式系统求解六皇后问题:在 6× 6的方格棋盘上,放置六个皇后,
使他们中间的任何两个人都不在同一行,同一列及同一对角线上。
2004.11.3 AI程序设计 122
第一部分:第 3章 AI编程基础
习 题
8,什么是专家系统? 它有哪些基本特征?
9,专家系统有哪几种分类方法? 它们都可以分为哪几种主要类型?
10,专家系统有哪些基本部分? 每一部分的主要功能是什么?
11,知识获取的主要任务是什么? 为什么说它是专家系统建造的
,瓶颈, 问题?
12,专家系统建造的原则是什么? 建造一个专家系统要经历哪几个
阶段?
13,有哪几类专家系统开发工具? 各有什么特点?
2004.11.3 AI程序设计 123
第一部分:第 3章 AI编程基础
习 题
14,按下列规则, 写出一个分类专家系统,
(1) 有毛的动物是哺乳类;
(2) 有奶的动物是哺乳类;
(3) 有羽毛的动物是鸟类;
(4) 若动物会飞且会生蛋, 则它是鸟类;
(5) 吃肉的哺乳类是肉食动物;
(6) 犬牙利爪, 眼睛向前的是肉食动物;
(7) 反刍食物的哺乳类是偶蹄类;
(8) 有蹄的哺乳类是有蹄类;
(9) 黄褐色有暗斑点的肉食类是金钱豹;
(10) 黄褐色有黑条纹的肉食类是老虎;
(11) 长腿长脖子有黄褐色暗斑的有蹄类是长颈鹿;
(12) 有黑白条纹的有蹄类是斑马;
(13) 不会飞长腿长脖的鸟是鸵鸟;
(14) 不会飞善游泳黑白色的鸟是企鹅;
(15) 善飞的鸟是信天翁 。