第 5章 产生式系统
5.1 产生式规则
产生式规则是表示知识的一种方式,一般形式为:
P?Q,或 If P then Q。
产生式的含义是:如果前提 P被满足,则可推出结
论 Q或执行 Q所规定的动作。
例,1) IF 动物会飞 AND 会下蛋 THEN 该动物是鸟。
2)如果炉温超过上限,则关闭阀门。
3)如果病人有红色斑点,且病人发烧,且病人是
学龄儿童,则别人患的是水痘。
第 5章 产生式系统
产生式规则与逻辑蕴含式的区别与联系
? 逻辑蕴含式是产生式,反之则不然。
基于产生式的推理模式
? 假言推理:
5.2 产生式系统
5.2.1 产生式系统的组成
? 产生式规则库。用于描述相应领域内的知识的产生式规则
的集合。规则库中的知识要求完整、一致、表达准确灵活、
知识组织合理;
? 推理机。又称控制系统,是一个程序模块,负责产生式系
统的运行。如规则与事实的匹配、执行规则、停止控制等。
BABA ??? )(
产生式系统的组成
产生式规则库
动态数据库
? 动态数据库。又称综合数据库。存放初始事实、
数据、目标条件、中间结果和最后结果。
推理机
产生式系统的运行过程
从规则库中取一条规则,将其前提同当前动
态数据库中的事实 /数据进行模式匹配
匹配成功否?
N
Y
把该规则的结论放入当前动态数据库,或执
行规则所规定的动作
产生式系统的控制策略(正向
推理)
正向推理:从初始事实 /数据出发,正向使用
规则进行推理,朝目标方向前进。
步 1 初始化动态数据库,将初始事实、数据置入
动态数据库中。
步 2 用动态数据库中的事实、数据匹配目标条件,
若目标条件满足,则推理成功,结束。
步 3 用规则库中各规则的前提匹配动态数据库中
的事实 /数据,将匹配成功的规则组成待用规则集。
步 4 若待用规则集为空,则运行失败,退出。
产生式系统的正向推理
步 5 将待用规则集中各规则的结论加入动态数据
库,或者执行其动作,转步 2。
? 例 1 设动物分类的规则库为:
– R1,若某动物有奶,则它是哺乳动物。
– R2:若某动物有毛发,则它是哺乳动物。
– R3:若某动物有羽毛,则它是鸟。
– R4:若某动物会飞且生蛋,则它是鸟。
– R5:若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它
是食肉动物。
– R6:若某动物是哺乳动物且吃肉,则它是食肉动物。
– R7:若某动物是哺乳动物且有蹄,则它是有蹄动物。
– R8:若某动物是有蹄动物且反刍食物,则它是偶蹄动物。
产生式系统的正向推理
– R9:若某动物是食肉动物且黄褐色且有黑色条纹,则
它是老虎。
– R10:若某动物是食肉动物且黄褐色且有黑色斑点,
则它是金钱豹。
– R11:若某动物是有蹄动物且长腿且长脖子且黄褐色
且有暗斑点,则它是长颈鹿。
– R12:若某动物是有蹄动物且白色且有黑色条纹,则
它是斑马。
– R13:若某动物是鸟且不会飞且长腿且长脖子且黑白
色,则它是鸵鸟。
– R14:若某动物是鸟且不会飞且会游泳且黑白色,则
它是企鹅。
– R15:若某动物是鸟且善飞且不怕风浪,则它是海燕。
动物分类产生式系统
再给出初始事实:
– F1:某动物有毛发
– F2:吃肉
– F3:黄褐色
– F4:有黑色条纹
目标条件为:该动物是什么?
动物分类产生式系统
动物分类正向推理树
老虎
食肉动物
哺乳动物
有毛发
R2
R6
吃肉 黄褐色 有黑色条纹
R9
产生式系统的反向推理
反向推理:从目标出发,反向使用规则进行推
理,朝初始事实或数据方向前进。
步 1 初始化动态数据库,将初始事实、数据置入
动态数据库。将目标条件置入目标链。
步 2 若目标链为空,则推理成功,结束。
步 3 取出目标链中第一个目标,用动态数据库中
的事实、数据同其匹配,若匹配成功,转步 2。
步 4 用规则库中各规则的结论同该目标匹配,若
匹配成功,则将第一个匹配成功且未用过的规则的
前提作为新的目标,并取代原来的父目标而加入目
标链,转步 3。
产生式系统的反向推理
步 5 若该目标是初始目标,则推理失败,退
出。
步 6 将该目标的父目标移回目标链,取代该
目标及其兄弟目标,转步 3。
例 2 对于例 1中的产生式系统,反向推理
树如下图:
动物分类产生式系统反向推理
动物分类反向推理树
老虎
食肉动物
哺乳动物
有毛发
R6
吃肉 黄褐色 有黑色条纹
R9
有奶目盯前方有犬齿有爪
R5
R1 R2
产生式系统
冲突消解策略
正向推理算法二:带冲突消解策略。
步 1 初始化动态数据库,将初始事实、数据置入
动态数据库中。
步 2 用动态数据库中的事实、数据匹配目标条件,
若目标条件满足,则推理成功,结束。
步 3 用规则库中各规则的前提匹配动态数据库中
的事实 /数据,将匹配成功的规则组成待用规则集。
步 4 若待用规则集为空,则运行失败,退出。
步 5 用某种策略,从待用规则集中选取一条规则,
将其结论加入动态数据库,或者执行其动作,撤消
待用规则集,转步 2。
产生式系统的程序实现
产生式规则的程序语言实现
规则的前提部分可表示为
条件 1 AND 条件 2 AND …AND条件 n

条件 1 OR 条件 2 OR …OR条件 n
规则的结论部分可表示为
断言 1/动作 1 and 断言 2/动作 2 and …and断言 n/动
作 n

断言 1/动作 1 or 断言 2/动作 2 or …or断言 n/动作 n
产生式系统的程序实现
一般只考虑含有至多一个结论部分的产生式规则
(类似于 Horn 子句逻辑)
条件 1 AND 条件 2 AND …AND条件 n?断言 /动作
产生式规则的具体表示方法可以使用 If-Then规则,
也可以使用多元组的形式表示,如二元组( <前件 >,
<后件 >)可表示一个产生式规则。
无论使用何种表示方式,必须与规则的解释程序
(即推理机)相容。
在 Prolog中表示产生式规则,至少有两种形式,1、
用 Prolog的规则表示产生式规则; 2,用 Prolog的事
实表示产生式规则。
产生式系统的程序实现
若用 Prolog的规则表示产生式规则,则使用 Prolog
内部的推理机,无须自己编写推理机。若用 Prolog
的事实表示产生式规则,则须自己编写显式的推理
机程序。
例 动物分类系统中的产生式规则可用 Prolog语言中
的规则表示为:
animal_is(“老虎, ):-it_is(“食肉动物, ),fact(“黄褐
色, ),fact(“有黑色条纹, ).
it_is(“食肉动物, ):-it_is1(“哺乳动物, ),fact(“有
爪, ),fact(“有犬齿, ),fact(“目盯前方, ).
产生式系统的程序实现
it_is(“食肉动物, ):-it_is1(“哺乳动
物, ),fact(“吃肉, ).
it_is1(“哺乳动物, ):-fact(“有奶, ).
it_is1(“哺乳动物, ):-fact(“有毛发, ).
上面的产生式规则也可以用 Prolog中的事
实表示为:
Rule([“食肉动物,,“黄褐色,,, 有黑色条
纹, ],“老虎, ).
产生式系统的程序实现
rule([“哺乳动物,,“有爪,,“有犬齿,,“目盯
前方, ],“食肉动物, ).
rule([“哺乳动物,,“吃肉, ],“食肉动物, ).
rule( [“有奶, ],“哺乳动物, ).
rule( [“有毛发, ],“哺乳动物, ).
这种表示方法需要自己编写一个推理机程序。
产生式系统的程序实现
规则库的程序实现
在 Prolog中,如果用 Prolog的规则表示产生
式规则,规则库是程序的一部分,放在程序
的 clauses段。如果用事实表示产生式规则,
则规则库用动态数据库或数据库文件实现。
第 6章 知识表示
6.1 知识及其表示
6.1.1 知识的概念
? 知识是人们对客观事物及其规律的认识及利用客
观规律解决实际问题的方法和策略。
? 就内容而言,知识可分为原理性知识和方法性知
识。
? 就形式而言,知识可分为显式知识和隐式知识。
显式知识指可用语言、文字、符号、图形、声音
等表示和处理的知识,可供他人直接识别。隐式
知识是一种个体技能型的知识。
第 6章 知识表示
6.1 知识及其表示
? 就可靠性和严密性而言,知识又可分为理论知识和经验知
识。
6.1.2 知识表示
? 知识表示是指面向计算机的知识描述和表达,是指把知识
表示为计算机能存储、识别、处理和利用的形式的方法。
? 知识表示是建立专家系统和各种知识系统的基础。提出了
各种知识表示方法,如一阶谓词逻辑、产生式规则、框架、
语义网络、对象、脚本、过程、神经网络等。
? 知识表示可分为陈述表示和过程表示。陈述表示是把事物
的属性、状态和关系逻辑的描述出来,而过程表示则是把
事物的行为和操作、解决问题的方法和步骤具体地表示出
来。也称为知识的动态表示或静态表示。
第 6章 知识表示
6.1.3 知识表示的语言实现
? 如支持谓词逻辑的语言 Prolog和 Lisp,专门支持
产生式规则的语言 OPS5,专门支持框架的语言
FRL,面向对象的语言 Smalltalk,C++等。
6.2 框架
6.2.1 框架的概念
框架的一般形式为
<框架名 >
<槽名 1><槽值 1>/<侧面名 11><侧面值 111,侧面值 112,… >
<侧面名 12><侧面值 121,侧面值 122,… >
………
<槽名 2><槽值 2>/<侧面名 21><侧面值 211,侧面值 212,… >
<侧面名 22><侧面值 221,侧面值 222,… >
………
<槽名 k><槽值 k>/<侧面名 k1><侧面值 k11,侧面值 k12,… >
<侧面名 k2><侧面值 k21,侧面值 k22,… >
………,
6.2 框架
6.2.1 框架的概念
例 1 一个描述, 教师, 的框架
框架名,<教师 >
类属,<知识分子 >
工作:范围,(教学,科研)
缺省:教学
性别,(男,女)
学历,(中专,大专,本科,研究生)
类型,( <小学教师 >,<中学教师 >,<大学教师 >)
6.2 框架
6.2.1 框架的概念
例 2 一个描述, 大学教师, 的框架
框架名,<大学教师 >
类属,<教师 >
学历,(学士,硕士,博士)
专业,<学科专业 >
职称,(助教,讲师,副教授,教授)
外语:语种:范围,(英,法,日,德,… )
缺省,英
水平,(优,良,中,差)
缺省:良
6,2 框架
6.2.1 框架的概念
例 3 一个描述具体教师的框架
框架名,<教师 -1>
类属,<大学教师 >
姓名:李明
性别:男
年龄,25
职业:教师
职称:助教
专业:计算机应用
部门:计算机系软件教研室
工作:参加工作时间,1995年
工龄,当前年份 -参加工作年份
工资,<工资单 >
6.2 框架
6.2.1 框架的概念
框架之间的关系
? 实例框架
? 父框架和子框架
? 框架的, 继承, 特性
– 子框架从父框架继承某些槽值或侧面值。
– 子框架可以覆盖父框架中已有的槽值或侧面值。
? 一个框架的槽值可以是另外一个框架名。
? 框架网络
6.2 框架
6.2.2 框架的表达能力
框架适合表达结构性的知识。框架的槽值可以是对
象的属性或状态值,也可以是运算式或规则,甚至
动作或过程调用。
例 4 关于, 房间, 的框架
框架名,<房间 >
墙数 x1,
缺省,x1=4
条件,x1>0
窗数 x2:
缺省,x2=2
条件,x2?0
6.2 框架
6.2.2 框架的表达能力
门数 x3:
缺省,x3=1
条件,x3>0
前墙,(墙框架( w1,d1))
后墙,(墙框架( w2,d2))
左墙,(墙框架( w3,d3))
右墙,(墙框架( w4,d4))
天花板,〈 天花板框架 〉
地板,〈 地板框架 〉
门,〈 门框架 〉
窗,〈 窗框架 〉
条件,w1+w2+w3+w4=x2 d1+d2+d3+d4=x3
类型,( 〈 办公室 〉, 〈 教室 〉, 〈 卧室 〉, 〈 仓库 〉, … )
6.2,2 框架的表达能力
例 5 机器人纠纷问题的框架描述。
框架名,〈 打人 -1〉
动作:打
动作发出者:罗宾
动作接受者:苏西
后果,( 〈 打人 -2〉, 〈 哭 -1〉 )
框架名,〈 打人 -2〉
动作:打
动作发出者:罗宾
动作接受者:苏西
后果,( 〈 打人 -1〉, 〈 哭 -2〉 )
框架名,〈 哭 -1〉
动作:哭
动作发出者:苏西
后果,(得意,懊悔)
框架名,〈 哭 -2〉
动作:哭
动作发出者:罗宾
后果,心理平衡
6.2.2 框架的表达能力
产生式规则也可用框架表示
例如产生式:如果头痛且发烧,则患感冒。
可用框架表示为:
框架名,〈 诊断 1〉
前提:条件 1:头痛
条件 2:发烧
结论:患感冒
6.2.3 基于框架的推理
基于框架的推理方法是继承。实现继承
的操作有匹配、搜索和填槽。
匹配是问题框架同知识库中的框架的模
式匹配。
搜索就是沿着框架间的纵向和横向联系,
在框架网络中进行查找。
6.2.4 框架的程序语言实现
专用的框架表示语言 FRL (Frame
Representation Language)
在 Prolog中,用含结构或表的谓词实现框架。
例 教师框架用 Prolog语言表示
Frame(name(“教师, ),
Kind_of(“<知识分子 >”),
Work(scope(, 教学,,, 科研, ),default(“教学, ),
sex(, 男,,, 女, ),
degree(, 中专,,, 大专,,, 本科,,, 研究生, )
type(, <小学教师 >”,, <中学教师 >”,,<大学教师
>”))。
6.2.4 框架的程序语言实现
框架的通用表示形式
Frame(name(“教师, ),
body([st(“类属,, [st(“<知识分子 >”,[])]),
st(“工作,,[st(“范围,,[st(“教学,, []),st(“科
研,,[]) ]),st(“缺省,,[st(“教学,,[])])]),
St(“性别,,[st(”男,,[]),st(”女,,[]) ]),
St(“学历,, [st(, 中专,,[]), st(“大专,,[]),
st(“本科,,[]),st(“研究生,,[])]),
St(“类型,,[st(,<小学教师 >”,[]), st(,<中学教
师 >”,[]),st(,<大学教师 >”,[])]))。
6.2.4 框架的程序语言实现
这是一个 Prolog“事实,,在 Prolog程序中说明
如下:
domains
name=name(string)
body=body(subtreelist)
subtreelist=subtree*
subtree=st(string,subtreelist)
database
frame(name,body)
框架表示法的特点
优点
结构性,继承性,自然性
缺点
没有完整的理论体系,框架、槽、侧面等各
知识表示单元缺乏清晰的语义,表达能力有
待增强。多重继承容易产生歧义。
6.3 语义网络
6.3.1 语义的概念
语义网络是由节点和边组成的一种有向图,是通过
概念及其语义关系来表达知识的一种网络图。其中
节点表示事物、对象、概念、行为、性质、状态等;
有向边表示节点之间的某种联系或关系。
语义网络分为 7种类型:
? 命题语义网络;
? 数据语义网络:以数据为中心的语义网络。
? 语言语义网络:用于自然语言理解和分析;
? 结构语义网络:描述客观事物的结构,应用于模式识别和机器学
习等领域。
? 分类语义网络:描述抽象概念及其层次;
? 推理语义网络:适合于推理
? 框架语义网络:与框架想结合的语义网络。
6.3 语义网络
语义网络的实例
水果 营养
北方 苹果 甜
陕西 秦冠
高产
富士
富有
日本
国家脆甜中国西部
味道产于
是一种
产于 引进于
是一种是一种
特点特点位于 是一个
6.3 语义网络
语义网络的例
猎狗 狗 动物是一种 是一种
吃肉
跑得快
能狩猎 有尾巴 咬人
身上有毛 有生命
能运动
会吃
6.3 语义网络
6.3.2 语义网络的表达能力
语义网络适合于表达事物之间的关系。关系
型的知识和能转化为关系型的知识都可以用
语义网络表示。
? 实例关系。表示类与其实例之间的关系。常用语
言, 是一个, 描述,可表示为, ISA” 或, is-a”
DeepBlue Computer
ISA
6.3 语义网络
6.3.2 语义网络的表达能力
分类关系(从属、泛化)。
? 指事物间的类属关系。常用语言, 是一种, 描述,
可表示为, a-kind-of”,或 AKO。
Animal
BirdMammal
Panda Dog Pig Pigeon Sparrow
AKO
AKOAKO AKO AKO
6.3 语义网络
6.3.2 语义网络的表达能力
聚集关系。整体与部分的关系。下层概念是
上层概念的一部分。, 一部分, 可用, a-
part-of”表示
桌子
桌面 桌腿
A part of A part of
6.3 语义网络
6.3.2 语义网络的表达能力
属性关系。表示对象的属性及属性值。
Person
Male 40
Simon
Teacher
ISA
Sex Age Profession
6.3 语义网络
集合与成员关系。, 是成员,” 可用
,a-member-of”表示
张三 计算机学会
A member of
6.3 语义网络
逻辑关系。
雨天
外出
AND OR
带雨伞
带雨批
6.3 语义网络
方位关系。表示位置、时间等。
华山路
徐汇区
SJTU Wang Professor
50
属于
位于 工作于 职称
年龄
6.3 语义网络
属性或拥有关系
自然语言语句的深层结构表示
,小王送给小李一本书,
鸟 翅膀
Have
送书小王 小李

giver recipient
Object
S
用语义网表示量词
存在量词
?x(student(x)?read(x,“Gone with the
wind”)
student read book
x read1 Gone with the wind
ISA ISA ISA
Subject Object
用语义网表示量词
全称量词。用分块语义网表示。
?x(student(x)?read(x,“Gone with the
wind”)
F
student read book
x read1 Gone with the wind
ISA ISA ISA
Subject Object
GS
R
ISA
?
6.3 语义网络
6.3.3 基于语义网络的推理
基于语义网络的推理是继承、匹配和搜索的
过程。
根据待求问题构造一个语义网络片段,然后
在知识库中查找可与之匹配的语义网络。
6.3.4 语义网络的程序实现
语义网络实质上是一个二元关系图,可用
Prolog方便地实现。