2004.11.3 AI程序设计 1
第一部分:第 2章 知识表示方法
第 2章 知识表示方法
2.1 知识的基本概念
2.2 一阶谓词逻辑表示法
2.3 产生式表示法
2.4 语义网络表示法
2.5 框架表示法
2.6 脚本表示法
2.7 过程表示法
2.8 Petri网表示法
2.9 面向对象表示法
2.10 状态空间表示法
2.11 问题归约表示法
本章小结与习题
2004.11.3 AI程序设计 2
第一部分:第 2章 知识表示方法
2.1 知识的基本概念
2.1.1 知识层次
2.1.2 知识的属性
2.1.3 知识分类
2.1.4 知识表示
2004.11.3 AI程序设计 3
第一部分:第 2章 知识表示方法
2.1.1 知识层次
噪声
数据
信息
知识
元知识
人们描述客观世界的数据、
信息、知识等具有如下的
金字塔型层次结构。
2004.11.3 AI程序设计 4
第一部分:第 2章 知识表示方法
2.1.1 知识层次
1) 数据
知识处理中的数据不同于通常意义上的
,数,,它具有更广泛的含义。例如,符号 3,赋
予不同的物质就可以代表不同的含义。无论 3个人
或者 3棵树,表达了相同的数量。另外,颜色属性、
尺寸大小等等都可以作为数据进行记录。这里,数
据可以定义为:, 客观事物的数量、属性、位置及
其相互关系等的抽象表示, 。
2004.11.3 AI程序设计 5
第一部分:第 2章 知识表示方法
2.1.1 知识层次
2) 信息
信息是, 数据所表示的含义, 。 如上述同一个数据
,3,在不同的具体场合代表着不同的含义, 可以是人,
树或是任何其他的物质, 从而获得不同的解释, 产生不
同的信息 。 因此, 可以这样来表述数据和信息的关系:
数据是信息的载体和表示, 而信息是对数据的解释 。 一
般地说, 一个信息可用一组描述词及其值来描述,
〈 描述词 1:值 1; … ;描述词 n:值 n〉
它描述一件事, — 个物体或一种现象的有关属性, 状态,
地点, 程度, 方式等等 。
2004.11.3 AI程序设计 6
第一部分:第 2章 知识表示方法
2.1.1 知识层次
3) 知识
Feigenbaunm认为知识是经过整理, 加工, 解释和转换的
信息 。 Bernstein认为它是由特定领域的描述, 关系和过程
组成的 。 Hayes Roth则将知识用三维空间来描述, 即知识 =
事实 +信念 +启发式规则 。 而从知识库的观点看, 知识则是
某领域中所涉及的各有关方面, 状态的一种符号表示 。
目前所认可的定义是:, 知识是一个或多个信息的关
联, 。 就是说, 知识是把有关信息关联在一起所形成的信
息结构 。 它反映了客观世界中事物的关系, 不同事物或者
相同事物间的不同关系形成了不同的知识 。
2004.11.3 AI程序设计 7
第一部分:第 2章 知识表示方法
2.1.1 知识层次
4) 元知识
元知识是有关知识的知识, 是知识库中的高层知识 。
包括怎样使用规则, 解释规则, 校验规则, 解释程序结
构等知识 。 元知识存于知识库中, 指定可用的数据库资
源, 并在一个域中确定最为适用的规则组 。
2004.11.3 AI程序设计 8
第一部分:第 2章 知识表示方法
2.1.2 知识的属性
(1) 真伪性 。 知识是客观事物及客观世界的反映, 它具有真伪性,
可以通过实践检验其真伪, 或用逻辑推理证明其真伪 。
(2) 相对性 。 一般知识不存在绝对的真假, 都是具有相对性的 。
在一定条件下或特定时刻为真的知识, 当时间, 条件或环境发生变
化时可能变成假 。
(3) 不完全性 。 知识往往是不完全的 。 这里的不完全大致分为条
件不完全和结论不完全两大类 。
(4) 不确定性, 即模糊性和不精确性 。 现实中的知识的真与假,
往往并不总是, 非真即假,, 可能处于某种中间状态, 即所谓具有
真与假之间的某个, 真度,, 即模糊度和不精确度 。 例如, 人老了
就可能糊涂,,, 老了,,, 可能, 和, 糊涂, 都是一些模糊概念 。
在知识处理中必须用模糊数学或统计方法等来处理模糊的或不精确
的知识 。
2004.11.3 AI程序设计 9
第一部分:第 2章 知识表示方法
2.1.2 知识的属性
(5) 可表示性 。 知识作为人类经验存在于人脑之中, 虽然不是一
种物质东西, 但可以用各种方法表示出来 。 一般表示方式包括符号
表示法, 图形表示法和物理表示法 。
(6) 可存储性, 可传递性和可处理性 。 既然知识可以表示出来,
那么就可以把它存储起来;知识既可以通过书本来传递, 也可以通
过教师的讲授来传播, 还可以通过计算机网络等来传输, 知识可以
从一种表示形式转换为另一种表示形式;知识一旦表示出来, 就可
以同数据一样进行处理 。
(7) 相容性 。 相容性是关于知识集合的一个属性 。 即存在于一体
( 如专家系统的知识库 ) 的所有知识之间应该是相互不矛盾的, 即
从这些知识出发, 不能推出相互矛盾的命题 。
2004.11.3 AI程序设计 10
第一部分:第 2章 知识表示方法
2.1.3 知识分类
关于知识的类型, 可以从不同角度来划分 。
?从知识的确定程度来分, 知识可分为确定性知识和不确
定性知识两类 。
确定性知识 是可以给出其真值为, 真, 或, 假, 的知
识 。 这些知识是可以精确表示的知识, 即可以用经典逻
辑命题来描述 。 不确定性知识是指具有, 不确定, 特性
的知识 。
不确定性的概念 包含不精确, 不完备和模糊 。 若知识
并非, 非真即假,, 可能处于某种中间状态, 这类知识
往往要用模糊命题或模态命题来表达 。
2004.11.3 AI程序设计 11
第一部分:第 2章 知识表示方法
2.1.3 知识分类
? 知识按其性质分, 可分为概念, 命题, 公理, 定理,
规则和方法等 。
2004.11.3 AI程序设计 12
第一部分:第 2章 知识表示方法
2.1.3 知识分类
?知识按其含义分, 大致可分为:事实, 规则, 规律,
推理方法 。 事实是对客观事物属性的值的描述 。 一般
这种知识中不含任何变量, 可以用一个值为, 真, 的
命题来表达 。 规则是可分解为前提和结论两部分的用
以表达因果关系的知识, 一般形式为:, 如果 A则 B”,
其中 A表示前提, B表示结论 。 规则还可进一步分为不
带变量的规则和带变量的规则两种 。 规律是事物之间
的内在的必然联系 。
2004.11.3 AI程序设计 13
第一部分:第 2章 知识表示方法
2.1.3 知识分类
? 知识按其作用分, 可分为事实性知识, 过程性知识和控制性知识 。
事实性知识 ( 亦称为叙述性知识 ) 是用来描述问题或事物的概念,
属性, 状态, 环境及条件等情况的知识 。 事实性知识主要反映事物
的静态特征, 一般采用直接表达形式 。 过程性知识 一般由与所求解
问题有关的规则, 定律, 定理及经验来构成 。 其表示方法主要有产
生式规则, 语义网络等 。 控制性知识 ( 亦称无知识或超知识 ) 是关
于如何运用已有知识进行问题求解的知识, 因此, 也称为关于知识
的知识 。 例如, 问题求解中的推理策略 ( 如正向推理, 逆向推理 ),
搜索策略 ( 如广度优先, 深度优先, 启发式 ) 和不确定性的传播策
略等 。
2004.11.3 AI程序设计 14
第一部分:第 2章 知识表示方法
2.1.3 知识分类
?知识按其应用范围可分为 常识性知识和领域性知识 。 常
识性知识是指通用通识的知识 。 即人们普遍知道的, 适
应于所有领域的知识, 包括领域问题求解有关的已被接
受的定义, 事实和各种理论方法 。 领域性知识是指面向
某个具体专业的专业性知识, 这些知识只有该领域的专
业人员才能够掌握和运用它 。
2004.11.3 AI程序设计 15
第一部分:第 2章 知识表示方法
2.1.3 知识分类
?知识按其在问题求解过程中的作用可分为 静态知识和动
态知识两类 。 静态知识主要指对象性知识, 是关于问题
领域内事物的事实, 关系等, 它包括了事物的概念, 事
物的分类, 事物的描述等 。 动态知识是关于问题求解的
知识, 它常常是一种过程, 说明怎样操作已有的数据和
静态知识以达到问题的求解, 是反映动作过程的过程,
如一个问题领域内关于推理路径的方向, 推理过程, 可
理解性等方面的知识, 启发性方法等 。
2004.11.3 AI程序设计 16
第一部分:第 2章 知识表示方法
2.1.3 知识分类
?按知识的层次性可分为 表层知识和深层知识 。 表层知识
是指客观事物的现象以及这些现象与结论之间关系的知
识 。 例如, 经验性知识, 感性知识等 。 表层知识形式简
洁, 易表达, 易理解, 但它并不能反映事物的本质 。
2004.11.3 AI程序设计 17
第一部分:第 2章 知识表示方法
2.1.3 知识分类
?知识按其等级性可分为 零级知识, 一级知识和二级知识三
个层次 。 零级知识是常识性知识和原理性知识, 是关于问
题领域的事实, 定理, 方程, 实验对象和操作等等 。 一级
知识是经验性知识, 这是由于零级知识对求解不良结构问
题常常失灵, 因而出现启发性方法等, 如单凭经验的规则,
含义模糊的建议, 不确切的判断标准等等 。 二级知识是运
用上述两级知识的知识 。 这种知识层次还可以继续划分下
去, 把零级知识和一级知识称为领域 (或目标 )知识, 把二
级以上知识称为元知识 。 高级知识对低级知识有指导意义 。
在专家系统设计中, 领域知识是必不可少的 。
2004.11.3 AI程序设计 18
第一部分:第 2章 知识表示方法
2.1.4 知识表示
一个智能系统的智能性很大程度上取决于知识的
数量及其可利用的程度 。 系统中可利用的知识越多,
其智能性就可能越高 。 知识表示就是研究和解决如何
将所需要的知识用适当的形式表示出来并存放到计算
机中, 即将知识表示成为计算机可以接受的形式 。
2004.11.3 AI程序设计 19
第一部分:第 2章 知识表示方法
2.1.4.1 知识表示的概念
所谓知识表示就是知识的符号化和形式化的过程, 是研究用机器
表示知识的可行性, 有效性的一般方法, 是一种数据结构与控制结构
的统一体, 既考虑知识的存储又考虑知识的使用 。 知识表示可以看成
是一组描述事物的约定, 以把人类知识表示成机器能处理的数据结构 。
知识表示方法研究各种数据结构的设计, 通过这种数据结构把问
题领域的各种知识结合到计算机系统的程序设计过程 。 一般来说, 对
于同一种知识可以采用不同的表示方法, 反过来, 一种知识表示方法
可以表达多种不同的知识 。 然而, 在求解某一问题时, 不同的表示方
法会产生完全不同的效果 。 迄今为止, 人们还没有找到一种通用, 完
善的知识表示模式, 知识表示还没有完善的理论可循 。
2004.11.3 AI程序设计 20
第一部分:第 2章 知识表示方法
2.1.4.2 知识表示方法的分类
对知识表示方法的研究离不开对知识的研究与认识 。 由于目前对人类知
识的结构及其机制还没有完全搞清楚, 因此关于知识表示的理论及其规范尚
未建立起来 。 尽管如此, 人们对智能系统的研究及其建立过程中 。 还是结合
具体研究提出了一些知识表示方法 。 概括起来, 这些方法可以分为如下两大
类:符号表示法和连接机制表示法 。
符号表示法 是用各种包含具体含义的符号, 以各种不同的方式和次序组
合起来表示知识的一类方法, 它主要用来表示逻辑性知识 。 连接机制表示法
是用神经网络技术表示知识的一种方法, 它把各种物理对象以不同的方式及
次序连接起来, 并在其间互相传递及加工各种包含具体意义的信息, 以此来
表示相关的概念及知识 。 相对于符号表示法而言, 连接机制表示法是一种隐
式的表示知识方法, 它特别适用于表示各种形象性的知识 。
2004.11.3 AI程序设计 21
第一部分:第 2章 知识表示方法
2.1.4.2 知识表示方法的分类
另外, 按照控制性知识的组织方式进行分类, 表示法可分为:说
明性表示法和过程性表示法 。 说明性表示法着重于对知识的静态方
面, 如客体, 事件, 事实及其相互关系和状态等, 其控制性知识包
含在控制系统中;而过程性表示法强调的是对知识的利用, 着重于
知识的动态方面, 其控制性知识全部嵌入于对知识的描述中, 且将
知识包含在若干过程之中 。
目前, 用得较多的知识表示方法主要有:一阶谓词逻辑表示法,
产生式表示法, 框架表示法, 语义网络表示法, 脚本表示法, 过程
表示法, Petri网表示法, 面向对象表示法等 。
2004.11.3 AI程序设计 22
第一部分:第 2章 知识表示方法
2.1.4.3 知识表示方法的衡量及特性
既然有诸多的知识表示方法, 那么怎样的方法才是合理有效的呢?
好的知识表示方法又应当具备怎样的特性呢?下面对此作一讨论 。
建立一种知识表示方法, 要求有较强的表达能力和足够的精细度 。
其次, 相应于表示方法的推理要保证正确性和效率 。 从使用者观点看,
常常希望满足可读性好, 模块性好等要求 。 因此, 从综合的角度来看,
一个好的知识表示应具备以下特性,
完备性, 一致性, 正确性, 灵活性,
可扩充性, 可理解性, 可利用性, 可维护性
2004.11.3 AI程序设计 23
第一部分:第 2章 知识表示方法
2.1.4.3 知识表示方法的衡量及特性
(1) 完备性
要求具有表达领域问题所需的各种知识的能力, 即要求所采用的知
识表示方法具有语法完备性和语义完备性, 并便于知识库的检查与调
试 。 目前的大多数知识表示方法都很难满足这一要求 。 由于专门知识,
知识库的特点及建库方法所造成的原因, 如果不选择表示能力强的方
法, 就很难使知识库具有某些有关的甚至是很重要的知识, 严重影响
专家系统的问题求解能力 。
2004.11.3 AI程序设计 24
第一部分:第 2章 知识表示方法
2.1.4.3 知识表示方法的衡量及特性
(2) 一致性
要求知识库中的知识必须具有一致性, 不能相互产生矛盾 。 几乎所有的
专家系统的研制者在开发自己的系统时, 都在追求这个目标 。 由于专家的
知识大多是启发性知识, 具有不完全性和不确定性 。 因此, 所采用的知识
表示必须便于系统进行一致性检查, 以便在使用中完善知识库, 保证系统
的求解质量 。
(3) 正确性
知识表示必须能真实地反映知识的实际内涵, 而不允许有偏差 。 只有这
样, 才能保证系统得出正确结论和合理建议 。
(4) 灵活性
针对不同的专业领域, 应当根据具体知识的特点及其自然结构的制约选
用不同的知识表示方法 。 或是用单一方法, 或是用混合方法, 甚至设计研
究新的表示方法, 一定要具体问题具体分析, 灵活掌握, 切忌生搬硬套 。
2004.11.3 AI程序设计 25
第一部分:第 2章 知识表示方法
2.1.4.3 知识表示方法的衡量及特性
( 5) 可扩充性
高性能知识库应当不需要作硬件上或控制结构上的修改就能对知识库
进行扩充, 即要求知识表示模式与运用知识的推理机制相互独立, 在专
家系统中一般采用知识库与推理机分离的手段来实现这一目的 。 另一方
面, 往往专家不能很快地把领域问题的所有知识定义为一个完整的知识
库, 通常先定义一个子集, 不断增加, 修改, 删除来扩充和完善知识库,
这种方法主张将专家系统的知识作为一个开放集来处理, 并尽可能地模
块化地存储知识条目, 便于知识库的扩充 。
(6) 可理解性
知识表示的可理解性指它表示的知识易于被人们理解的程度 。 易理解
的表示模式的好处是显而易见的, 它符合人们的思维习惯, 便于知识库
研制人员把专家的专门知识整理并形式化, 也便于知识库的设计, 实现
和改进 。
2004.11.3 AI程序设计 26
第一部分:第 2章 知识表示方法
2.1.4.3 知识表示方法的衡量及特性
(7) 可利用性
知识表示的目的在于知识的利用, 具体地说就是知识的检索和推理 。
知识的检索与推理是一种控制知识, 在专家系统中, 一旦知识表示模式
被选定, 它们也就相应地被确定下来 。 因此, 所选择的知识表示方法应
当便于对知识的利用, 其数据结构应力求简单, 并保持清晰一致 。 如果
一种表示模式的数据结构过于复杂或者难于理解 。 使得推理不便于进行
匹配, 冲突消解以及不确定性的计算等处理, 那么就势必影响智能系统
的效率及其问题求解的能力 。
2004.11.3 AI程序设计 27
第一部分:第 2章 知识表示方法
2.1.4.3 知识表示方法的衡量及特性
(8) 可维护性
知识需要进行合理的组织, 对于知识的组织是与其表示方法密切相关
的, 不同的表示方法对应于不同的组织方式 。 这就要求在设计和选择知
识表示方法时, 充分考虑将要对知识进行的组织方式 。 此外, 知识还需
要适当地增补, 修改和删除, 以保证知识的一致性和完整性, 即需要进
行知识的管理和维护 。 因此在选择知识表示方法时还应当充分考虑到知
识管理和维护的方便性 。
简而言之, 在建造具体专家系统时, 应当以有效地表示问题领域的专
门知识, 便于知识的获取, 有利于运用知识进行推理的原则来选择知识
表示方法 。
2004.11.3 AI程序设计 28
第一部分:第 2章 知识表示方法
2.2 一阶谓词逻辑表示法
逻辑表示法是一种基于数理逻辑的知识表示方式 。 数理逻辑是一门研
究推理的科学, 在人工智能研究中占有重要的地位 。 人工智能中用到的
逻辑可分为两大类;一类是经典命题逻辑和一阶谓词逻辑;另一类是除
经典逻辑以外的那些逻辑 。
谓词逻辑的表现方式与人类自然语言比较接近,能够自然而精确地表
达人类思维和推理的有关知识,因此,谓词逻辑已成为各种智能系统中
最基本的知识表达方法。
2004.11.3 AI程序设计 29
第一部分:第 2章 知识表示方法
2.2 一阶谓词逻辑表示法
利用逻辑公式人们能描述对象, 性质, 状况和关系 。 使用逻辑法表示
知识, 要将以自然语言描述的知识, 通过引入谓词, 函数来加以描述,
获得有关的逻辑公式, 进而将其用内部代码表示 。 在逻辑法表示下可采
用归结法或其他方法进行准确的推理 。 逻辑表示通常包括命题逻辑和谓
词逻辑, 关于命题逻辑表示将在下一章作具体介绍 。 这里主要指的是谓
词逻辑表示法 。
谓词逻辑表示法采用谓词合式公式 WFF和一阶谓词演算把要解决的问
题变为一个有待证明的问题, 然后采用消解定理和消解反演来证明一个
新语句是从已知的正确语句导出的, 从而证明这个新语句也是正确的 。
谓词逻辑是一种形式语言, 能够把数学中的逻辑证明符号化 。
2004.11.3 AI程序设计 30
第一部分:第 2章 知识表示方法
2.2 一阶谓词逻辑表示法
2.2.1 命题与真值
2.2.2 论域和谓词
2.2.3 谓词公式与量词
2.2.4 谓词逻辑表示方法
2.2.5 谓词逻辑表示方法的 BNF描述
2.2.6 谓词逻辑表示方法的特点
2004.11.3 AI程序设计 31
第一部分:第 2章 知识表示方法
2.2.1 命题与真值
定义 2.1 一个陈述句称为一个断言。凡有真假意义的断言称为命题。
命题的意义通常称为真值, 它只有真假两种情况 。 当命题的意义为
真时, 则称该命题的真值为真, 记为 T;反之, 则称该命题的真值为
假, 记为 F。 在命题逻辑中, 命题通常用大写的英文字母来表示 。
一个命题不能同时既为真又为假。例如。, 天安门城楼在长安街
的北边, 是一个真值为 T的命题,,天安门广场在长安街的北边, 则
是一个真值为 F的命题。
2004.11.3 AI程序设计 32
第一部分:第 2章 知识表示方法
2.2.1 命题与真值
一个命题可在一定条件下为真, 在另一种条件下为假, 例如, 命
题, 北京今天有雨,, 需要根据当天的实际情况来决定其真值 。
没有真假意义的感叹句, 疑问句等都不是命题 。 例如,, 今天好冷
啊 ], 和, 今天的温度有多少度, 等都不是命题 。
命题的优点 是简单, 明确;其 主要缺点 是无法描述客观事物的结
构及其逻辑特征, 也无法表示不同事物间的共性 。
2004.11.3 AI程序设计 33
第一部分:第 2章 知识表示方法
2.2.2 论域和谓词
论域是由所讨论对象之全体构成的非空集合。论域中的元素称为
个体,论域也常称为个体域。
在谓词逻辑中,命题是用谓词来表示的。一个谓词可分为谓词名
和个体两部分。其中,个体是命题中的主语,用来表示某个独立存
在的事物或者某个抽象的概念;谓词名是命题的谓语,用来表示个
体的性质、状态或个体之间的关系等。例如,对于命题“王坚是学
生”可用谓词表示为 STUDENT( Wangjian)。其中,Wangjian
是个体,代表王坚。 STUDENT是谓词名,说明王坚是学生的这一特
征。通常,谓词名用大写英文字母表示,个体用小写英文字母表示。
2004.11.3 AI程序设计 34
第一部分:第 2章 知识表示方法
2.2.2 论域和谓词
谓词可形式地定义如下,
定义 2.2 设 D是个体域, P,Dn →{ T,F}是一个映射, 其中
Dn = {(xl,x2,...,xn) | xl,x2,...,xn ∈ D}
则称 P是一个 n元谓词( n=1,2,...),记为 P(xl,x2,...,xn) 。
其中 xl,x2,…,xn为个体变元。
在谓词中,个体可以是常量、变元或函数。例如,,x> 6”可用谓
词表示为 Greater(x,6),其中 x是变元。再如“王坚宏的父亲是教
师”,可用谓词表示为 TEACHER(father(Wangjian)),其中
father(Wangjian)是一个函数。
2004.11.3 AI程序设计 35
第一部分:第 2章 知识表示方法
2.2.2 论域和谓词
函数可形式地定义如下,
定义 2.3 设 D是个体域, f,Dn →D 一个映射, 则称 f是 D上的一个 n元函
数, 记作
f(xl,x2,...,xn) ( n=1,2,..,)
其中 xl,x2,…,xn为个体变元 。
谓词与函数从形式上看很相似, 容易混淆 。 但是它们是两个完全不同
的概念 。 谓词的真值是, 真, 或, 假,, 而函数无真值可言, 函数的
值是个体域中的某个个体 。 谓词实现的是从个体域中的个体到 T或 F的
映射, 而函数所实现的是在同一个个体域中从一个个体到另一个个体
的映射 。 在谓词逻辑中, 函数本身不能单独使用, 它必须嵌入到谓词
之中 。
2004.11.3 AI程序设计 36
第一部分:第 2章 知识表示方法
2.2.2 论域和谓词
在谓词 P(xl,x2,...,xn)中, 如果 xi ( i=1,2,...,n )都是个体常量,
变元或函数, 称它为一阶谓词 。 如果 xi本身又是一个一阶谓词,
则称它为二阶谓词 。 本书仅讨论一阶谓词 。
2004.11.3 AI程序设计 37
第一部分:第 2章 知识表示方法
2.2.3 谓词公式与量词
在一阶谓词演算中, 合法的表达式称为合式公式,
亦即谓词公式 。
当一个谓词公式含有量词时, 区分个体变元是否受
量词的约束很重要 。 量词通常有两个, 即全称量词 ?
和存在量词 ? 。
全称量词 表示所有的 。 存在量词 表示存在某一些 。
2004.11.3 AI程序设计 38
第一部分:第 2章 知识表示方法
2.2.4 谓词逻辑表示方法
谓词逻辑不仅可以用来表示事物的状态, 属性, 概念等事实性知识,
也可以用来表示事物的因果关系, 即规则 。 对事实性知识, 通常是用
否定, 析取或合取符号连接起来的谓词公式表示 。 对事物间的因果关
系, 通常用蕴含式表示, 例如, 对, 如果 x,则 y”可表示为, x → y”。
用谓词逻辑表示知识时, 首先需要根据所表示的知识定义谓词, 然
后再用连接词或量词把这些谓词连结起来 。 形成一个谓词公式 。
例 1 用谓词逻辑表示知识, 每个人都有一个父亲, 。
首先定义谓词,PERSON( x),表示 x是人 。
HASFATHER( x,y),表示 x有父亲 y。
此时, 该知识可用谓词表示为,
( ) ( ) ( P E R S O N ( ) H A S F A T H E R (,) )x y x x y? ? ?
2004.11.3 AI程序设计 39
第一部分:第 2章 知识表示方法
2.2.4 谓词逻辑表示方法
例 2 用谓词逻辑表示知识, 所有教师都有自己的学生, 。
首先定义谓词,TEACHER( x),表示 x是教师 。
STUDENT( y),表示 y是学生 。
TEACHES( x,y),表示 x是 y的老师 。
此时, 该知识可用谓词表示为,
该谓词公式可读作:对所有 x,如果 x是一个教师, 那么一定存在一
个个体 y,x是 y的老师, 且 y是一个学生 。
( ) ( ) ( T E A C H E R ( ) R T E A C H E S (,) S T U D E N T ( ) )x y x x y x? ? ? ?
2004.11.3 AI程序设计 40
第一部分:第 2章 知识表示方法
2.2.4 谓词逻辑表示方法
逻辑成为最早和使用最广的知识表示方法的主要原因有如下三点,
( 1) 它具有两个重要的相互关联的部分 。 一个公理系统, 它说明什
么样的关系和蕴含可以形式化 。 一个演绎结构, 即推理规则集合, 它
能从公理集合中推导出定理, 如常用的假言三段论, 概括, 特指等 。
( 2) 逻辑及其形式系统有如下重要特征:所有演绎都保证正确, 而
其他方法目前尚难达到这种程度 。 逻辑语句的集合 ( 从各个原始语句
集开始, 导出所有结论的闭包集合 ) 的语义保持完整, 由推理规则说
明 。 原则上, 它可以保证知识库逻辑上的一致性和所有结论的正确性 。
( 3) 演绎可以完全机械化 。 程序可以从现有语句中自动确定知识库
中某一新语句的有效性 。 它是自动定理证明中使用得较为成功的一种
技术 。
2004.11.3 AI程序设计 41
第一部分:第 2章 知识表示方法
2.2.4 谓词逻辑表示方法
形式逻辑根据为真的事实进行推理演算, 从而得到新的事实 。 用逻
辑方法求解一个问题的全过程是,
( 1) 用谓词演算将问题形式化 。
( 2) 在这种逻辑表示的形式上建立控制系统 。
( 3) 证明从初始状态可以达到目标状态 。
2004.11.3 AI程序设计 42
第一部分:第 2章 知识表示方法
2.2.5 谓词逻辑表示方法的 BNF描述
〈 知识 〉 ∷ = {〈 谓词表达式 〉 }
〈 谓词表达式 〉 ∷ = 〈 蕴含式 〉 | [ 量词 ] (〈 变量 〉 {,〈 变量 〉 })
(〈 蕴含式 〉 )
〈 蕴含式 〉 ∷ = 〈 或式 〉 | 〈 或式 〉 → 〈 或式 〉
〈 或式 〉 ∷ = 〈 与式 〉 | 〈 或式 〉 ∨ 〈 与式 〉
〈 与式 〉 ∷ = 〈 文字 〉 | 〈 与式 〉 ∧ 〈 文字 〉
〈 文字 〉 ∷ = 〈 原子 〉 |~ 〈 原子 〉
〈 原子 〉 ∷ = 〈 谓词 〉 [(〈 变量 〉 {,〈 变量 〉 }) ]| 〈 谓词 〉 [(〈 常
量 〉 {,〈 常量 〉 }) ]
〈 量词 〉 ∷ =|
〈 变量 〉 ∷ = 〈 变量名 〉
〈 常量 〉 ∷ = 〈 个体名 〉 | 〈 常数 〉
2004.11.3 AI程序设计 43
第一部分:第 2章 知识表示方法
2.2.5 谓词逻辑表示方法的 BNF描述
用这种表达知识的方法, 建造知识库的基本步骤如下,
(1) 获取并理解领域知识;
(2) 用自然语句描述领域知识;
(3) 使用适当的谓词公式表达自然语句;
(4) 构造 WFF,使其与被表达的自然语句在逻辑上保持
一致 。
2004.11.3 AI程序设计 44
第一部分:第 2章 知识表示方法
2.2.6 谓词逻辑表示方法的特点
逻辑表示法的 主要优点 是,① 符号简单, 描述易于理解 。
② 自然, 严密, 灵活, 模块化 。 ③ 具有严格的形式定义 。
④ 每项事实仅需表示一次 。 ⑤ 具有证明过程中所使用的
推理规则 。 ⑥ 利用定理证明技术可从旧事实推出新事实 。
其 主要缺点 是,① 难于表示过程式和启发式知识 。 ②
由于缺乏组织原则, 利用该方法表示的知识库难于管理 。
③ 由于是弱证明过程, 当事实的数目增大时, 在证明过程
中决定使用哪条规则时可能产生组合爆炸 。 ④ 不具有表示
不精确和不确定知识的能力 。
2004.11.3 AI程序设计 45
第一部分:第 2章 知识表示方法
2.3 产生式表示法
产生式表示法又称规则表示法,是目前人工智能领
域中应用最多的一种知识表示方法,也是一种比较成
熟的表示方法。
2004.11.3 AI程序设计 46
第一部分:第 2章 知识表示方法
2.3 产生式表示法
2.3.1 产生式
2.3.2 产生式系统
2.3.3 产生式表示法的特点
2.3.4 产生式表示法与其它知识表示方
法的比较
2004.11.3 AI程序设计 47
第一部分:第 2章 知识表示方法
2.3.1 产生式
产生式一词, 首先是由美国数学家 E,Post提出来的 。
Post根据替换规则提出了一种称为波斯特机的计算模型,
模型中的每一条规则当时被称为一个产生式 。 后来, 这
一术语几经修改扩充, 被用到许多领域 。 例如, 形式语
言中的文法规则也称为产生式 。 产生式又称为产生式规
则, 或简称规则 。
2004.11.3 AI程序设计 48
第一部分:第 2章 知识表示方法
2.3.1.1 产生式的一般形式
产生式通常用于表示具有因果关系的知识, 其一般形式为,
前件 → 后件
其中,前件为前提,后件为结论或动作。前件和后件可以是由逻辑
运算符 AND,OR,NOT组成表达式。产生式规则的语义是:如果前
提满足,则可得结论或者执行相应的动作,即后件由前件来触发。
所以,前件是规则的执行条件,后件是规则体。例如,
IF 动物是哺乳动物 AND 吃肉 THEN 该动物是食肉动物
就是一个产生式 。
2004.11.3 AI程序设计 49
第一部分:第 2章 知识表示方法
2.3.1.1 产生式的一般形式
产生式用 BNF范式严格描述为如下形式,
<产生式 >∷ = <前件 >→< 后件 >
<前件 >∷ = <简单条件 >| <复合条件 >
<后件 >∷ = <事实 >| <操作 >
<复合条件 >∷ = <简单条件 > AND <简单条件 >[( AND<简单条件 >) … ]
| <简单条件 > OR <简单条件 >[( OR <简单条件 >) … ]
<操作 >∷ = <操作名 >[( <变元 >,… ) ]
2004.11.3 AI程序设计 50
第一部分:第 2章 知识表示方法
2.3.1.2 产生式与蕴含式
由产生式的一般描述可以看出, 产生式与逻辑蕴含式在形式上非常
相似, 但二者又有所不同 。 事实上, 逻辑蕴含式只是产生式的一种特
殊情况 。
产生式除逻辑蕴含式外, 还包括各种操作, 规则, 变换, 算子, 函
数等等 。 概括来讲, 产生式描述了事物之间的一种对应关系 (包括因
果关系和蕴含关系 ),其外延十分广泛 。 状态转换规则和问题变换规
则都是产生式规则;程序设计语言的文法规则, 逻辑中的逻辑蕴含式
和等价式, 数学中的微分和积分公式, 化学中分子结构式的分解变换
规则等等, 也都是产生式规则;甚至体育比赛中的规则, 国家的法律
条文, 单位的规章制度等等, 也都可以表示成产生式规则 。
2004.11.3 AI程序设计 51
第一部分:第 2章 知识表示方法
2.3.1.2 产生式与蕴含式
一个产生式规则就是一条知识, 它既可以是精确知识又可以是不精
确知识 。 而谓词逻辑蕴含式只能表示精确知识 。 此外, 用产生式表示
知识的系统中, 知识的检验是通过事实与前提条件的匹配来实现的,
这样的匹配可以是精确的也可以是不精确的 。 然而, 对于谓词逻辑的
蕴含式而言, 该匹配必须是精确的 。
2004.11.3 AI程序设计 52
第一部分:第 2章 知识表示方法
2.3.2 产生式系统
产生式表示法一般用于所谓的产生式系统 。 产生式系统最早由
E,Post于 1943年提出, 并由 A,Newell和 E,A,Simon于 1972
年作为一种人类认识模型引入到人工智能研究领域 。 现在产生式系
统已经在人工智能中广泛应用, 并取得了很大进展 。
这里讨论的产生式系统, 是指一种基于产生式规则表示的知识系统 。
关于产生式系统的进一步讨论, 将在下一章进行 。
2004.11.3 AI程序设计 53
第一部分:第 2章 知识表示方法
2.3.2.1 产生式系统的组成
产生式系统是用来描述若干个不同的以产生式规则或产生式条件
及其操作对为基础, 相互配合, 协同作用的系统 。
产生式系统一般由全局数据库, 产生式规则库和控制策略三部分组
成 。
产生式规则库是某领域知识 ( 规则 ) 的存储器, 是描述该领域知
识的产生式集合 。 这些规则可以表示为与或树形式 。 该规则库是产
生式系统进行问题求解的基础 。 它是否能够有效地表达领域内的过
程性知识, 能否对知识进行合理地组织和管理, 直接关系到系统的
性能和运行效率 。
2004.11.3 AI程序设计 54
第一部分:第 2章 知识表示方法
2.3.2.1 产生式系统的组成
全局数据库也称为上下文, 黑板, 事实数据库等 。 它是一个用于存
放问题求解过程中各种当前信息的数据结构 。 全局数据库中的已知事
实通常用字符串, 向量, 集合, 矩阵, 表等数据结构表示 。 当产生式
规则库中某条产生式的前提与全局数据库中的某些事实相匹配时, 该
产生式就被激活, 并把用它推出的结论放入全局数据库中, 作为后面
推理的已知事实 。 全局数据库的内容是动态变化的 。
控制策略负责规则的选取和系统的运行 。 它主要完成匹配, 冲突消
解和操作 。 具体地讲就是, 按照一定的策略从产生式规则库中选择规
则与全局数据库中的已知事实进行匹配;如果匹配成功的规则不止一
条, 则需要进行冲突的消解以选取出其中的一条来执行;执行该条规
则的过程中, 将相应的结论加入全局数据库或者执行指定操作, 直至
问题得到求解 。
2004.11.3 AI程序设计 55
第一部分:第 2章 知识表示方法
2.3.2.2 产生式系统的分类
产生式系统从不同的角度出发, 有不同的分类 。 比如,
按推理方向划分可分为, 前向, 后向和双向产生式系统;
按产生式规则库和全局数据库的性质及结构特征划分可
分为可交换, 可分解, 可恢复产生式系统等等 。
2004.11.3 AI程序设计 56
第一部分:第 2章 知识表示方法
2.3.2.2 产生式系统的分类
按推理方向划分,( 1) 前向推理, 是从已知事实出发, 通过规则库
求得结论 。 也被称为数据驱动方式或者自底向上的方式 。 ( 2) 后向
推理, 是从目标 ( 作为假设 ) 出发, 反向使用规则求得已知事实,
也称目标驱动方式或者自顶向下的方式 。 ( 3) 双向推理, 既自底向
上, 又自顶向下做双向推理, 直至某个中间界面上两方向结果相符
便成功结束 。 这种双向推理较前向推理或后向推理所形成的推理网
络要小, 从而推理效率较高 。 运用不同的推理机制就形成了不同的
产生式系统 。
2004.11.3 AI程序设计 57
第一部分:第 2章 知识表示方法
2.3.2.2 产生式系统的分类
按组织结构特征划分,( 1) 对于规则的使用次序是可交换的, 无论使用哪一
条规则都可以达到目的产生式系统被称为可交换产生式系统 。 该系统的特点
是搜索过程不必进行回溯, 无需记录可用规则的作用顺序, 求解效率较高 。
但是系统要求每条规则的执行都要为全局数据库添加新的内容, 这一要求往
往难以适用 。 ( 2) 把一个规模较大且比较复杂的问题分解为若干个规模较小
且比较简单的子问题分别进行求解的系统被称为可分解产生式系统 。 该系统
由于将初始数据库分解为若干子库, 每个子库又可再进一步进行分解, 从而
缩小了搜索范围, 提高了问题求解效率 。 ( 3) 在问题求解过程中, 当出现求
解无法继续的情况时, 能够撤销由前一执行规则所产生的结果, 使全局数据
库恢复到先前的状态, 然后选用别的规则继续求解, 这样的系统被称为可恢
复产生式系统 。 该系统既可以向全局数据库添加新的内容, 又可以删除和修
改旧的内容, 操作灵活方便 。
2004.11.3 AI程序设计 58
第一部分:第 2章 知识表示方法
2.3.2.3 产生式系统的表示
产生式表示法容易描述事实, 规则以及它们的不确定性度量 。
事实可看成是断言一个语言变量的值或是多个语言变量间的关系的陈
述句 。 语言变量的值或语言变量间的关系可以是一个词, 不一定是数
字 。 如雪是白色的, 其中雪是语言变量, 其值是白色的 。 莉莉喜欢牡
丹花, 其中莉莉和牡丹花是两个语言变量, 两者关系的值是喜欢 。
一般情况下, 使用三元组 ( 对象, 属性, 值 ) 表示事实, 用 (关系,
对象 1,对象 2)来表示对象间关系, 若考虑不确定性则可用加入规则
强度的四元组进行表示 。 这种表示及其内部实现就是一个表 。 例如,
事实小王年龄是 15 岁, 可记为 ( Wang Age 15) ;而小王, 小李是
同学, 表达了二者之间的关系, 记为 ( Classmate Wang Lee) 。
2004.11.3 AI程序设计 59
第一部分:第 2章 知识表示方法
2.3.2.3 产生式系统的表示
为求解过程查找的方便, 在知识库中可将某类有关事实以网状, 树状结构
组织连结在一起 。 对于规则, 表示事务间的因果关系, 以, IF Condition
THEN Action”的单一形式来描述, 将规则作为知识的单位 。 其中的
Condition部分称作条件式前件或模式, 而 Action部分称作动作, 后件或结
论 。 条件部分常是一些事实 Ai的合取, 而结论常是某一事实 B,如果考虑不
确定性, 需另附可信度度量值 。
如 MYCIN系统中一条规则的表示 。 从专家那里获得的规则是
IF (1) the stain of organism is gramnegative
AND (2) the morphology of the or ganizm is rop,
AND (3) the aerobicity of the ganizm is anaerobic
THEN there is suggestive evidence(0.6) that the identity of the organism
is bacteroides
2004.11.3 AI程序设计 60
第一部分:第 2章 知识表示方法
2.3.2.3 产生式系统的表示
而用 Lisp实现的机器内部表示为
premise (and(same cntext gram gramneg)
(same cntext morph rod)
(same cntext air anaerobic))
action(conclude cntext zdent bacteroides tally 0.6)
为便于规则的使用, 在知识库中某些规则常按某种观点组织起来放在一起 。
2004.11.3 AI程序设计 61
第一部分:第 2章 知识表示方法
2.3.2.4 产生式系统的运行流程
产生式系统的运行是一个从初始事实出发, 寻求到达目标条件的
搜索求解过程 。 产生式系统求解问题的一般流程如图 2.2所示 。
2004.11.3 AI程序设计 62
第一部分:第 2章 知识表示方法
求解结束
初始化全局数据
库
是否存在未用规则
是否与事实匹配
执行当前规则
记录结论或执行操作
数据库是否包含问题解
是
是
是
否
是否添加事实
是
否
否
否
图 2.2 产生式系统运行流程图
( 1) 对全局数据库进行初始化 。 即把问题
的初始已知事实存入全局数据库 。
(2) 判断规则库中是否存在尚未使用过的规
则, 而且其前提可与全局数据库中的已知
事实相匹配, 则转第 ( 3) 步;否则, 不存
在这样的事实转第 ( 5) 步 。
( 3) 执行当前选中的规则, 并对该规则作
一标记, 把该规则执行后所得的结论送入
全局数据库 。 如果该规则的结论部分指出
的是某些操作, 则执行相应的操作 。
( 4) 检查全局数据库中是否已经包含了问
题的解, 如果包含则问题求解结束;否则,
转第 ( 2) 步 。
( 5) 要求用户提供进一步的问题相关事实,
若能提供则转第 ( 2) 步;否则, 问题求解
结束 。
( 6) 如果规则库中已经没有尚未使用过的
规则, 则问题求解结束 。
2004.11.3 AI程序设计 63
第一部分:第 2章 知识表示方法
2.3.3 产生式表示法的特点
产生式表示格式固定, 形式单一, 规则 ( 知识单位 ) 间相互较为
独立, 没有直接关系, 使数据库的建立较为容易, 处理较为简单的
问题是可取的 。 另外推理方式单纯 。 特别是知识库与推理机是分离
的, 这种结构给知识库的修改带来方便, 对系统的推理路径也容易
做出解释 。 此外, 产生式表示既可以表示确定性知识又可以表示不
确定性知识, 既便于表示启发性知识又便于表达过程性知识 。 此外,
产生式表示既可以表示确定性知识又可以表示不确定性知识, 既便
于表示启发性知识又便于表达过程性知识, 难怪产生式表示经常作
为建造专家系统的首选知识表示方法 。
2004.11.3 AI程序设计 64
第一部分:第 2章 知识表示方法
2.3.3 产生式表示法的特点
但是它也存在着一定的不足, 产生式系统的求解过程是一个担负
进行, 匹配 — 冲突消解 — 执行, 的过程 。 由于规则库一般都比较庞
大, 匹配通常是十分耗时的, 这样系统的工作效率就受到影响 。 同
时在求解复杂问题时还容易引起组合爆炸 。 此外, 产生式适合表达
具有因果关系的过程性知识, 而对于具有结构关系的知识却是无能
为力的 。 因此, 产生式表示法更适合于表示那些相关性不强, 不存
在结构关系的领域性知识 。
2004.11.3 AI程序设计 65
第一部分:第 2章 知识表示方法
2.3.4 与其它知识表示方法的比较
产生式表示法与逻辑表示法 。 产生式表示法的主要思想是基于产生式的, 其描
述形式与逻辑蕴含式十分相似 。 如前所述, 逻辑蕴含式只是产生式的一种特殊
形式 。 然而产生式表示法较之逻辑表示法却有一个突出的优势, 就是可以表示
不确定性知识, 因此它就具有更加广泛的应用 。
产生式表示法与过程表示法 。 产生式系统也可以看成是一种过程表示方式 。 两
者的主要区别在于:子程序表示允许子程序之间可以直接通信;而在产生式系
统中, 产生式规则只能通过全局数据库互相作用 。
产生式表示法与框架表示法 。 产生式表示法主要用于描述事物之间的因果关系,
而框架表示法则主要用于描述事物的内部结构以及事物之间的类属关系 。
2004.11.3 AI程序设计 66
第一部分:第 2章 知识表示方法
2.4 语义网络表示法
语义网络是 Quillian作为人类联想记忆的一个显式心理
学模型提出的。他认为,人在进行交际时总是首先有什
么东西需要说,而所说出的全部句子的形式是由想说什
么这种意图决定的。因此,他主张在处理文句生成的问
题时,需把语义放在第一位。 Simon于 1970年正式提出
了语义网络的概念,并讨论了它和一阶谓词的关系。
2004.11.3 AI程序设计 67
第一部分:第 2章 知识表示方法
2.4 语义网络表示法
2.4.1 语义网络的基本结构
2.4.2 语义网络的知识表示
2.4.3 语义网络与 Prolog
2.4.4 语义网络的求解流程
2.4.5 基本的语义关系
2.4.6 语义网络表示法的特点
2004.11.3 AI程序设计 68
第一部分:第 2章 知识表示方法
2.4.1 语义网络的基本结构
语义网络也称为联想网络, 是知识表示中最重要的方法之一 。 语义
网络利用结点和带标记的边构成的有向图描述事件, 概念, 状况, 动
作以及客体之间的关系 。 带标记的有向图能十分自然的描述客体之间
的关系 。
语义网络通常由语法, 结构, 过程和语义 4部分组成 。 其中, 语法
部分决定表示词汇表中允许用哪些符号, 它涉及各个节点和弧线;结
构部分叙述符号排列的约束条件, 指定各弧线连接的结点对;过程部
分说明访问过程, 这些过程能用来建立和修正描述, 以及回答相应问
题;语义部分确定与描述相关的意义的方法, 即确定有关节点的排列
及其占有物和对应弧线 。
2004.11.3 AI程序设计 69
第一部分:第 2章 知识表示方法
2.4.1 语义网络的基本结构
语义网络是对知识的有向图表示方法 。 一个语义网络是由一些以有向图表
示的三元图 ( 节点 A,弧, 节点 B) 连接而成 。 图中, 节点表示概念, 事物,
时间, 情况等 。 弧是有方向和有标注的 。 方向体现主次, 节点 A为主, 节点 B
为辅 。 弧上的标注表示节点的属性或节点之间的关系 。 这样的三元组的如图
2.3所示 。
从逻辑表示法来看, 一个语义网络相当于一组二元谓词 。 因为三元组 ( 节点 A,
弧, 节点 B) 可写成 P(个体 A,个体 B),其中个体 A,个体 B对应节点 A,节点 B,
而弧及其上标注的节点 A与节点 B的关系由谓词 P来体现 。
A B
RAB
图 2.3 最简单的语义网络(基本网元)
2004.11.3 AI程序设计 70
第一部分:第 2章 知识表示方法
2.4.1 语义网络的基本结构
语义网络的 BNF描述为,
<语义网络 >∷ = <基本网元 >| Merge( <基本网元 >,… )
<基本网元 >∷ = <节点 ><语义联系 ><节点 >
<节点 >∷ = ( <属性 — 值对 >,… )
<属性 — 值对 >∷ = <属性名 >,<属性值 >
<语义联系 >∷ = <预定义语义联系 >| <自定义语义联系 >
其中, Merge( … ) 表示一个合并过程, 它把括弧中的所有基本网元
关联在一起, 从而构成一个语义网络 。 图 2.4就是一个由基本网元合
并而成的语义网络结构的示例 。
2004.11.3 AI程序设计 71
第一部分:第 2章 知识表示方法
2.4.1 语义网络的基本结构
A
C B D
E F G
RAB RAD
RBE
RFE
RCF
RAC
RCG
RDG
图 2.4 语义网络结构示例
2004.11.3 AI程序设计 72
第一部分:第 2章 知识表示方法
2.4.2 语义网络的知识表示
语义网络如同其它知识表示方法一样, 应该能够有效地表示事实以及事物间
关系两方面的知识 。 这两种类型的知识表示在实质上是一致的, 只是表示关
系的连接上方的标记不同而已 。
语义网络较之普通网络最大的特点就在于它能表示事物之间的各种关系 。 因
此, 在语义网络中关系显得尤为重要, 它提供了组织知识的基本结构 。 没有
这些关系, 知识就只是基本事实的一个简单集合;而有了这些关系的描述,
知识就成为可以联系其它知识的关联结构 。 这些可表示的不同关系统称为语
义联系 。
常用的语义联系有 ISA( Is-A), AKO( A-Kind-Of), HAVE,AMO( A-
Member-Of) 等, 表示事物的性质, 属性 。 此外, 还有 Composed-of表示
构成关系; Before,After,At表示时间关系; Located-on,Located-at、
Located-under等表示事物间的位置关系; Similar-to,Near-to表示相似
或接近关系等等 。
2004.11.3 AI程序设计 73
第一部分:第 2章 知识表示方法
2.4.2 语义网络的知识表示
图 2.6是一个简单的用语义联系表示的例子 。
在这里要特别提到的是一种常用的知识表述结构, 即, 对象 -属性 -值 OAV
( Object-Attribute-Value tripe), 。 对象, 属性, 值这三个因素是在构建
语义网络过程中最频繁出现的项, 它们足以描述一个简化的语义网络 。 因此,
OAV常常用于提取语义网络的主要特征项, 并以列表的形式列举出有关知识,
之后通过规则推理转换为机器代码 。
ISA
燕子 鸟 动物
AKO
翅膀
HAVE
图 2.6 语义联系示例
2004.11.3 AI程序设计 74
第一部分:第 2章 知识表示方法
2.4.2 语义网络的知识表示
下面给出一个 OAV描述的例子 ( 参见表 2-1) 。
表 2-1 OAV语义结构举例
对象
属性
值
狗
毛色
棕黄色
狗
品种
京巴
狗
年龄
3
猫
毛色
白色
猫
品种
波斯
猫
年龄
5
2004.11.3 AI程序设计 75
第一部分:第 2章 知识表示方法
2.4.3 语义网络与 Prolog
语义网络表示很容易转换为 Prolog语言 。 因为, Prolog同样
可以有效地表达事实和规则这两方面知识 。
带有参数的谓词可以表示易于理解的某一事实 。 例如,
color( red) ;红色
father_of(tom,john); Tom是 John的父亲
此外, 通过 ISA,HAS-A等关系所表达的谓词, 也可以很好
的表示某种二元关系, 这正与语义网络的特点相吻合 。 例如,
is_a (red,color);红色是一种颜色
has_a (john,father); John有一位父亲
has_a (john,parents); John有双亲
2004.11.3 AI程序设计 76
第一部分:第 2章 知识表示方法
2.4.3 语义网络与 Prolog
但是, 对于上例中用 HAS-A所表示的双亲关系, 如果想要知道
John的父亲或母亲的具体姓名, 则需要在原有谓词之上引入附加谓词
来间接表示 。 例如,
is_a (tom,father); Tom是一位父亲
is_a (rose,mother); Rose是一位母亲
可是还是无法确定 Tom就是 John的父亲或者 Rose就是 John的母
亲, 因此, Prolog采用规则子句来进行描述 。 形式如下,
P:-P1,P2,…,Pn
其中, P为规则头, Pi为子目标;符号,-表示, 如果, 关系 。 这样前
面所说的, 双亲, 的例子, 就可以用 Prolog的子句表示为,
Parent(X,Y):-Father(X,Y)
Parent(X,Y):-Mother(X,Y)
2004.11.3 AI程序设计 77
第一部分:第 2章 知识表示方法
2.4.4 语义网络的求解流程
语义网络对问题求解是通过两种推理过程, 继承和匹配
来完成的 。
继承是指把对事物的描述从概念节点传递到实例节点 。
概念节点是指表示通用概念, 总体名称的节点, 而实例节
点是指表示那些相对于一般性概念的具体实例的节点 。 继
承过程分为 3类:值继承, If-need继承以及 Default继承 。
匹配也是一种有效的推理方式, 在语义网络中它是指通过
建立必要的虚节点和虚链, 通过部件匹配来实现问题求解 。
这里不作具体介绍 。
2004.11.3 AI程序设计 78
第一部分:第 2章 知识表示方法
2.4.4 语义网络的求解流程
用语义网络求解问题的一般过程为,
(1) 根据待求解问题的要求构造一个网络片断, 其中有些
节点或弧的表示为空, 用来反映待求解的问题 。
(2) 依据此网络片断到知识库中去寻找可匹配的网络, 以
找出所需要的信息 。 这种匹配一般不是完全的, 具有不确
定性, 因此需要解决不确定性匹配问题 。
(3) 当问题的语义网络片断与知识库中的某一语义网络片
断相匹配时, 则与该询问相匹配的事实就是所求问题的解 。
2004.11.3 AI程序设计 79
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
1) 类属关系
类属关系是指具有共同属性的不同事物间的分类关系,
成员关系或实例关系 。
A_kind_of:含义为, 是一种,,
表示一个事物是另一个事物的一种类型 。
A_member_of:含义为, 是一员,,
表示一个事物是另一个事物的一个成员 。
Is_a:含义为, 是一个,,
表示一个事物是另一个事物的一个实例 。
2004.11.3 AI程序设计 80
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
2) 包含关系
包含关系也称为聚类关系, 是指具有组织或结构特征
的, 部分与整体, 之间的关系 。 常用的包含关系有,
Part_of:含义为, 是一部分,, 表示一个事物是另一个
事物的一部分 。
2004.11.3 AI程序设计 81
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
3) 属性关系
属性关系是指事物和其属性之间的关系 。 常用的属性
关系有,
Have:含义为, 有,, 表示一个结点具有另一个结点所
描述的属性 。
Can,含义是, 能,,, 会,, 表示一个结点能做另一个
结点的事情 。
2004.11.3 AI程序设计 82
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
4) 时间关系
时间关系是指不同事件在其发生时间方面的先后次序
关系 。 常用的时间关系有,
Before:含义为, 在前,,
表示一个事件在另一个事件之前发生 。
After:含义为, 在后,,
表示一个事件在另一个事件之后发生 。
At:表示某一事件发生的时间 。
2004.11.3 AI程序设计 83
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
5) 位置关系
位置关系是指不同事物在位置方面的关系 。 常用的位
置关系有,
Located_on:含义为, 在上,, 表示某一物体在另一物体之上 。
Located_at:含义为, 在,, 表示某一物体所在的位置 。
Located_under:含义为, 在下,, 表示某一物体在另一物体之下 。
Located_inside:含义为, 在内,, 表示某一物体在另一物体之内 。
Located_outside:含义为, 在外,, 表示某一物体在另一物体之外 。
2004.11.3 AI程序设计 84
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
6) 相近关系
相近关系是指不同事物在形状, 内容等方面相似或接近 。
常用的相近关系有,
Similar_to:含义为, 相似,, 表示某一事物与另一事物
相似 。
Near_to:含义为, 接近,, 表示某一事物与另一事物接
近 。
2004.11.3 AI程序设计 85
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
7) 组成关系
表示, 构成, 联系, 是一种一对多的联系, 被它联系
的节点间不具有属性基继承性 。 常用的组成关系有,
Composed_of:含义为, 构成,,
表示一个事物由另一些事物所组成 。
2004.11.3 AI程序设计 86
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
8) 推论关系
推论关系是指从一个概念推出另一个概念的语义关系 。
常用的组成关系有,
Infer:含义为, 推出,,
表示前提与结论之间的推理关系 。
2004.11.3 AI程序设计 87
第一部分:第 2章 知识表示方法
2.4.6 语义网络表示法的特点
主要优点,( 1) 重要相关性能被明确地清晰地表示出来 。
( 2) 基于联想记忆模型, 相关事实可以从其直接相连的结
点中推导出来, 而不必遍历整个庞大的知识库, 从而避免
了组合爆炸 。 ( 3) 具有继承性, 并易于对继承层次进行演
绎 。 ( 4) 能够利用少量的基本概念的记号建立状态和动作
的描述 。
主要缺点,( 1) 不能保证网络操作所得结沦的有效性 。
( 2) 逻辑表达不充分, 无法嵌入启发式信息 。 ( 3) 对于
网络不存在标准的术语和约定, 语义解释取决于操作网络
的程序 。 ( 4) 网络的搜索需要强有力的组织原则 。
2004.11.3 AI程序设计 88
第一部分:第 2章 知识表示方法
2.5 框架表示法
框架理论是美国著名学者 Minsky于 1975年提出的。
该理论认为人们对现实世界中各种事物的认识都是以一
种类似于框架的结构存储在记忆当中的,当面临一个新
事物时,就从记忆中找出一个适合的框架,并根据实际
情况对其细节加以修改补充,从而形成对当前事物的认
识。框架表示法正是以框架理论为基础发展起来的一种
结构化的知识表示法。目前,已成为一种被广泛使用的
知识表示方法。
2004.11.3 AI程序设计 89
第一部分:第 2章 知识表示方法
2.5 框架表示法
2.5.1 框架的基本结构
2.5.2 框架的 BNF描述
2.5.3 框架系统中的预定义槽名
2.5.4 框架系统的问题求解过程
2.5.5 框架系统的程序语言实现
2.5.6 框架系统的特点
2004.11.3 AI程序设计 90
第一部分:第 2章 知识表示方法
2.5.1 框架的基本结构
框架是一种集事物各方面属性的描述为一体,
并反映相关事物间各种关系的数据结构。它是知
识表示的基本单位。一个框架由若干个, 槽, 构
成,槽又依据具体情况划分为若干个, 侧面, 。
槽用于描述对象的某一方面的属性,侧面用于描
述相应属性的某一方面。槽与侧面所具有的属性
值分别称为槽值和侧面值。
2004.11.3 AI程序设计 91
第一部分:第 2章 知识表示方法
2.5.1 框架的基本结构
框架的基本结构可表示如下,
<框架名 >
<槽名 1>,<槽值 1> <侧面名 11> 值 111,值 112,..,
<侧面名 12> 值 121,值 122,..,
,.,
<槽名 2>,<槽值 2> <侧面名 21> 值 211,值 212,..,
<侧面名 22> 值 221,值 222,..,
,.,
<槽名 n>,<槽值 n> <侧面名 n1> 值 n11,值 n12,..,
<侧面名 n2> 值 n21,值 n22,..,
,.,
<约束 >,<约束条件 1>
<约束条件 2>
,.,
<约束条件 k>
2004.11.3 AI程序设计 92
第一部分:第 2章 知识表示方法
2.5.1 框架的基本结构
例 下面是一个描述, 大学教师, 的框架,
框架名,<大学教师 >
类属,<教师 >
学位,( 学士, 硕士, 博士 )
专业,<学科专业 >
职称,( 助教, 讲师, 副教授, 教授 )
外语:语种:范围,( 英, 法, 日, 俄, 德, … )
缺省:英
水平,( 优, 良, 中, 差 )
缺省:良
2004.11.3 AI程序设计 93
第一部分:第 2章 知识表示方法
2.5.2 框架的 BNF描述
下面给出框架的 BNF描述,
〈 框架 〉 ∷ = 〈 框架头 〉 〈 槽部分 〉 [ 〈 约束部分 〉 ]
〈 框架头 〉 ∷ = 〈 框架名 〉 〈 框架名的值 〉
〈 槽部分 〉 ∷ = 〈 槽 〉,[ 〈 槽 〉 ]
〈 约束部分 〉 ∷ = 〈 约束 〉 〈 约束条件 〉,[ 〈 约束条件 〉 ]
〈 框架名的值 〉 ∷ = 〈 符号名 〉 | 〈 符号名 〉 ( 〈 参数 〉,[ 〈 参数 〉 ])
〈 槽 〉 ∷ = 〈 槽名 〉 〈 槽值 〉 | 〈 侧面部分 〉
〈 槽名 〉 ∷ = 〈 系统预定义槽名 〉 | 〈 用户自定义槽名 〉
〈 槽值 〉 ∷ = 〈 静态描述 〉 | 〈 过程 〉 | 〈 谓词 〉 | 〈 框架名的值 〉 | 〈 空 〉
〈 侧面部分 〉 ∷ = 〈 侧面 〉,[ 〈 侧面 〉 ]
〈 侧面 〉 ∷ = 〈 侧面名 〉 〈 侧面值 〉
〈 侧面名 〉 ∷ = 〈 系统预定义侧面名 〉 | 〈 用户自定义侧面名 〉
〈 侧面值 〉 ∷ = 〈 静态描述 〉 | 〈 过程 〉 | 〈 谓词 〉 | 〈 框架名的值 〉 | 〈 空 〉
〈 静态描述 〉 ∷ = 〈 数值 〉 | 〈 字符串 〉 | 〈 布尔值 〉 | 〈 其它值 〉
〈 过程 〉 ∷ = 〈 动作 〉 | 〈 动作 〉,[ 〈 动作 〉 ]
〈 参数 〉 ∷ = 〈 符号名 〉
2004.11.3 AI程序设计 94
第一部分:第 2章 知识表示方法
2.5.2 框架的 BNF描述
对此表示有如下几点说明,
(1)框架名的值允许带有参数 。 此时, 当另一个框架调用它时需要提供
相应的实在参数 。
(2)当槽值或侧面值是一个过程时, 它既可以是一个明确表示出来的
〈 动作 〉 串, 也可以是对主语言的某个过程的调用, 从而可将过程性
知识表示出来 。
(3)当槽值或侧面值是谓词时, 其真值由当时谓词中变元的取值确定 。
(4)槽值或侧面值为 〈 空 〉 时, 表示该值等待以后填入, 当时还不能确
定 。
(5)〈 约束条件 〉 是任选的, 当不指出约束条件时, 表示没有约束 。
2004.11.3 AI程序设计 95
第一部分:第 2章 知识表示方法
2.5.3 框架系统中的预定义槽名
在框架系统中,框架之间的联系实际上是通过在槽中填入相应
的框架名来实现的。为了提供一些常用且可公用的槽名,在框架
系统中通常预先定义了一些标准槽名,称这些槽名为系统预定义
槽名。在框架系统中,框架之间的联系实际上是通过在槽中填入
相应的框架名来实现的。为了提供一些常用且可公用的槽名,在
框架系统中通常预先定义了一些标准槽名,称这些槽名为系统预
定义槽名。常用的预定义槽名有以下几种,is_a槽,AKO槽,
subclass槽,instance槽,part_of槽,infer槽,
possible_reason槽,similar槽,rotation槽。
2004.11.3 AI程序设计 96
第一部分:第 2章 知识表示方法
2.5.3 框架系统中的预定义槽名
(1) is_a槽
is_a槽用来指出一个具体事物与其抽象概念间的类属关系 。 其直观
含义为, 是一个,, 表示一个事物是另外一个事物的特例 。 设 F和
G是两个实体框架测, F is_a G”的含义为:实体集 F为实体集 G的
一个特例 。 一般来说, is_a槽所指出的联系都具有继承性, 即下层
框架可以继承上层框架所描述的属性或值 。
2004.11.3 AI程序设计 97
第一部分:第 2章 知识表示方法
2.5.3 框架系统中的预定义槽名
(2) AKO槽
AKO槽用来指出事物间在抽象概念上的类属关系 。 其直观含义为, 是一种
( A Kind Of),, 表示一个事物是另外一个事物的一种类型, 例如分类问
题 。 用 AKO作为下层框架的槽名时, 其槽值为上层框架的框架名 。 它表示
该下层框架所描述的事物比其上层框架更具体, 或者说该上层框架所描述
的事物比下层框架更一般或更抽象 。 用 AKO作为下层框架的槽名时, 说明
下层框架对上层框架具有继承性, 即下层框架可以继承其上层框架所描述
的属性或值 。
(3) subclass槽
subclass槽用来指出于类与类之间的类属关系 。 当用它作为某下层框架的
槽时, 表示该下层框架是其上层框架的一个子类 。
2004.11.3 AI程序设计 98
第一部分:第 2章 知识表示方法
2.5.3 框架系统中的预定义槽名
(4) instance槽
instance槽用来建立, AKO”槽的逆关系 。 当用它作为某上层框架的槽时,
可用来指出它的下一层框架都有哪些 。 由 instance槽所建立起来的上, 下层
框架间的联系具有继承性, 即下层框架可以继承上层框架所描述的属性与值 。
(5) part_of槽
part_of槽用于指出, 部分, 与, 全体, 的关系 。 当用它作为某下层框架的
槽时, 它指出该下层框架所描述的事物仅是其上层框架的一部分 。 例如, 上
层框架描述的是, 人体,, 而下层框架描述的是, 手, 。 显然, 手仅是人体
的一部分 。 需要指出的是, part_of槽与前面提到的 4种槽在本质上是有区
别的 。 前面 4种槽描述的都是上, 下层框架之间的类属关系, 它们之间具有
共同特征, 且具有继承性 。 而 part_of槽仅是指出下层框架为上层框架的子
结构, 它们之间一般不具有共同特征, 也不具有继承性 。
2004.11.3 AI程序设计 99
第一部分:第 2章 知识表示方法
2.5.3 框架系统中的预定义槽名
(6) infer槽
infer槽用于指出两个框架所描述事物间的逻辑推理关系, 它可用来表示相应
的产生式规则 。 例如, 有如下知识,
框架名,〈 诊断规则 〉
症状 1:咳嗽
症状 2:发烧
症状 3:打喷嚏
infer,〈 结论 〉
可信度,0.8
框架名,〈 结论 〉
病名:感冒
用药:口服感冒清
服法:一日三次, 每次 2粒
2004.11.3 AI程序设计 100
第一部分:第 2章 知识表示方法
2.5.3 框架系统中的预定义槽名
(7) possible_reason槽
possible_reason槽与 infer槽的作用相反, 用来把某个结论与可能的原因联
系起来 。 例如在上述, 结论, 框架中, 可增加一个 possible_reason槽, 其
槽值为某个框架的框架名 。
(8) similar槽
similar槽用于指出两个框架所描述的事物之间的相似关系 。 如果两个框架所
表示事物的成员之间有足够多的共同特性, 则认为它们是相似的 。 这种相似
关系用 similar槽描述 。
(9) rotation槽
框架可以通过完全任意的关系相联 。 例如, rotation槽用于指出两个框架所
描述的事物之间的, 旋转, 关系 。 如果两个框架所表示的事物是从两个不同
角度对同一实体的观察, 则它们之间可以通过 rotation槽相连 。
2004.11.3 AI程序设计 101
第一部分:第 2章 知识表示方法
2.5.4 框架系统的问题求解过程
由框架的形式可以看出, 框架适合表达结构性的知识 。 所以, 概念, 对象等
知识最适于用框架表示 。 其实, 框架的槽就是对象的属性或状态, 槽值就是
属性值或状态值 。 不仅如此, 框架还可以表示行为 ( 动作 ), 所以, 有些过
程性事件或情节也可用框架网络来表示 。 这是框架系统的表达能力 。
在框架理论中, 框架是知识的基本单位, 把一组有关的框架连接起来便
可形成一个框架系统 。 在框架系统中, 系统的行为由该系统内框架的变化来
实现, 系统的推理过程由框架之间的协调来完成 。
用框架表示知识的系统中, 问题求解主要是通过匹配与填槽实现的 。 用框架
求解问题的基本过程是,
( 1) 将问题用适当的框架表示出来 。
( 2) 与数据库中已有的框架进行匹配 。
( 3) 确定可匹配的预选框架, 收集进一步信息 。
( 4) 选用适当的评价方法对预选框架进行评价, 决定其是否被接受 。
2004.11.3 AI程序设计 102
第一部分:第 2章 知识表示方法
2.5.5 框架系统的程序语言实现
框架系统可以方便的用程序语言进行实现 。 有一种名为框架表示
语言 FRL( Frame Representation Language) 的程序设计语言,
就是专门基于框架的程序设计语言 。 用它就可以方便地实现框架知
识表示 。 不过, 用 PROLOG也可方便地实现框架表示 。
用 PROLOG实现框架表示, 一般采用含结构或表的谓词来实现 。
2004.11.3 AI程序设计 103
第一部分:第 2章 知识表示方法
2.5.5 框架系统的程序语言实现
例如, 前面的, 教师, 框架用 PROLOG可表示如下,
frame( name(, 教师, ),
kind_of(, 〈 知识分子 〉,),
work( scope(, 教学,,, 科研, ), default(, 教学, ))
sex(, 男,,, 女, ),
reco_of_f_s(, 中师,,, 高师, ),
type(, 〈 小学教师 〉,,” 〈 中学教师 〉,,,〈 大学教师 〉,)),
2004.11.3 AI程序设计 104
第一部分:第 2章 知识表示方法
2.5.6 框架系统的特点
主要优点,① 有利于期望引导的处理 。 ② 在给定的状况下, 通过
设计能决定其本身的可利用性或者提供其他框架 。 ③ 深层次, 结构
性和一致性较好, 并且具有继承性 。 ④ 知识组织的方式有利于推理 。
主要缺点,① 许多实际情况与原型不符 。 ② 不善于表达过程性知
识 。 ③ 属性的不确定性带来知识表示的不确定性 。 ④ 对新情况, 特
例及复合对象的描述能力欠缺 。
框架表示法通常适用于表述数学概念及相对较窄的专业知识领域 。
2004.11.3 AI程序设计 105
第一部分:第 2章 知识表示方法
2.6 脚本表示法
脚本表示法是夏克 ( R,C,Schank) 依据他的概念
依赖理论提出的一种知识表示方法, 时间约在 1975年 。
脚本与框架类似, 由一组槽组成, 用来表示特定领域内
一些事件的发生序列 。
2004.11.3 AI程序设计 106
第一部分:第 2章 知识表示方法
2.6 脚本表示法
2.6.1 概念依赖理论
2.6.2 脚本的结构
2.6.3 脚本的推理
2.6.4 脚本表示法的特点
2004.11.3 AI程序设计 107
第一部分:第 2章 知识表示方法
2.6.1 概念依赖理论
在人类的各种知识中,常识性知识是数量最大、涉及
面最宽、关系最复杂的知识,很难把它们形式化地表示出
来交给计算机处理。面对这一难题,夏克提出了概念依赖
理论,其基本思想是:把人类生活中各类故事情节的基本
概念抽取出来,构成一组原子概念,确定这些原子概念间
的相互依赖关系,然后把所有故事情节都用这组原子概念
及其依赖关系表示出来。
夏克在其研制的 SAM( Script Applier Mechanism)
中对动作一类的概念进行了原子化,抽取了 11种原子动作,
并用其来表示槽的行为。这 11种原子动作是,
2004.11.3 AI程序设计 108
第一部分:第 2章 知识表示方法
2.6.1 概念依赖理论
(1) PROPEL:表示对某一对象施加外力。例如推、拉、打等。
(2) GRASP:表示行为主体控制某一对象 。 例如抓起某东西, 扔掉某东西等 。
(3) MOVE:表示行为主体变换自己身体的某一部位 。 例抬手, 蹬脚, 坐下等
(4) ATRANS:表示某种抽象关系的转移 。 例如当把某物交给另一人时, 该物的所
有关系就发生了转移 。
(5) PTRANS:表示某一物理对象物理位置的改变 。 例如某人从一处走到另一处,
其物理位置发生了变化 。
(6) ATTEND:表示用某个感觉器官获取信息 。 例用眼睛查看或听某种声音等 。
(7) INGEST:表示把某物放入体内 。 例如吃饭, 喝水等 。
(8) EXPEL:表示把某物排出体外 。 例如落泪, 呕吐等 。
(9) SPEAK:表示发出声音 。 例如唱歌, 喊叫, 说话等 。
(10) MTRANS:表示信息的转移 。 例如看电视, 窃听, 交谈, 读报等 。
(11) MBUILD:表示由已有的信息形成新信息 。
2004.11.3 AI程序设计 109
第一部分:第 2章 知识表示方法
2.6.2 脚本的结构
脚本表述的是特定范围内的原型事件的结构, 它是框架的一种特殊形
式, 用一组槽来描述这些事件的发生序列 。 脚本通常由开场条件, 角色,
道具, 场景和结局等几部分组成 。
一个脚本通常由以下几部分组成 。
(1) 进入条件:给出在脚本中所描述事件的前提条件 。
(2) 角色:是一些用来表示在脚本所描述事件中可能出现的有关人物的槽 。
(3) 道具:是一些用来表示在脚本所描述事件中可能出现的有关物体的槽 。
(4) 场景:用来描述事件发生的真实顺序 。 一个事件可以由多个场景组成, 而每
个场景又可以是其他的脚本 。
(5) 结局:给出在脚本所描述事件发生以后所产生的结果 。
2004.11.3 AI程序设计 110
第一部分:第 2章 知识表示方法
2.6.2 脚本的结构
下面以夏克的, 餐厅, 脚本为例来说明各个部分的组成 。
(1) 进入条件,① 顾客饿了, 需要进餐; ② 顾客有足够的钱 。
(2) 角色:顾客, 服务员, 厨师, 老板 。
(3) 道具:食品, 桌子, 菜单, 钱 。
(4) 场景,
场景 1:进入 —— ① 顾客进入餐厅; ② 寻找桌子; ③ 在桌子旁坐下 。
场景 2:点菜 —— ① 服务员给顾客菜单; ② 顾客点菜;
③ 顾客把菜单还给服务员; ④ 顾客等待服务员送菜 。
场景 3:等待 —— ① 服务员告诉厨师顾客所点的菜; ② 厨师做菜, 顾客等待 。
场景 4:吃饭 —— ① 厨师把做好的荣给服务员; ② 服务员把菜送给顾客;
③ 顾客吃菜 。
场景 5:离开 —— ① 服务员拿来账单; ② 顾客付钱给服务员;
③ 顾客离开餐厅 。
(5) 结果,① 顾客吃了饭, 不饿了; ② 顾客花了钱; ③ 老板赚了钱; ④ 餐厅食品少了 。
2004.11.3 AI程序设计 111
第一部分:第 2章 知识表示方法
2.6.3 脚本的推理
脚本所描述的事件是一个因果链 。 链头是一组开场条件, 只有当这
些初始条件满足时, 该脚本中的事件才能开始;链尾是一组结果,
只有当这一组结果满足时, 该脚本中的事件才能结束, 以后的事件
或事件序列才能发生 。 在这个因果链中, 一个事件和其前后事件之
间是相互联系的, 前面的事件可使当前事件产生, 当前事件又可能
使后面的事件产生 。
一个脚本建立之后, 如果已知该脚本适合于所给定的事件, 则对一
些在脚本中没有明显提出的事件, 可以通过脚本进行预测, 对那些
在脚本中已明显提到的事件, 可通过脚本给出它们之间的联系 。 一
个脚本在使用之前必须先将其激活, 根据脚本的重要性, 激活脚本
有以下两种方法,
2004.11.3 AI程序设计 112
第一部分:第 2章 知识表示方法
2.6.3 脚本的推理
(1) 对于不属于事件核心部分的脚本, 只需要设置指向该脚本的指
针即可, 以便当它成为核心时能够启用 。 例如, 对于前面讨论过的
餐厅脚本, 有以下事件,
,何雨在去展览会的路上经过他喜欢的饭馆 。 他非常喜欢这次网络
信息展览会, 。 那么应该采用这种方法, 设置指向餐厅脚本的指什 。
(2) 对于符合核心事件的脚本, 则应使用在当前事件中涉及到的具
体对象和人物去填写脚本槽 。 剧本的前提, 道具, 角色和事件等常
能起到激活脚本的指示器的作用 。
一旦脚本被激活, 则可以用它来进行推理 。 其中, 最重要的是利用
剧本可以预测没有明确提及的事件的发生 。
2004.11.3 AI程序设计 113
第一部分:第 2章 知识表示方法
2.6.3 脚本的推理
例如, 对于以下情节,
,昨晚, 何雨到了餐厅, 他订了鱼香肉丝, 大米 。 当他要付款时发
现没钱了 。 因为开始下雨了, 所以他赶快回家了, 。
如果有人问,
,昨晚, 何雨吃饭了吗?,
虽然在上面没有提到何雨吃没吃饭的问题, 但借助于餐厅剧本, 可
以回答:, 他吃了, 。 这是因为启用了餐厅剧本 。 情节中的所有事
件与剧本中所预测的事件序列相对应, 因为可以推出整个事件正常
进行时所得出的结果 。
2004.11.3 AI程序设计 114
第一部分:第 2章 知识表示方法
2.6.3 脚本的推理
但是, 一旦一个典型的事件被中断, 也就是给定情节中的某个事件与剧
本中的事件不能对在时, 则剧本便不能预测被中断以后的事件了 。 例如,
有如下情节,
,何雨走进餐厅, 他被带到餐桌旁, 订了一大盘鱼香肉丝和米饭之后,
他坐在那里等了许久 。 于是, 他生气地走了 。,
在该情节中, 因为要久等, 所以何雨走了 。 这一事件改变了餐厅脚本中
所预测的事件序列, 因而被中断了 。 这时就不能推断何雨是否付了帐等
情节 。 但是, 仍然可以推出他看了菜单, 这是因为看菜单事件发生在中
断之前 。 从这个例子还可以看出, 利用脚本可以将事情的注意力集中在
,因为久等, 何雨生气了, 这样一些特殊事件的发生上 。
2004.11.3 AI程序设计 115
第一部分:第 2章 知识表示方法
2.6.4 脚本表示法的特点
脚本结构与框架结构相比, 要呆板得多, 知识表示的
范围也比较窄 。 因此, 脚本无法有效表示生活当中多种
多样的知识 。 但是, 对于表达预先构思好的特定知识 或
顺序性动作及事件, 如理解故事情节等, 是非常有效的 。
目前, 脚本表示主要在自然语言理解方面获得了一些应
用 。
2004.11.3 AI程序设计 116
第一部分:第 2章 知识表示方法
2.7 过程表示法
在人工智能的发展史中, 关于知识的表示方法曾存在
两种不同的观点 。 一种观点认为知识主要是陈述性的,
其表示方法应着重将其静态特性, 即事物的属性以及事
物间的关系表示出来, 称以这种观点表示知识的方法为
陈述式或说明性表示方法;另一种观点认为知识主要是
过程性的, 其表示方法应将知识及如何使用这些知识的
控制性策略均表述为求解问题的过程, 称以这种观点表
示知识的方法为过程性表示方法, 或过程表示法 。
2004.11.3 AI程序设计 117
第一部分:第 2章 知识表示方法
2.7 过程表示法
2.7.1 表示知识的方法
2.7.2 过程表示的问题求解过程
2.7.3 过程表示的特点
2.7.4 过程性与说明性表示方法的比较
2004.11.3 AI程序设计 118
第一部分:第 2章 知识表示方法
2.7.1 表示知识的方法
说明性表示方法是一种静态表示知识的方法,其主要特征是把领域
内的过程性知识与控制性知识(即问题求解策略)分离开来。
过程性表示方法着重于对知识的利用, 它把与问题有关的知识以及
如何运用这些知识求解问题的控制策略都表述为一个或多个求解问题
的过程, 每一个过程是一段程序, 用于完成对一个具体事件或情况的
处理 。 在问题求解过程中, 当需要使用某个过程时就调用相应的程序
并执行 。 在以这种方法表示知识的系统中, 知识库是一组过程的集合,
当需要对知识库进行增, 删, 改时, 则相应地增加, 删除及修改有关
的过程 。
2004.11.3 AI程序设计 119
第一部分:第 2章 知识表示方法
2.7.1 表示知识的方法
前面所讨论的几种知识表示方法, 均属陈述性知识表示, 它们所强
调的是知识的静态, 显式描述, 而对于如何使用这些知识, 则需要通
过控制策略来决定 。 过程性知识表示则不同, 它可将有关某一问题领
域的知识, 连同如何使用这些知识的方法, 均隐式地表示为一个求解
问题的过程 。
过程性知识表示方法中, 过程所给出的是事物的一些客观规律, 表
达的是如何求解问题, 知识的描述形式就是程序, 所有信息均隐含在
程序之中 。 过程表示没有固定的表示形式, 如何描述知识完全取决于
具体问题 。
2004.11.3 AI程序设计 120
第一部分:第 2章 知识表示方法
2.7.1 表示知识的方法
一般来说, 一个过程规则由以下 4部分组成 。
(1) 激发条件 。 激发条件由推理方向和调用模式两部分组成 。 其中, 推理方
向用于指出推理是正向推理 ( FR) 还是逆向推理 ( BR) 。 若为正向推理, 则
只有当综合数据库中的已有事实可以与其, 调用模式, 匹配时, 该过程规则
才能被激活 。 若为逆向推理, 则只有当, 调用模式, 与查询目标或子目标匹
配时才能将该过程规则激活 。
(2) 演绎操作 。 演绎操作由一系列的子目标构成 。 当前面的激发条件满足时,
将执行这里列出的演绎操作 。
(3) 状态转换 。 状态转换操作用来完成对综合数据库的增, 删, 改操作 。
(4) 返回 。 过程规则的最后一个语句是返回语句, 用于指出将控制权返回到
调用该过程规则的上一级过程规则那里去 。
2004.11.3 AI程序设计 121
第一部分:第 2章 知识表示方法
2.7.1 表示知识的方法
作为例子, 下面给出一个关于同学问题的过程表示 。 设有如下知识,
,如果 x与 y是同班同学, 且 z是 x的老师, 则 z也是 y的老师,
可用过程规则表示为,
BR( Teacher? z? y)
GOAL( Classmate? x y)
GOAL( Teacher z x)
INSERT( Teacher z y)
RETURN
其中 BR是逆向推理标志; GOAL表示求解子目标, 即进行过程调用; INSERT
表示对数据库进行插入操作; RETURN作为结束标志;带,?, 的变量表示
其值将在该过程中求得 。
2004.11.3 AI程序设计 122
第一部分:第 2章 知识表示方法
2.7.2 过程表示的问题求解过程
在用过程规则表示知识的系统中, 问题求解的基本过程是:每当有
一个新的目标时, 就从可以匹配的过程规则中选择一个执行之 。 在该
规则的执行过程中可能会产生新的目标, 此时就调用相应的过程规则
并执行它 。 反复进行这一过程, 直至执行到 RETURN语句, 这时将控制
权返回给调用当前过程的上一级过程规则, 并依次按照调用时的相反
次序逐级返回 。 在这一过程中, 如果某过程规则运行失败, 就另选择
一个同层的可匹配的过程规则执行, 如果不存在这样的过程规则, 则
返回失败标志, 并将执行的控制权移交给上一级过程规则 。
下面说明采用正向推理的问题求解过程 。
2004.11.3 AI程序设计 123
第一部分:第 2章 知识表示方法
2.7.2 过程表示的问题求解过程
设综合数据库中有以下已知事实,
( Classmate 王涛 赵晔 )
( Teacher 林海 王涛 )
其中, 第一个事实表示王涛与赵晔是同班同学;第二个事实表示林海是王涛的老师 。
假设需要求解的问题是:找出两个人 w及 v,其中 w是 v的老师 。 该问题可表示为
GOAL( Teacher? w? v)
求解该问题的过程是,
(1) 在过程规则库中找出对于问题 GOAL( Teacher? w? v), 其激发条件可以满足的过程现则 。 显然,
BR( Teacher? z? y) 经如下变量代换,w / z,v / y
之后可以匹配, 因此选用该过程规则 。
(2) 执行该过程规则中的第一个语句 GOAL( Classmate? x y) 。 此时, 其中的 y已被 v代换 。 经与已
知事实 ( Classmate 王涛 赵晔 ) 匹配, 分别求得了变量 x及 v的值, 即
x = 王涛 v = 赵晔
(3) 执行该过程规则中的第二个语句 GOAL( Teacher z x) 。 此时, x的值已经知道, z已被 w代换 。
经与已知事实 ( Teacher 林海 王涛 ) 匹配, 求得了变量 w的值, 即
w = 林海
( 4) 执行该过程规则中的第三个语句 INSERT( Teacher z y), 此时, z与 y的值均已知道, 分别是
林海和王涛, 因此这时插入数据库的事实是,
( Teacher 林海 赵晔 )
这表明, 林海也是赵晔的老师,, 求得了问题的解 。
2004.11.3 AI程序设计 124
第一部分:第 2章 知识表示方法
2.7.3 过程表示的特点
过程表示法的知识有如下优点,
(1) 表示效率高
过程表示法是用程序来表示知识的, 而程序能准确的表明先做什么, 后做什么
以及怎样做, 并直接嵌入一些启发式的控制信息 。 因此, 可以避免选择及匹配
那些无关的知识, 也不需要跟踪那些不必要的路径, 从而提高了系统的运行效
率 。
(2) 控制系统容易实现
由于控制性质已嵌入到程序中, 因而控制系统就比较容易设计 。
过程表示法的主要缺点是不易修改和添加新知识, 而且当对某一过程进行修改
时, 又可能影响到其他过程, 对系统的维护带来不便 。
目前的发展趋势是探讨说明性与过程性相结合的表示方法,以便在可维护性、
可理解性及运行效率方面寻求一种比较合理的解决方法。
2004.11.3 AI程序设计 125
第一部分:第 2章 知识表示方法
2.7.4 与说明性表示方法的比较
说明性的知识表示方法都是对知识和事实的一种静态描述, 是对
知识的一种显式表达形式 。 而过程性表示方法则是将有关某一问题
领域的知识, 连同如何使用这些知识的方法, 都隐式地表达为一个
求解问题的过程 。 它强调的是知识的动态方面, 即如何发现相关的
知识并进行推理等等 。 因此过程能够最好地体现知识的行为 。
过程表示是将知识包含在若干过程之中 。 过程是一小段程序, 它
处理某些特殊事件或特殊状况 。 每个过程都包含说明客体和事件的
知识, 以及在说明完好的情况下的运行知识等 。 过程通常用子程序
或模块实现 。 采用过程表示知识库的特征为, 知识库是一组过程集
合 。 知识库的修改是增加/删除子程序, 或修改子程序及访问条件 。
2004.11.3 AI程序设计 126
第一部分:第 2章 知识表示方法
2.7.4 与说明性表示方法的比较
过程表示方法与说明性表示方法的比较, 其 主要优点 是,① 有利
于表示启发式知识 。 ② 能实现扩充逻辑推理 ( 如缺省推理等 ) 。 ③
具有高度模块化的优点 。 ④ 能够通过类比进行推理 。
其 主要缺点 是; ① 由于知识隐含在过程之中, 因此难于修改和维
护 。 ② 固定的控制信息限定了其他可能的方法 。 过程表示方法本身
的适用范围比较窄, 但是研究说明性表示与过程性表示相结合的高
效, 易维护, 可理解的知识表示方法却是很有意义的 。
2004.11.3 AI程序设计 127
第一部分:第 2章 知识表示方法
2.8 Petri网表示法
Petri网的概念是 1962年由德国学者 Cah Abam Petri
提出的。开始是用于构造系统模型及进行动态特性分析,
后来逐渐被用于知识表示。
2004.11.3 AI程序设计 128
第一部分:第 2章 知识表示方法
2.8 Petri网表示法
2.8.1 Petri网的基本概念
2.8.2 表示知识的方法
2.8.3 Petri网表示法的特点
2004.11.3 AI程序设计 129
第一部分:第 2章 知识表示方法
2.8.1 Petri网的基本概念
Petri网的概念是 1962年由德国学者 Cah Abam Petri提出的。开
始是用于构造系统模型及进行动态特性分析,后来逐渐被用于知识
表示。
Petri网表示法中,对于不同的应用,网的构成及构成元素的意
义均不相同。但有三种元素是基本的,它们是:位置、转换及标记。
这三种元素之间的关系如图所示。
图 2.8 Petri网
Yj
Pj
Yk
pk ti
图中 pj 与 pk分别代表
第 j个和第 k个位置,
yj 与 yk分别是这两个
位置的标记,ti是某
一转换。
2004.11.3 AI程序设计 130
第一部分:第 2章 知识表示方法
2.8.2 表示知识的方法
如果用 pj 与 pk分别对应产生式规则的前提 dj和结论 dk,用
ti代表规则强度 μi, 则上图所示的 Petri网就与如下产生式
规则有相同的含义,
IF dj THEN dk (CF=μi)
2004.11.3 AI程序设计 131
第一部分:第 2章 知识表示方法
2.8.2 表示知识的方法
对于比较复杂的知识, Petri网通常用一个 8元组来表示知识之间的因果关系 。 具
体形式是,
(P,T,D,I,O,f,α,β)
其中,P是位置的有限集, 记为 P={p1,p2,…,pn};
T是转换的有限集, 记为 T= {t1,t2,…,tn} ;
D是命题的有限集, 记为 D= {d1,d2,…,dn} ;
I是输入函数, 表示从位置到转换的映射;
O是输出函数, 表示从转换到位置的映射;
F是相关函数, 表示从转换到 0~1之间一个实数的映射, 表示规则强度;
α是相关函数, 表示从转换到 0~1之间一个实数的映射, 表示位置对应命题的可
信度;
β是相关函数, 表示从位置到命题的映射, 表示位置所对应的命题 。
2004.11.3 AI程序设计 132
第一部分:第 2章 知识表示方法
2.8.2 表示知识的方法
在上面的叙述中, 用到了, 规则强度, 及, 可信度, 的概念, 这是用
来表示不确定性知识的 。 对于知识的不确定性有多种表示方法,, 可信
度, 是其中的一种, 它用来指出对知识为真的相信程度, 通常用 [0,1]
上的一个实数表示, 值越大表示相信为真的程度越高 。 对于一个产生式
规则, 其可信度称为规则强度 。 在上面的叙述中, 用到了, 规则强度,
及, 可信度, 的概念, 这是用来表示不确定性知识的 。 对于知识的不确
定性有多种表示方法,, 可信度, 是其中的一种, 它用来指出对知识为
真的相信程度, 通常用 [0,1]上的一个实数表示, 值越大表示相信为真
的程度越高 。 对于一个产生式规则, 其可信度称为规则强度 。
2004.11.3 AI程序设计 133
第一部分:第 2章 知识表示方法
2.8.2 表示知识的方法
Petri网表示法的基本思想就是用不同的位置来代表产生式规则的前提及结论,
用转换来表示不同的规则强度, 从而实现 Petri网对产生式规则的规则集的映射 。
对于如下产生式规则集,
r1,IF d1 THEN d2 (CF=0.85)
r2,IF d2 THEN d3 (CF=0.8)
r3,IF d2 THEN d4 (CF=0.8)
r4,IF d4 THEN d5 (CF=0.9)
r5,IF d1 THEN d6 (CF=0.9)
r6,IF d6 THEN d9 (CF=0.93)
r7,IF d1 AND d8 THEN d7 (CF=0.9)
r8,IF d7 THEN d4 (CF=0.9)
则可据此画出对应的 Petri网图 ( 留给读者完成 ) 。
2004.11.3 AI程序设计 134
第一部分:第 2章 知识表示方法
2.8.3 Petri网表示法的特点
Petri网表示法的主要特点是,① 便于描述系统状态
的变化及对系统特性的分析 。 ② 可在不同层次上变换描
述, 不必注意细节及相应的物理表示 。 ③ 适用于表述不
确定性知识 。
2004.11.3 AI程序设计 135
第一部分:第 2章 知识表示方法
2.9 面向对象表示法
面向对象是 20世纪 90年代软件的核心技术之一, 并已
在计算机学科的众多领域中得到了成功应用 。 目前, 面
向对象技术已经取得了长足的进步, 其研究已经涉足于
计算机软, 硬件的多个领域, 如面向对象程序设计方法
学, 面向对象数据库, 面向对象操作系统, 面向对象软
件开发环境, 面向对象硬件支持等等 。
在人工智能领域,人们已经把面向对象的思想、方
法用于智能系统的设计与开发,并在知识表示、知识库
组成与管理、专家系统设计等方面取得了较大进展。
2004.11.3 AI程序设计 136
第一部分:第 2章 知识表示方法
2.9 面向对象表示法
2.9.1 面向对象的基本概念
2.9.2 面向对象的基本特征
2.9.3 面向对象的知识表示
2.9.4 面向对象表示方法的特点
2004.11.3 AI程序设计 137
第一部分:第 2章 知识表示方法
2.9.1 面向对象的基本概念
对象, 类, 封装, 继承是面向对象技术中的基本概念,
对于理解面向对象的思想及方法有十分重要的作用 。 对
象是由一组数据和该组数据相关的操作构成的实体 。 在
面向对象表示中类和类继承是重要概念 。 类由一组变量
和一组操作组成, 它描述了一组具有相同属性和操作的
对象 。 每一个对象都属于某一个类, 每个对象都可由相
关的类生成, 类生成的过程就是例化 。 一个类拥有另一
个类的全部变量和操作, 这种拥有就是继承, 继承是面
向对象表示法的主要推理形式 。
2004.11.3 AI程序设计 138
第一部分:第 2章 知识表示方法
2.9.1 面向对象的基本概念
(1) 对象
, 对象, 是人们日常生活中经常用到的一个词汇, 但到目前为止
还没有一个统一的定义 。 从广义上讲, 所谓, 对象, 是指客观世界
中的任何事物, 即任何事物都可以在一定前提下成为被认识的对象,
它既可以是一个具体的简单事物, 也可以是由多个简单事物组合而
成的复杂事物 。 从这个意义上讲, 整个世界也可被认为是一个最复
杂的对象 。
从问题求解的角度来讲, 对象是与问题领域有关的客观事物 。 由于
客观事物都具有其自然属性及行为, 因此当把与问题有关的属性及
行为抽取出来加以研究时, 相应客观事物就在这些属性及行为的背
景下成为所关心的对象 。
2004.11.3 AI程序设计 139
第一部分:第 2章 知识表示方法
2.9.1 面向对象的基本概念
(1) 对象
按照哲学的观点, 对象有两重性, 即对象的静态描述和动态描述 。 其中, 静态描述表示
对象的类别属性;动态描述表示对象的行为特性 。 它们之间相互影响, 又相互依存 。 在
面向对象系统中, 对象是系统中的基本单位, 它的静态描述可表示为一个 4元组,
对象 ∷ = ( ID,DT,OP,FC)
其中 ID是对象的名字; DT是对象的数据; OP是对象的操作; FC是对象的外部接口 。
从对象的实现机制来讲, 对象是一台自动机, 它有一个名字, 有一组数据和一组操作,
不同对象间的相互作用通过互传消息实现 。 其中, 数据表示对象的状态;操作分为两类,
一类用于对数据进行操作, 改变对象的状态, 另一类用于产生输出结果 。 对一个对象来
说, 其它对象的操作不能直接操纵该对象私有的数据, 只有对象私有的操作可以操纵它,
即对象的状态只能由它私有的操作可以改变它 。 可见, 对象是把数据和操作该数据的代
码封装在一起的实体 。
由对象的自动机表示可以看出, 对象是一个具有局部状态和一个操作集合的实体, 而且
数据与操作是不可分的 。
2004.11.3 AI程序设计 140
第一部分:第 2章 知识表示方法
2.9.1 面向对象的基本概念
( 2) 类
类是一种对象类型, 它描述同一类型对象的共同特征 。 这种特征
包含操作特征和存储特征 。 类具有继承性, 一个类可以是某一类的
子类, 子类可以继承父类的所有特征 。 类的每一个对象都可作为该
类的一个实例 。
类可用一个 5元组形式地描述为,
类 ∷ = ( ID,INH,DT,OI,IF)
其中, ID,DT与对象的含义相似; INH是类的继承描述; OI是操作集;
IF是外部接口 。
2004.11.3 AI程序设计 141
第一部分:第 2章 知识表示方法
2.9.1 面向对象的基本概念
( 3) 消息与方法
消息传递是对象之间进行通信的唯一手段, 一个对象可以通过传递消
息与别的对象建立联系 。 所谓消息是对象之间相互请求或相互协作的
途径, 是要求某个对象执行其中某个功能操作的规格说明 。 消息的功
能是请求对象执行某种操作 。 所谓方法是对对象实施各种操作的描述,
亦即消息的具体实现 。
2004.11.3 AI程序设计 142
第一部分:第 2章 知识表示方法
2.9.2 面向对象的基本特征
面向对象的基本特征主要体现在模块性, 封装性, 继承
性, 多态性, 易维护性等 。
1) 模块性
2) 封装性
3) 继承性
4) 多态性
5) 易维护性
在面向对象系统中,对象是一个可以
独立运行的实体,其内部状态不直接
受外界的影响,它具有模块化的两个
重要特性:抽象和信息隐蔽。模块性
是设计良好软件系统的基本属性。
封装是一种信息隐蔽技术。它是指把
一个数据和与这个数据有关的操作集
合放在一起,形成一个封装体,外界
只需要知道其功能而不必知道实现细
节即可使用。
继承所表达的是一种对象类之间的相
交关系,它使得某类对象可以继承另
一类对象的特征和能力。继承性是通
过类的派生来实现的 。
所谓多态性是指一个名字可以有多种
含义。例如,对运算符“十”,它可
以做整数的加,也可以做实数的加,
甚至还可以做其他数据类型的加。
由于对象实现了抽象和封装,使得一
个对象可能出现的错误仅限于自身,
而不易向外传播,这就便于系统的维
护。
2004.11.3 AI程序设计 143
第一部分:第 2章 知识表示方法
2.9.3 面向对象的知识表示
面向对象的封装性体现了对象之间的横向联系, 而面向对象的继
承性则体现了对象之间的纵向联系 。 这两个特性的存在, 使得面向
对象系统的不同类之间形成了一种类的层次结构 。 这种类层次结构
支持分类知识的表示和演绎推理方式 。
面向对象的知识表示方法类似于框架表示法, 知识以类为单位按
照一定的层次结构进行组织, 不同类之间的联系可通过链来实现 。
以 C++为例, 类的一般形式如下,
2004.11.3 AI程序设计 144
第一部分:第 2章 知识表示方法
2.9.3 面向对象的知识表示
class 〈 类名 〉 [,〈 父类名 〉 ]
{
privae,
〈 私有成员 〉
public,
〈 公有成员 〉
}
其中, class是类说明的关键字; 〈 类名 〉 是类的名字, 它是该类在系统中的
唯一标识; 〈 父类名 〉 是可选的, 当该类有父类时, 用它来指出其父类的名
字; private是私有段的标识关键字, 它也是可选的, 若私有段处于类说明的
第一部分, 则此关键字可以省略; 〈 私有成员 〉 是只有该类本身才能访问的
成员; public是公有段的标识关键字; 〈 公有成员 〉 是允许其他类访问的成
员, 它提供了类的外部界面 。 类中的成员, 无论是私有成员还是公有成员,
都可以包括数据成员和成员函数两种类型 。
2004.11.3 AI程序设计 145
第一部分:第 2章 知识表示方法
2.9.3 面向对象的知识表示
面向对象表示法对类的一般描述
如下,
Class <类名 > [,<超类名 >]
[<类变量名表 >]
Structure
<对象的静态结构描述 >
Method
<关于对象的操作定义 >
Restraint
<限制条件 >
End
其中, Class是类描述开始符; <类名 >是该类的名字,
它是系统中该类的唯一标识; <超类名 >是任选的, 当该
类有父类时, 用它指出父类的名字; <类变量名表 >是一
组变量名构成的序列, 该类中所有对象都共享这些变量,
对该类对象来说它们是全局变量, 当把这些变量实例化
为一组具体的值时, 就得到了该类中的一个具体对象,
即一个实例; Structure后面的 <对象的静态结构描述 >
用于描述该类对象的构成方式; Method后面的 <关于对
象的操作定义 >用于定义对类元素施行的各种操作, 它既
可以是一组规则也可以是为实现相应操作所需执行的一
段程序, 在 C++中则为成员函数调用; Restraint后面的
<限制条件 >指出该类元素所应满足的限制条件, 可用包
含类变量的谓词构成, 当它不出现时表示没有限制 。
2004.11.3 AI程序设计 146
第一部分:第 2章 知识表示方法
2.9.4 面向对象表示方法的特点
在面向对象方法中, 类, 子类, 实例构成了一个
层次结构, 而且子类可以继承父类的数据及操作 。 这
种层次结构及继承机制直接支持了分类知识的表示,
而且其表示方法与框架表示法有许多相似之处, 知识
可以按类以一定层次形式进行组织, 类之间通过链实
现联系 。 面向对象表示法的主要特点表现为继承性,
灵活, 易于维护, 可重用性好等 。
2004.11.3 AI程序设计 147
第一部分:第 2章 知识表示方法
2.10 状态空间表示法
状态空间表示法是基于解答空间的问题表示和求解方法 。 它
通过在某个可能的解空间内寻找可行解来求解问题, 它是以状
态和运算符为基础来表示和求解问题的 。
状态是为描述某类不同事物间的差别而引入的一组最少变量
q0,ql,…, qn的有序集合,其矢量形式为 Q= [q0,ql,...,qn]T 。
其中,每个元素 qi (i=0,1,...,n)为集合的分量,称为状态变量。
给定每个分量的一组值就得到具体的状态,表示为 Qk= [q0k,
qlk,…, qnk]T 。运算符是使问题从一种状态变化为另一种状态
的手段,它可以是走步、过程、规则、数学算子、运算符号或
逻辑符号等。
2004.11.3 AI程序设计 148
第一部分:第 2章 知识表示方法
2.10 状态空间表示法
问题的状态空间则是一个表示该问题全部可能状态及其
关系的图, 它包含三种说明的集合, 即所有可能的问题初
始状态集合 S,操作符集合 F以及目标状态集合 G。 因此,
可把状态空间记为三元状态 (S,F,G)。
状态空间表示法就是依据状态图示法作为求解问题的主
要基础的, 它是一个通过搜索某个状态空间以求得运算符
序列的一个解答过程 。
2004.11.3 AI程序设计 149
第一部分:第 2章 知识表示方法
2.10 状态空间表示法
具体的求解过程如下,
( 1) 准备:描述初始状态, 确定操作符集合, 描述目标
状态特性 。
( 2) 求解:从初始状态出发, 每次加一个操作符产生新
的状态描述, 并递增地建立起操作符的相应实验序列, 直
至达到目标状态为止 。
( 3) 检验:对于求解过程中产生的新状态进行查看, 确
定其是否与目标状态描述相匹配 。 相对于最优化问题还要
寻求某一准则下的最优化路径 。
2004.11.3 AI程序设计 150
第一部分:第 2章 知识表示方法
2.10 状态空间表示法
状态空间表示法的特点:思路简单, 清晰明确, 操作简
便 。 但是由于它需要扩展节点, 当解决复杂问题时就容易
产生, 组合爆炸, 。 因此, 这种方法更适用于求解简单问
题 。
2004.11.3 AI程序设计 151
第一部分:第 2章 知识表示方法
2.11 问题归约表示法
问题归约法的基本思想是从目标出发进行逆向推理,
通过一系列变换把初始问题变换为子问题集合和子 — 子
问题集合,直至最后归约为一个平凡的本原问题集合。
这些本原问题的解可以直接得到,从而解决了初始问题。
2004.11.3 AI程序设计 152
第一部分:第 2章 知识表示方法
2.11 问题归约表示法
问题归约方法应用归约算符来把一个问题描述变换为一个归约或后继问题描
述的集合。变换所得所有后继问题的解就意味着父辈问题的一个解。所有问题
归约的目的是最终产生具有明显解答的本原问题。这些问题可能是能够由状态
空间搜索中走动一步来解决的问题,或者可能是别的具有已知解答的更复杂的
问题。本原问题除了对终止搜索过程起着明显的作用外,有时还被用来限制归
约过程中产生后继问题的替换集合;当一个或多个后继问题属于某个本原问题
的指定子集时,就出现这种限制。问题描述可以有各种数据结构形式,列表、
树、字符串、矢量,数组等等。采用问题归约表示可由下列 3部分组成:一个
初始问题描述;一套把问题变换为子问题的操作符;一套本原问题描述。
2004.11.3 AI程序设计 153
第一部分:第 2章 知识表示方法
2.11 问题归约表示法
与或图可以有效说明问题归约法的求解途径 。 通过与或图, 把某个单
一问题归约算符具体应用于某个问题描述, 依次产生出一个中间或节
点及其与节点后裔 (例外的情况是当子问题集合只含有单项时, 在这种
情况下, 只产生或节点 )。 与或图中每个节点都代表一个明显的问题或
问题集合, 其起始节点对应于初始问题描述, 终叶节点则对应于本原
问题的描述 。 一个问题求解过程就是由生成与或图的足够部分, 并证
明起始节点有解而得以完成的 。
2004.11.3 AI程序设计 154
第一部分:第 2章 知识表示方法
2.11 问题归约表示法
问题归约方法可以应用状态、算符和目标这些表示法来描述问题,
这并不意味着问题归约法和状态空间法是一样的。实际上,递增状态
空间搜索应用某个问题归约的普通形式,而且可以把问题归约法看作
比状态空间法更通用的问题求解方法。问题归约法能够比状态空间法
更有效地表示问题。状态空间法是问题归约法的一种特例。在问题归
约法的与或图中,包含有与节点和或节点,而在状态空间法中只含有
或节点。
2004.11.3 AI程序设计 155
第一部分:第 2章 知识表示方法
本章小结
● 知识表示是人工智能研究领域不可忽视的重要研究方向 。 本章介绍了知识
及其表示 。
● 在引入知识相关概念的基础上, 对现有的多种知识表示方法:一阶谓词逻
辑表示法, 产生式表示法, 语义网络表示法, 框架表示法, 脚本表示法,
过程表示法, Petri网表示法, 面向对象表示法, 状态空间表示法, 问题
归约表示法等进行了介绍 。 分别从它们的基本思想, 工作流程, 主要特点
及相互比较等方面一一进行了分析 。
● 人们在求解问题时总是希望寻求最为便捷, 高效的解决途径 。 而对于智能
系统而言, 知识表示的能力直接关系着系统的运行效率 。 因此选择适合,
高效的知识表示方法, 对于求解复杂的智能系统而言显得尤为重要 。 由于
各种知识表示方法各具特点, 各有优劣, 并有其适用领域, 因而在解决具
体问题时, 应当把握问题的要旨, 综合考虑, 选取适当的表示方法 。
2004.11.3 AI程序设计 156
第一部分:第 2章 知识表示方法
习 题
1,什么是数据, 信息和知识? 三者之间的关系是什么?
2,什么是知识表示? 目前有哪些常用的知识表示方法?
3,试用状态空间法表示推销员旅行问题 。
4,一阶谓词逻辑表示法具有哪些特点? 适用于哪些类型的知识?
5,试用问题归约法和谓词逻辑表示法分别表示梵塔问题的求解过程 。
6,什么是框架? 框架表示的一般形式是什么? 试写出一个, 学生框架, 的描述 。
7,什么是过程表示法? 它具有哪些特点? 试比较说明性表示方法与过程性表示法 。
8,设有 3个传教士和 3个野人准备过河 。 但是只有一条船, 该船每次只能负载两人 。
而在岸上的野人人数不得超过传教士的人数, 否则传教士就会被野人吃掉 。
试给出所有人都安全渡河的方案 。 并用适当的知识表示方法将其表示出来 。
2004.11.3 AI程序设计 157
第一部分:第 2章 知识表示方法
习 题
9,什么是产生式? 产生式与谓词蕴含式有何异同?
10,什么是产生式系统? 它由哪几部分组成? 试述产生式系统求解问题
的一般步骤 。
11,试用产生式表示法表示八数码问题的求解操作 。
12,什么是语义网络? 它与其它知识表示方法相比较有哪些特点?
13,试用语义网络表示下列命题,
(1) 鱼生活在水里 。
(2) 张强是一名计算机专业的大学三年级学生 。
(3) 一班与二班进行篮球比赛, 最后比分是 72:68。
2004.11.3 AI程序设计 158
第一部分:第 2章 知识表示方法
习 题
14,试述语义网络与 Prolog语言之间的对应关系 。 试用 Prolog语言表示
一种植物分类语义网络 。
15,请写出如下产生式规则集的 Petri网,
r1,IF d1 THEN d2 (CF=0.8)
r2,IF d1 AND d3 THEN d4 (CF=0.7)
r3,IF d2 AND d4 THEN d5 (CF=0.9)
16,如何用面向对象方法表示知识?
17,如何对知识表示方法进行评价? 如何合理选用知识表示方法?
第一部分:第 2章 知识表示方法
第 2章 知识表示方法
2.1 知识的基本概念
2.2 一阶谓词逻辑表示法
2.3 产生式表示法
2.4 语义网络表示法
2.5 框架表示法
2.6 脚本表示法
2.7 过程表示法
2.8 Petri网表示法
2.9 面向对象表示法
2.10 状态空间表示法
2.11 问题归约表示法
本章小结与习题
2004.11.3 AI程序设计 2
第一部分:第 2章 知识表示方法
2.1 知识的基本概念
2.1.1 知识层次
2.1.2 知识的属性
2.1.3 知识分类
2.1.4 知识表示
2004.11.3 AI程序设计 3
第一部分:第 2章 知识表示方法
2.1.1 知识层次
噪声
数据
信息
知识
元知识
人们描述客观世界的数据、
信息、知识等具有如下的
金字塔型层次结构。
2004.11.3 AI程序设计 4
第一部分:第 2章 知识表示方法
2.1.1 知识层次
1) 数据
知识处理中的数据不同于通常意义上的
,数,,它具有更广泛的含义。例如,符号 3,赋
予不同的物质就可以代表不同的含义。无论 3个人
或者 3棵树,表达了相同的数量。另外,颜色属性、
尺寸大小等等都可以作为数据进行记录。这里,数
据可以定义为:, 客观事物的数量、属性、位置及
其相互关系等的抽象表示, 。
2004.11.3 AI程序设计 5
第一部分:第 2章 知识表示方法
2.1.1 知识层次
2) 信息
信息是, 数据所表示的含义, 。 如上述同一个数据
,3,在不同的具体场合代表着不同的含义, 可以是人,
树或是任何其他的物质, 从而获得不同的解释, 产生不
同的信息 。 因此, 可以这样来表述数据和信息的关系:
数据是信息的载体和表示, 而信息是对数据的解释 。 一
般地说, 一个信息可用一组描述词及其值来描述,
〈 描述词 1:值 1; … ;描述词 n:值 n〉
它描述一件事, — 个物体或一种现象的有关属性, 状态,
地点, 程度, 方式等等 。
2004.11.3 AI程序设计 6
第一部分:第 2章 知识表示方法
2.1.1 知识层次
3) 知识
Feigenbaunm认为知识是经过整理, 加工, 解释和转换的
信息 。 Bernstein认为它是由特定领域的描述, 关系和过程
组成的 。 Hayes Roth则将知识用三维空间来描述, 即知识 =
事实 +信念 +启发式规则 。 而从知识库的观点看, 知识则是
某领域中所涉及的各有关方面, 状态的一种符号表示 。
目前所认可的定义是:, 知识是一个或多个信息的关
联, 。 就是说, 知识是把有关信息关联在一起所形成的信
息结构 。 它反映了客观世界中事物的关系, 不同事物或者
相同事物间的不同关系形成了不同的知识 。
2004.11.3 AI程序设计 7
第一部分:第 2章 知识表示方法
2.1.1 知识层次
4) 元知识
元知识是有关知识的知识, 是知识库中的高层知识 。
包括怎样使用规则, 解释规则, 校验规则, 解释程序结
构等知识 。 元知识存于知识库中, 指定可用的数据库资
源, 并在一个域中确定最为适用的规则组 。
2004.11.3 AI程序设计 8
第一部分:第 2章 知识表示方法
2.1.2 知识的属性
(1) 真伪性 。 知识是客观事物及客观世界的反映, 它具有真伪性,
可以通过实践检验其真伪, 或用逻辑推理证明其真伪 。
(2) 相对性 。 一般知识不存在绝对的真假, 都是具有相对性的 。
在一定条件下或特定时刻为真的知识, 当时间, 条件或环境发生变
化时可能变成假 。
(3) 不完全性 。 知识往往是不完全的 。 这里的不完全大致分为条
件不完全和结论不完全两大类 。
(4) 不确定性, 即模糊性和不精确性 。 现实中的知识的真与假,
往往并不总是, 非真即假,, 可能处于某种中间状态, 即所谓具有
真与假之间的某个, 真度,, 即模糊度和不精确度 。 例如, 人老了
就可能糊涂,,, 老了,,, 可能, 和, 糊涂, 都是一些模糊概念 。
在知识处理中必须用模糊数学或统计方法等来处理模糊的或不精确
的知识 。
2004.11.3 AI程序设计 9
第一部分:第 2章 知识表示方法
2.1.2 知识的属性
(5) 可表示性 。 知识作为人类经验存在于人脑之中, 虽然不是一
种物质东西, 但可以用各种方法表示出来 。 一般表示方式包括符号
表示法, 图形表示法和物理表示法 。
(6) 可存储性, 可传递性和可处理性 。 既然知识可以表示出来,
那么就可以把它存储起来;知识既可以通过书本来传递, 也可以通
过教师的讲授来传播, 还可以通过计算机网络等来传输, 知识可以
从一种表示形式转换为另一种表示形式;知识一旦表示出来, 就可
以同数据一样进行处理 。
(7) 相容性 。 相容性是关于知识集合的一个属性 。 即存在于一体
( 如专家系统的知识库 ) 的所有知识之间应该是相互不矛盾的, 即
从这些知识出发, 不能推出相互矛盾的命题 。
2004.11.3 AI程序设计 10
第一部分:第 2章 知识表示方法
2.1.3 知识分类
关于知识的类型, 可以从不同角度来划分 。
?从知识的确定程度来分, 知识可分为确定性知识和不确
定性知识两类 。
确定性知识 是可以给出其真值为, 真, 或, 假, 的知
识 。 这些知识是可以精确表示的知识, 即可以用经典逻
辑命题来描述 。 不确定性知识是指具有, 不确定, 特性
的知识 。
不确定性的概念 包含不精确, 不完备和模糊 。 若知识
并非, 非真即假,, 可能处于某种中间状态, 这类知识
往往要用模糊命题或模态命题来表达 。
2004.11.3 AI程序设计 11
第一部分:第 2章 知识表示方法
2.1.3 知识分类
? 知识按其性质分, 可分为概念, 命题, 公理, 定理,
规则和方法等 。
2004.11.3 AI程序设计 12
第一部分:第 2章 知识表示方法
2.1.3 知识分类
?知识按其含义分, 大致可分为:事实, 规则, 规律,
推理方法 。 事实是对客观事物属性的值的描述 。 一般
这种知识中不含任何变量, 可以用一个值为, 真, 的
命题来表达 。 规则是可分解为前提和结论两部分的用
以表达因果关系的知识, 一般形式为:, 如果 A则 B”,
其中 A表示前提, B表示结论 。 规则还可进一步分为不
带变量的规则和带变量的规则两种 。 规律是事物之间
的内在的必然联系 。
2004.11.3 AI程序设计 13
第一部分:第 2章 知识表示方法
2.1.3 知识分类
? 知识按其作用分, 可分为事实性知识, 过程性知识和控制性知识 。
事实性知识 ( 亦称为叙述性知识 ) 是用来描述问题或事物的概念,
属性, 状态, 环境及条件等情况的知识 。 事实性知识主要反映事物
的静态特征, 一般采用直接表达形式 。 过程性知识 一般由与所求解
问题有关的规则, 定律, 定理及经验来构成 。 其表示方法主要有产
生式规则, 语义网络等 。 控制性知识 ( 亦称无知识或超知识 ) 是关
于如何运用已有知识进行问题求解的知识, 因此, 也称为关于知识
的知识 。 例如, 问题求解中的推理策略 ( 如正向推理, 逆向推理 ),
搜索策略 ( 如广度优先, 深度优先, 启发式 ) 和不确定性的传播策
略等 。
2004.11.3 AI程序设计 14
第一部分:第 2章 知识表示方法
2.1.3 知识分类
?知识按其应用范围可分为 常识性知识和领域性知识 。 常
识性知识是指通用通识的知识 。 即人们普遍知道的, 适
应于所有领域的知识, 包括领域问题求解有关的已被接
受的定义, 事实和各种理论方法 。 领域性知识是指面向
某个具体专业的专业性知识, 这些知识只有该领域的专
业人员才能够掌握和运用它 。
2004.11.3 AI程序设计 15
第一部分:第 2章 知识表示方法
2.1.3 知识分类
?知识按其在问题求解过程中的作用可分为 静态知识和动
态知识两类 。 静态知识主要指对象性知识, 是关于问题
领域内事物的事实, 关系等, 它包括了事物的概念, 事
物的分类, 事物的描述等 。 动态知识是关于问题求解的
知识, 它常常是一种过程, 说明怎样操作已有的数据和
静态知识以达到问题的求解, 是反映动作过程的过程,
如一个问题领域内关于推理路径的方向, 推理过程, 可
理解性等方面的知识, 启发性方法等 。
2004.11.3 AI程序设计 16
第一部分:第 2章 知识表示方法
2.1.3 知识分类
?按知识的层次性可分为 表层知识和深层知识 。 表层知识
是指客观事物的现象以及这些现象与结论之间关系的知
识 。 例如, 经验性知识, 感性知识等 。 表层知识形式简
洁, 易表达, 易理解, 但它并不能反映事物的本质 。
2004.11.3 AI程序设计 17
第一部分:第 2章 知识表示方法
2.1.3 知识分类
?知识按其等级性可分为 零级知识, 一级知识和二级知识三
个层次 。 零级知识是常识性知识和原理性知识, 是关于问
题领域的事实, 定理, 方程, 实验对象和操作等等 。 一级
知识是经验性知识, 这是由于零级知识对求解不良结构问
题常常失灵, 因而出现启发性方法等, 如单凭经验的规则,
含义模糊的建议, 不确切的判断标准等等 。 二级知识是运
用上述两级知识的知识 。 这种知识层次还可以继续划分下
去, 把零级知识和一级知识称为领域 (或目标 )知识, 把二
级以上知识称为元知识 。 高级知识对低级知识有指导意义 。
在专家系统设计中, 领域知识是必不可少的 。
2004.11.3 AI程序设计 18
第一部分:第 2章 知识表示方法
2.1.4 知识表示
一个智能系统的智能性很大程度上取决于知识的
数量及其可利用的程度 。 系统中可利用的知识越多,
其智能性就可能越高 。 知识表示就是研究和解决如何
将所需要的知识用适当的形式表示出来并存放到计算
机中, 即将知识表示成为计算机可以接受的形式 。
2004.11.3 AI程序设计 19
第一部分:第 2章 知识表示方法
2.1.4.1 知识表示的概念
所谓知识表示就是知识的符号化和形式化的过程, 是研究用机器
表示知识的可行性, 有效性的一般方法, 是一种数据结构与控制结构
的统一体, 既考虑知识的存储又考虑知识的使用 。 知识表示可以看成
是一组描述事物的约定, 以把人类知识表示成机器能处理的数据结构 。
知识表示方法研究各种数据结构的设计, 通过这种数据结构把问
题领域的各种知识结合到计算机系统的程序设计过程 。 一般来说, 对
于同一种知识可以采用不同的表示方法, 反过来, 一种知识表示方法
可以表达多种不同的知识 。 然而, 在求解某一问题时, 不同的表示方
法会产生完全不同的效果 。 迄今为止, 人们还没有找到一种通用, 完
善的知识表示模式, 知识表示还没有完善的理论可循 。
2004.11.3 AI程序设计 20
第一部分:第 2章 知识表示方法
2.1.4.2 知识表示方法的分类
对知识表示方法的研究离不开对知识的研究与认识 。 由于目前对人类知
识的结构及其机制还没有完全搞清楚, 因此关于知识表示的理论及其规范尚
未建立起来 。 尽管如此, 人们对智能系统的研究及其建立过程中 。 还是结合
具体研究提出了一些知识表示方法 。 概括起来, 这些方法可以分为如下两大
类:符号表示法和连接机制表示法 。
符号表示法 是用各种包含具体含义的符号, 以各种不同的方式和次序组
合起来表示知识的一类方法, 它主要用来表示逻辑性知识 。 连接机制表示法
是用神经网络技术表示知识的一种方法, 它把各种物理对象以不同的方式及
次序连接起来, 并在其间互相传递及加工各种包含具体意义的信息, 以此来
表示相关的概念及知识 。 相对于符号表示法而言, 连接机制表示法是一种隐
式的表示知识方法, 它特别适用于表示各种形象性的知识 。
2004.11.3 AI程序设计 21
第一部分:第 2章 知识表示方法
2.1.4.2 知识表示方法的分类
另外, 按照控制性知识的组织方式进行分类, 表示法可分为:说
明性表示法和过程性表示法 。 说明性表示法着重于对知识的静态方
面, 如客体, 事件, 事实及其相互关系和状态等, 其控制性知识包
含在控制系统中;而过程性表示法强调的是对知识的利用, 着重于
知识的动态方面, 其控制性知识全部嵌入于对知识的描述中, 且将
知识包含在若干过程之中 。
目前, 用得较多的知识表示方法主要有:一阶谓词逻辑表示法,
产生式表示法, 框架表示法, 语义网络表示法, 脚本表示法, 过程
表示法, Petri网表示法, 面向对象表示法等 。
2004.11.3 AI程序设计 22
第一部分:第 2章 知识表示方法
2.1.4.3 知识表示方法的衡量及特性
既然有诸多的知识表示方法, 那么怎样的方法才是合理有效的呢?
好的知识表示方法又应当具备怎样的特性呢?下面对此作一讨论 。
建立一种知识表示方法, 要求有较强的表达能力和足够的精细度 。
其次, 相应于表示方法的推理要保证正确性和效率 。 从使用者观点看,
常常希望满足可读性好, 模块性好等要求 。 因此, 从综合的角度来看,
一个好的知识表示应具备以下特性,
完备性, 一致性, 正确性, 灵活性,
可扩充性, 可理解性, 可利用性, 可维护性
2004.11.3 AI程序设计 23
第一部分:第 2章 知识表示方法
2.1.4.3 知识表示方法的衡量及特性
(1) 完备性
要求具有表达领域问题所需的各种知识的能力, 即要求所采用的知
识表示方法具有语法完备性和语义完备性, 并便于知识库的检查与调
试 。 目前的大多数知识表示方法都很难满足这一要求 。 由于专门知识,
知识库的特点及建库方法所造成的原因, 如果不选择表示能力强的方
法, 就很难使知识库具有某些有关的甚至是很重要的知识, 严重影响
专家系统的问题求解能力 。
2004.11.3 AI程序设计 24
第一部分:第 2章 知识表示方法
2.1.4.3 知识表示方法的衡量及特性
(2) 一致性
要求知识库中的知识必须具有一致性, 不能相互产生矛盾 。 几乎所有的
专家系统的研制者在开发自己的系统时, 都在追求这个目标 。 由于专家的
知识大多是启发性知识, 具有不完全性和不确定性 。 因此, 所采用的知识
表示必须便于系统进行一致性检查, 以便在使用中完善知识库, 保证系统
的求解质量 。
(3) 正确性
知识表示必须能真实地反映知识的实际内涵, 而不允许有偏差 。 只有这
样, 才能保证系统得出正确结论和合理建议 。
(4) 灵活性
针对不同的专业领域, 应当根据具体知识的特点及其自然结构的制约选
用不同的知识表示方法 。 或是用单一方法, 或是用混合方法, 甚至设计研
究新的表示方法, 一定要具体问题具体分析, 灵活掌握, 切忌生搬硬套 。
2004.11.3 AI程序设计 25
第一部分:第 2章 知识表示方法
2.1.4.3 知识表示方法的衡量及特性
( 5) 可扩充性
高性能知识库应当不需要作硬件上或控制结构上的修改就能对知识库
进行扩充, 即要求知识表示模式与运用知识的推理机制相互独立, 在专
家系统中一般采用知识库与推理机分离的手段来实现这一目的 。 另一方
面, 往往专家不能很快地把领域问题的所有知识定义为一个完整的知识
库, 通常先定义一个子集, 不断增加, 修改, 删除来扩充和完善知识库,
这种方法主张将专家系统的知识作为一个开放集来处理, 并尽可能地模
块化地存储知识条目, 便于知识库的扩充 。
(6) 可理解性
知识表示的可理解性指它表示的知识易于被人们理解的程度 。 易理解
的表示模式的好处是显而易见的, 它符合人们的思维习惯, 便于知识库
研制人员把专家的专门知识整理并形式化, 也便于知识库的设计, 实现
和改进 。
2004.11.3 AI程序设计 26
第一部分:第 2章 知识表示方法
2.1.4.3 知识表示方法的衡量及特性
(7) 可利用性
知识表示的目的在于知识的利用, 具体地说就是知识的检索和推理 。
知识的检索与推理是一种控制知识, 在专家系统中, 一旦知识表示模式
被选定, 它们也就相应地被确定下来 。 因此, 所选择的知识表示方法应
当便于对知识的利用, 其数据结构应力求简单, 并保持清晰一致 。 如果
一种表示模式的数据结构过于复杂或者难于理解 。 使得推理不便于进行
匹配, 冲突消解以及不确定性的计算等处理, 那么就势必影响智能系统
的效率及其问题求解的能力 。
2004.11.3 AI程序设计 27
第一部分:第 2章 知识表示方法
2.1.4.3 知识表示方法的衡量及特性
(8) 可维护性
知识需要进行合理的组织, 对于知识的组织是与其表示方法密切相关
的, 不同的表示方法对应于不同的组织方式 。 这就要求在设计和选择知
识表示方法时, 充分考虑将要对知识进行的组织方式 。 此外, 知识还需
要适当地增补, 修改和删除, 以保证知识的一致性和完整性, 即需要进
行知识的管理和维护 。 因此在选择知识表示方法时还应当充分考虑到知
识管理和维护的方便性 。
简而言之, 在建造具体专家系统时, 应当以有效地表示问题领域的专
门知识, 便于知识的获取, 有利于运用知识进行推理的原则来选择知识
表示方法 。
2004.11.3 AI程序设计 28
第一部分:第 2章 知识表示方法
2.2 一阶谓词逻辑表示法
逻辑表示法是一种基于数理逻辑的知识表示方式 。 数理逻辑是一门研
究推理的科学, 在人工智能研究中占有重要的地位 。 人工智能中用到的
逻辑可分为两大类;一类是经典命题逻辑和一阶谓词逻辑;另一类是除
经典逻辑以外的那些逻辑 。
谓词逻辑的表现方式与人类自然语言比较接近,能够自然而精确地表
达人类思维和推理的有关知识,因此,谓词逻辑已成为各种智能系统中
最基本的知识表达方法。
2004.11.3 AI程序设计 29
第一部分:第 2章 知识表示方法
2.2 一阶谓词逻辑表示法
利用逻辑公式人们能描述对象, 性质, 状况和关系 。 使用逻辑法表示
知识, 要将以自然语言描述的知识, 通过引入谓词, 函数来加以描述,
获得有关的逻辑公式, 进而将其用内部代码表示 。 在逻辑法表示下可采
用归结法或其他方法进行准确的推理 。 逻辑表示通常包括命题逻辑和谓
词逻辑, 关于命题逻辑表示将在下一章作具体介绍 。 这里主要指的是谓
词逻辑表示法 。
谓词逻辑表示法采用谓词合式公式 WFF和一阶谓词演算把要解决的问
题变为一个有待证明的问题, 然后采用消解定理和消解反演来证明一个
新语句是从已知的正确语句导出的, 从而证明这个新语句也是正确的 。
谓词逻辑是一种形式语言, 能够把数学中的逻辑证明符号化 。
2004.11.3 AI程序设计 30
第一部分:第 2章 知识表示方法
2.2 一阶谓词逻辑表示法
2.2.1 命题与真值
2.2.2 论域和谓词
2.2.3 谓词公式与量词
2.2.4 谓词逻辑表示方法
2.2.5 谓词逻辑表示方法的 BNF描述
2.2.6 谓词逻辑表示方法的特点
2004.11.3 AI程序设计 31
第一部分:第 2章 知识表示方法
2.2.1 命题与真值
定义 2.1 一个陈述句称为一个断言。凡有真假意义的断言称为命题。
命题的意义通常称为真值, 它只有真假两种情况 。 当命题的意义为
真时, 则称该命题的真值为真, 记为 T;反之, 则称该命题的真值为
假, 记为 F。 在命题逻辑中, 命题通常用大写的英文字母来表示 。
一个命题不能同时既为真又为假。例如。, 天安门城楼在长安街
的北边, 是一个真值为 T的命题,,天安门广场在长安街的北边, 则
是一个真值为 F的命题。
2004.11.3 AI程序设计 32
第一部分:第 2章 知识表示方法
2.2.1 命题与真值
一个命题可在一定条件下为真, 在另一种条件下为假, 例如, 命
题, 北京今天有雨,, 需要根据当天的实际情况来决定其真值 。
没有真假意义的感叹句, 疑问句等都不是命题 。 例如,, 今天好冷
啊 ], 和, 今天的温度有多少度, 等都不是命题 。
命题的优点 是简单, 明确;其 主要缺点 是无法描述客观事物的结
构及其逻辑特征, 也无法表示不同事物间的共性 。
2004.11.3 AI程序设计 33
第一部分:第 2章 知识表示方法
2.2.2 论域和谓词
论域是由所讨论对象之全体构成的非空集合。论域中的元素称为
个体,论域也常称为个体域。
在谓词逻辑中,命题是用谓词来表示的。一个谓词可分为谓词名
和个体两部分。其中,个体是命题中的主语,用来表示某个独立存
在的事物或者某个抽象的概念;谓词名是命题的谓语,用来表示个
体的性质、状态或个体之间的关系等。例如,对于命题“王坚是学
生”可用谓词表示为 STUDENT( Wangjian)。其中,Wangjian
是个体,代表王坚。 STUDENT是谓词名,说明王坚是学生的这一特
征。通常,谓词名用大写英文字母表示,个体用小写英文字母表示。
2004.11.3 AI程序设计 34
第一部分:第 2章 知识表示方法
2.2.2 论域和谓词
谓词可形式地定义如下,
定义 2.2 设 D是个体域, P,Dn →{ T,F}是一个映射, 其中
Dn = {(xl,x2,...,xn) | xl,x2,...,xn ∈ D}
则称 P是一个 n元谓词( n=1,2,...),记为 P(xl,x2,...,xn) 。
其中 xl,x2,…,xn为个体变元。
在谓词中,个体可以是常量、变元或函数。例如,,x> 6”可用谓
词表示为 Greater(x,6),其中 x是变元。再如“王坚宏的父亲是教
师”,可用谓词表示为 TEACHER(father(Wangjian)),其中
father(Wangjian)是一个函数。
2004.11.3 AI程序设计 35
第一部分:第 2章 知识表示方法
2.2.2 论域和谓词
函数可形式地定义如下,
定义 2.3 设 D是个体域, f,Dn →D 一个映射, 则称 f是 D上的一个 n元函
数, 记作
f(xl,x2,...,xn) ( n=1,2,..,)
其中 xl,x2,…,xn为个体变元 。
谓词与函数从形式上看很相似, 容易混淆 。 但是它们是两个完全不同
的概念 。 谓词的真值是, 真, 或, 假,, 而函数无真值可言, 函数的
值是个体域中的某个个体 。 谓词实现的是从个体域中的个体到 T或 F的
映射, 而函数所实现的是在同一个个体域中从一个个体到另一个个体
的映射 。 在谓词逻辑中, 函数本身不能单独使用, 它必须嵌入到谓词
之中 。
2004.11.3 AI程序设计 36
第一部分:第 2章 知识表示方法
2.2.2 论域和谓词
在谓词 P(xl,x2,...,xn)中, 如果 xi ( i=1,2,...,n )都是个体常量,
变元或函数, 称它为一阶谓词 。 如果 xi本身又是一个一阶谓词,
则称它为二阶谓词 。 本书仅讨论一阶谓词 。
2004.11.3 AI程序设计 37
第一部分:第 2章 知识表示方法
2.2.3 谓词公式与量词
在一阶谓词演算中, 合法的表达式称为合式公式,
亦即谓词公式 。
当一个谓词公式含有量词时, 区分个体变元是否受
量词的约束很重要 。 量词通常有两个, 即全称量词 ?
和存在量词 ? 。
全称量词 表示所有的 。 存在量词 表示存在某一些 。
2004.11.3 AI程序设计 38
第一部分:第 2章 知识表示方法
2.2.4 谓词逻辑表示方法
谓词逻辑不仅可以用来表示事物的状态, 属性, 概念等事实性知识,
也可以用来表示事物的因果关系, 即规则 。 对事实性知识, 通常是用
否定, 析取或合取符号连接起来的谓词公式表示 。 对事物间的因果关
系, 通常用蕴含式表示, 例如, 对, 如果 x,则 y”可表示为, x → y”。
用谓词逻辑表示知识时, 首先需要根据所表示的知识定义谓词, 然
后再用连接词或量词把这些谓词连结起来 。 形成一个谓词公式 。
例 1 用谓词逻辑表示知识, 每个人都有一个父亲, 。
首先定义谓词,PERSON( x),表示 x是人 。
HASFATHER( x,y),表示 x有父亲 y。
此时, 该知识可用谓词表示为,
( ) ( ) ( P E R S O N ( ) H A S F A T H E R (,) )x y x x y? ? ?
2004.11.3 AI程序设计 39
第一部分:第 2章 知识表示方法
2.2.4 谓词逻辑表示方法
例 2 用谓词逻辑表示知识, 所有教师都有自己的学生, 。
首先定义谓词,TEACHER( x),表示 x是教师 。
STUDENT( y),表示 y是学生 。
TEACHES( x,y),表示 x是 y的老师 。
此时, 该知识可用谓词表示为,
该谓词公式可读作:对所有 x,如果 x是一个教师, 那么一定存在一
个个体 y,x是 y的老师, 且 y是一个学生 。
( ) ( ) ( T E A C H E R ( ) R T E A C H E S (,) S T U D E N T ( ) )x y x x y x? ? ? ?
2004.11.3 AI程序设计 40
第一部分:第 2章 知识表示方法
2.2.4 谓词逻辑表示方法
逻辑成为最早和使用最广的知识表示方法的主要原因有如下三点,
( 1) 它具有两个重要的相互关联的部分 。 一个公理系统, 它说明什
么样的关系和蕴含可以形式化 。 一个演绎结构, 即推理规则集合, 它
能从公理集合中推导出定理, 如常用的假言三段论, 概括, 特指等 。
( 2) 逻辑及其形式系统有如下重要特征:所有演绎都保证正确, 而
其他方法目前尚难达到这种程度 。 逻辑语句的集合 ( 从各个原始语句
集开始, 导出所有结论的闭包集合 ) 的语义保持完整, 由推理规则说
明 。 原则上, 它可以保证知识库逻辑上的一致性和所有结论的正确性 。
( 3) 演绎可以完全机械化 。 程序可以从现有语句中自动确定知识库
中某一新语句的有效性 。 它是自动定理证明中使用得较为成功的一种
技术 。
2004.11.3 AI程序设计 41
第一部分:第 2章 知识表示方法
2.2.4 谓词逻辑表示方法
形式逻辑根据为真的事实进行推理演算, 从而得到新的事实 。 用逻
辑方法求解一个问题的全过程是,
( 1) 用谓词演算将问题形式化 。
( 2) 在这种逻辑表示的形式上建立控制系统 。
( 3) 证明从初始状态可以达到目标状态 。
2004.11.3 AI程序设计 42
第一部分:第 2章 知识表示方法
2.2.5 谓词逻辑表示方法的 BNF描述
〈 知识 〉 ∷ = {〈 谓词表达式 〉 }
〈 谓词表达式 〉 ∷ = 〈 蕴含式 〉 | [ 量词 ] (〈 变量 〉 {,〈 变量 〉 })
(〈 蕴含式 〉 )
〈 蕴含式 〉 ∷ = 〈 或式 〉 | 〈 或式 〉 → 〈 或式 〉
〈 或式 〉 ∷ = 〈 与式 〉 | 〈 或式 〉 ∨ 〈 与式 〉
〈 与式 〉 ∷ = 〈 文字 〉 | 〈 与式 〉 ∧ 〈 文字 〉
〈 文字 〉 ∷ = 〈 原子 〉 |~ 〈 原子 〉
〈 原子 〉 ∷ = 〈 谓词 〉 [(〈 变量 〉 {,〈 变量 〉 }) ]| 〈 谓词 〉 [(〈 常
量 〉 {,〈 常量 〉 }) ]
〈 量词 〉 ∷ =|
〈 变量 〉 ∷ = 〈 变量名 〉
〈 常量 〉 ∷ = 〈 个体名 〉 | 〈 常数 〉
2004.11.3 AI程序设计 43
第一部分:第 2章 知识表示方法
2.2.5 谓词逻辑表示方法的 BNF描述
用这种表达知识的方法, 建造知识库的基本步骤如下,
(1) 获取并理解领域知识;
(2) 用自然语句描述领域知识;
(3) 使用适当的谓词公式表达自然语句;
(4) 构造 WFF,使其与被表达的自然语句在逻辑上保持
一致 。
2004.11.3 AI程序设计 44
第一部分:第 2章 知识表示方法
2.2.6 谓词逻辑表示方法的特点
逻辑表示法的 主要优点 是,① 符号简单, 描述易于理解 。
② 自然, 严密, 灵活, 模块化 。 ③ 具有严格的形式定义 。
④ 每项事实仅需表示一次 。 ⑤ 具有证明过程中所使用的
推理规则 。 ⑥ 利用定理证明技术可从旧事实推出新事实 。
其 主要缺点 是,① 难于表示过程式和启发式知识 。 ②
由于缺乏组织原则, 利用该方法表示的知识库难于管理 。
③ 由于是弱证明过程, 当事实的数目增大时, 在证明过程
中决定使用哪条规则时可能产生组合爆炸 。 ④ 不具有表示
不精确和不确定知识的能力 。
2004.11.3 AI程序设计 45
第一部分:第 2章 知识表示方法
2.3 产生式表示法
产生式表示法又称规则表示法,是目前人工智能领
域中应用最多的一种知识表示方法,也是一种比较成
熟的表示方法。
2004.11.3 AI程序设计 46
第一部分:第 2章 知识表示方法
2.3 产生式表示法
2.3.1 产生式
2.3.2 产生式系统
2.3.3 产生式表示法的特点
2.3.4 产生式表示法与其它知识表示方
法的比较
2004.11.3 AI程序设计 47
第一部分:第 2章 知识表示方法
2.3.1 产生式
产生式一词, 首先是由美国数学家 E,Post提出来的 。
Post根据替换规则提出了一种称为波斯特机的计算模型,
模型中的每一条规则当时被称为一个产生式 。 后来, 这
一术语几经修改扩充, 被用到许多领域 。 例如, 形式语
言中的文法规则也称为产生式 。 产生式又称为产生式规
则, 或简称规则 。
2004.11.3 AI程序设计 48
第一部分:第 2章 知识表示方法
2.3.1.1 产生式的一般形式
产生式通常用于表示具有因果关系的知识, 其一般形式为,
前件 → 后件
其中,前件为前提,后件为结论或动作。前件和后件可以是由逻辑
运算符 AND,OR,NOT组成表达式。产生式规则的语义是:如果前
提满足,则可得结论或者执行相应的动作,即后件由前件来触发。
所以,前件是规则的执行条件,后件是规则体。例如,
IF 动物是哺乳动物 AND 吃肉 THEN 该动物是食肉动物
就是一个产生式 。
2004.11.3 AI程序设计 49
第一部分:第 2章 知识表示方法
2.3.1.1 产生式的一般形式
产生式用 BNF范式严格描述为如下形式,
<产生式 >∷ = <前件 >→< 后件 >
<前件 >∷ = <简单条件 >| <复合条件 >
<后件 >∷ = <事实 >| <操作 >
<复合条件 >∷ = <简单条件 > AND <简单条件 >[( AND<简单条件 >) … ]
| <简单条件 > OR <简单条件 >[( OR <简单条件 >) … ]
<操作 >∷ = <操作名 >[( <变元 >,… ) ]
2004.11.3 AI程序设计 50
第一部分:第 2章 知识表示方法
2.3.1.2 产生式与蕴含式
由产生式的一般描述可以看出, 产生式与逻辑蕴含式在形式上非常
相似, 但二者又有所不同 。 事实上, 逻辑蕴含式只是产生式的一种特
殊情况 。
产生式除逻辑蕴含式外, 还包括各种操作, 规则, 变换, 算子, 函
数等等 。 概括来讲, 产生式描述了事物之间的一种对应关系 (包括因
果关系和蕴含关系 ),其外延十分广泛 。 状态转换规则和问题变换规
则都是产生式规则;程序设计语言的文法规则, 逻辑中的逻辑蕴含式
和等价式, 数学中的微分和积分公式, 化学中分子结构式的分解变换
规则等等, 也都是产生式规则;甚至体育比赛中的规则, 国家的法律
条文, 单位的规章制度等等, 也都可以表示成产生式规则 。
2004.11.3 AI程序设计 51
第一部分:第 2章 知识表示方法
2.3.1.2 产生式与蕴含式
一个产生式规则就是一条知识, 它既可以是精确知识又可以是不精
确知识 。 而谓词逻辑蕴含式只能表示精确知识 。 此外, 用产生式表示
知识的系统中, 知识的检验是通过事实与前提条件的匹配来实现的,
这样的匹配可以是精确的也可以是不精确的 。 然而, 对于谓词逻辑的
蕴含式而言, 该匹配必须是精确的 。
2004.11.3 AI程序设计 52
第一部分:第 2章 知识表示方法
2.3.2 产生式系统
产生式表示法一般用于所谓的产生式系统 。 产生式系统最早由
E,Post于 1943年提出, 并由 A,Newell和 E,A,Simon于 1972
年作为一种人类认识模型引入到人工智能研究领域 。 现在产生式系
统已经在人工智能中广泛应用, 并取得了很大进展 。
这里讨论的产生式系统, 是指一种基于产生式规则表示的知识系统 。
关于产生式系统的进一步讨论, 将在下一章进行 。
2004.11.3 AI程序设计 53
第一部分:第 2章 知识表示方法
2.3.2.1 产生式系统的组成
产生式系统是用来描述若干个不同的以产生式规则或产生式条件
及其操作对为基础, 相互配合, 协同作用的系统 。
产生式系统一般由全局数据库, 产生式规则库和控制策略三部分组
成 。
产生式规则库是某领域知识 ( 规则 ) 的存储器, 是描述该领域知
识的产生式集合 。 这些规则可以表示为与或树形式 。 该规则库是产
生式系统进行问题求解的基础 。 它是否能够有效地表达领域内的过
程性知识, 能否对知识进行合理地组织和管理, 直接关系到系统的
性能和运行效率 。
2004.11.3 AI程序设计 54
第一部分:第 2章 知识表示方法
2.3.2.1 产生式系统的组成
全局数据库也称为上下文, 黑板, 事实数据库等 。 它是一个用于存
放问题求解过程中各种当前信息的数据结构 。 全局数据库中的已知事
实通常用字符串, 向量, 集合, 矩阵, 表等数据结构表示 。 当产生式
规则库中某条产生式的前提与全局数据库中的某些事实相匹配时, 该
产生式就被激活, 并把用它推出的结论放入全局数据库中, 作为后面
推理的已知事实 。 全局数据库的内容是动态变化的 。
控制策略负责规则的选取和系统的运行 。 它主要完成匹配, 冲突消
解和操作 。 具体地讲就是, 按照一定的策略从产生式规则库中选择规
则与全局数据库中的已知事实进行匹配;如果匹配成功的规则不止一
条, 则需要进行冲突的消解以选取出其中的一条来执行;执行该条规
则的过程中, 将相应的结论加入全局数据库或者执行指定操作, 直至
问题得到求解 。
2004.11.3 AI程序设计 55
第一部分:第 2章 知识表示方法
2.3.2.2 产生式系统的分类
产生式系统从不同的角度出发, 有不同的分类 。 比如,
按推理方向划分可分为, 前向, 后向和双向产生式系统;
按产生式规则库和全局数据库的性质及结构特征划分可
分为可交换, 可分解, 可恢复产生式系统等等 。
2004.11.3 AI程序设计 56
第一部分:第 2章 知识表示方法
2.3.2.2 产生式系统的分类
按推理方向划分,( 1) 前向推理, 是从已知事实出发, 通过规则库
求得结论 。 也被称为数据驱动方式或者自底向上的方式 。 ( 2) 后向
推理, 是从目标 ( 作为假设 ) 出发, 反向使用规则求得已知事实,
也称目标驱动方式或者自顶向下的方式 。 ( 3) 双向推理, 既自底向
上, 又自顶向下做双向推理, 直至某个中间界面上两方向结果相符
便成功结束 。 这种双向推理较前向推理或后向推理所形成的推理网
络要小, 从而推理效率较高 。 运用不同的推理机制就形成了不同的
产生式系统 。
2004.11.3 AI程序设计 57
第一部分:第 2章 知识表示方法
2.3.2.2 产生式系统的分类
按组织结构特征划分,( 1) 对于规则的使用次序是可交换的, 无论使用哪一
条规则都可以达到目的产生式系统被称为可交换产生式系统 。 该系统的特点
是搜索过程不必进行回溯, 无需记录可用规则的作用顺序, 求解效率较高 。
但是系统要求每条规则的执行都要为全局数据库添加新的内容, 这一要求往
往难以适用 。 ( 2) 把一个规模较大且比较复杂的问题分解为若干个规模较小
且比较简单的子问题分别进行求解的系统被称为可分解产生式系统 。 该系统
由于将初始数据库分解为若干子库, 每个子库又可再进一步进行分解, 从而
缩小了搜索范围, 提高了问题求解效率 。 ( 3) 在问题求解过程中, 当出现求
解无法继续的情况时, 能够撤销由前一执行规则所产生的结果, 使全局数据
库恢复到先前的状态, 然后选用别的规则继续求解, 这样的系统被称为可恢
复产生式系统 。 该系统既可以向全局数据库添加新的内容, 又可以删除和修
改旧的内容, 操作灵活方便 。
2004.11.3 AI程序设计 58
第一部分:第 2章 知识表示方法
2.3.2.3 产生式系统的表示
产生式表示法容易描述事实, 规则以及它们的不确定性度量 。
事实可看成是断言一个语言变量的值或是多个语言变量间的关系的陈
述句 。 语言变量的值或语言变量间的关系可以是一个词, 不一定是数
字 。 如雪是白色的, 其中雪是语言变量, 其值是白色的 。 莉莉喜欢牡
丹花, 其中莉莉和牡丹花是两个语言变量, 两者关系的值是喜欢 。
一般情况下, 使用三元组 ( 对象, 属性, 值 ) 表示事实, 用 (关系,
对象 1,对象 2)来表示对象间关系, 若考虑不确定性则可用加入规则
强度的四元组进行表示 。 这种表示及其内部实现就是一个表 。 例如,
事实小王年龄是 15 岁, 可记为 ( Wang Age 15) ;而小王, 小李是
同学, 表达了二者之间的关系, 记为 ( Classmate Wang Lee) 。
2004.11.3 AI程序设计 59
第一部分:第 2章 知识表示方法
2.3.2.3 产生式系统的表示
为求解过程查找的方便, 在知识库中可将某类有关事实以网状, 树状结构
组织连结在一起 。 对于规则, 表示事务间的因果关系, 以, IF Condition
THEN Action”的单一形式来描述, 将规则作为知识的单位 。 其中的
Condition部分称作条件式前件或模式, 而 Action部分称作动作, 后件或结
论 。 条件部分常是一些事实 Ai的合取, 而结论常是某一事实 B,如果考虑不
确定性, 需另附可信度度量值 。
如 MYCIN系统中一条规则的表示 。 从专家那里获得的规则是
IF (1) the stain of organism is gramnegative
AND (2) the morphology of the or ganizm is rop,
AND (3) the aerobicity of the ganizm is anaerobic
THEN there is suggestive evidence(0.6) that the identity of the organism
is bacteroides
2004.11.3 AI程序设计 60
第一部分:第 2章 知识表示方法
2.3.2.3 产生式系统的表示
而用 Lisp实现的机器内部表示为
premise (and(same cntext gram gramneg)
(same cntext morph rod)
(same cntext air anaerobic))
action(conclude cntext zdent bacteroides tally 0.6)
为便于规则的使用, 在知识库中某些规则常按某种观点组织起来放在一起 。
2004.11.3 AI程序设计 61
第一部分:第 2章 知识表示方法
2.3.2.4 产生式系统的运行流程
产生式系统的运行是一个从初始事实出发, 寻求到达目标条件的
搜索求解过程 。 产生式系统求解问题的一般流程如图 2.2所示 。
2004.11.3 AI程序设计 62
第一部分:第 2章 知识表示方法
求解结束
初始化全局数据
库
是否存在未用规则
是否与事实匹配
执行当前规则
记录结论或执行操作
数据库是否包含问题解
是
是
是
否
是否添加事实
是
否
否
否
图 2.2 产生式系统运行流程图
( 1) 对全局数据库进行初始化 。 即把问题
的初始已知事实存入全局数据库 。
(2) 判断规则库中是否存在尚未使用过的规
则, 而且其前提可与全局数据库中的已知
事实相匹配, 则转第 ( 3) 步;否则, 不存
在这样的事实转第 ( 5) 步 。
( 3) 执行当前选中的规则, 并对该规则作
一标记, 把该规则执行后所得的结论送入
全局数据库 。 如果该规则的结论部分指出
的是某些操作, 则执行相应的操作 。
( 4) 检查全局数据库中是否已经包含了问
题的解, 如果包含则问题求解结束;否则,
转第 ( 2) 步 。
( 5) 要求用户提供进一步的问题相关事实,
若能提供则转第 ( 2) 步;否则, 问题求解
结束 。
( 6) 如果规则库中已经没有尚未使用过的
规则, 则问题求解结束 。
2004.11.3 AI程序设计 63
第一部分:第 2章 知识表示方法
2.3.3 产生式表示法的特点
产生式表示格式固定, 形式单一, 规则 ( 知识单位 ) 间相互较为
独立, 没有直接关系, 使数据库的建立较为容易, 处理较为简单的
问题是可取的 。 另外推理方式单纯 。 特别是知识库与推理机是分离
的, 这种结构给知识库的修改带来方便, 对系统的推理路径也容易
做出解释 。 此外, 产生式表示既可以表示确定性知识又可以表示不
确定性知识, 既便于表示启发性知识又便于表达过程性知识 。 此外,
产生式表示既可以表示确定性知识又可以表示不确定性知识, 既便
于表示启发性知识又便于表达过程性知识, 难怪产生式表示经常作
为建造专家系统的首选知识表示方法 。
2004.11.3 AI程序设计 64
第一部分:第 2章 知识表示方法
2.3.3 产生式表示法的特点
但是它也存在着一定的不足, 产生式系统的求解过程是一个担负
进行, 匹配 — 冲突消解 — 执行, 的过程 。 由于规则库一般都比较庞
大, 匹配通常是十分耗时的, 这样系统的工作效率就受到影响 。 同
时在求解复杂问题时还容易引起组合爆炸 。 此外, 产生式适合表达
具有因果关系的过程性知识, 而对于具有结构关系的知识却是无能
为力的 。 因此, 产生式表示法更适合于表示那些相关性不强, 不存
在结构关系的领域性知识 。
2004.11.3 AI程序设计 65
第一部分:第 2章 知识表示方法
2.3.4 与其它知识表示方法的比较
产生式表示法与逻辑表示法 。 产生式表示法的主要思想是基于产生式的, 其描
述形式与逻辑蕴含式十分相似 。 如前所述, 逻辑蕴含式只是产生式的一种特殊
形式 。 然而产生式表示法较之逻辑表示法却有一个突出的优势, 就是可以表示
不确定性知识, 因此它就具有更加广泛的应用 。
产生式表示法与过程表示法 。 产生式系统也可以看成是一种过程表示方式 。 两
者的主要区别在于:子程序表示允许子程序之间可以直接通信;而在产生式系
统中, 产生式规则只能通过全局数据库互相作用 。
产生式表示法与框架表示法 。 产生式表示法主要用于描述事物之间的因果关系,
而框架表示法则主要用于描述事物的内部结构以及事物之间的类属关系 。
2004.11.3 AI程序设计 66
第一部分:第 2章 知识表示方法
2.4 语义网络表示法
语义网络是 Quillian作为人类联想记忆的一个显式心理
学模型提出的。他认为,人在进行交际时总是首先有什
么东西需要说,而所说出的全部句子的形式是由想说什
么这种意图决定的。因此,他主张在处理文句生成的问
题时,需把语义放在第一位。 Simon于 1970年正式提出
了语义网络的概念,并讨论了它和一阶谓词的关系。
2004.11.3 AI程序设计 67
第一部分:第 2章 知识表示方法
2.4 语义网络表示法
2.4.1 语义网络的基本结构
2.4.2 语义网络的知识表示
2.4.3 语义网络与 Prolog
2.4.4 语义网络的求解流程
2.4.5 基本的语义关系
2.4.6 语义网络表示法的特点
2004.11.3 AI程序设计 68
第一部分:第 2章 知识表示方法
2.4.1 语义网络的基本结构
语义网络也称为联想网络, 是知识表示中最重要的方法之一 。 语义
网络利用结点和带标记的边构成的有向图描述事件, 概念, 状况, 动
作以及客体之间的关系 。 带标记的有向图能十分自然的描述客体之间
的关系 。
语义网络通常由语法, 结构, 过程和语义 4部分组成 。 其中, 语法
部分决定表示词汇表中允许用哪些符号, 它涉及各个节点和弧线;结
构部分叙述符号排列的约束条件, 指定各弧线连接的结点对;过程部
分说明访问过程, 这些过程能用来建立和修正描述, 以及回答相应问
题;语义部分确定与描述相关的意义的方法, 即确定有关节点的排列
及其占有物和对应弧线 。
2004.11.3 AI程序设计 69
第一部分:第 2章 知识表示方法
2.4.1 语义网络的基本结构
语义网络是对知识的有向图表示方法 。 一个语义网络是由一些以有向图表
示的三元图 ( 节点 A,弧, 节点 B) 连接而成 。 图中, 节点表示概念, 事物,
时间, 情况等 。 弧是有方向和有标注的 。 方向体现主次, 节点 A为主, 节点 B
为辅 。 弧上的标注表示节点的属性或节点之间的关系 。 这样的三元组的如图
2.3所示 。
从逻辑表示法来看, 一个语义网络相当于一组二元谓词 。 因为三元组 ( 节点 A,
弧, 节点 B) 可写成 P(个体 A,个体 B),其中个体 A,个体 B对应节点 A,节点 B,
而弧及其上标注的节点 A与节点 B的关系由谓词 P来体现 。
A B
RAB
图 2.3 最简单的语义网络(基本网元)
2004.11.3 AI程序设计 70
第一部分:第 2章 知识表示方法
2.4.1 语义网络的基本结构
语义网络的 BNF描述为,
<语义网络 >∷ = <基本网元 >| Merge( <基本网元 >,… )
<基本网元 >∷ = <节点 ><语义联系 ><节点 >
<节点 >∷ = ( <属性 — 值对 >,… )
<属性 — 值对 >∷ = <属性名 >,<属性值 >
<语义联系 >∷ = <预定义语义联系 >| <自定义语义联系 >
其中, Merge( … ) 表示一个合并过程, 它把括弧中的所有基本网元
关联在一起, 从而构成一个语义网络 。 图 2.4就是一个由基本网元合
并而成的语义网络结构的示例 。
2004.11.3 AI程序设计 71
第一部分:第 2章 知识表示方法
2.4.1 语义网络的基本结构
A
C B D
E F G
RAB RAD
RBE
RFE
RCF
RAC
RCG
RDG
图 2.4 语义网络结构示例
2004.11.3 AI程序设计 72
第一部分:第 2章 知识表示方法
2.4.2 语义网络的知识表示
语义网络如同其它知识表示方法一样, 应该能够有效地表示事实以及事物间
关系两方面的知识 。 这两种类型的知识表示在实质上是一致的, 只是表示关
系的连接上方的标记不同而已 。
语义网络较之普通网络最大的特点就在于它能表示事物之间的各种关系 。 因
此, 在语义网络中关系显得尤为重要, 它提供了组织知识的基本结构 。 没有
这些关系, 知识就只是基本事实的一个简单集合;而有了这些关系的描述,
知识就成为可以联系其它知识的关联结构 。 这些可表示的不同关系统称为语
义联系 。
常用的语义联系有 ISA( Is-A), AKO( A-Kind-Of), HAVE,AMO( A-
Member-Of) 等, 表示事物的性质, 属性 。 此外, 还有 Composed-of表示
构成关系; Before,After,At表示时间关系; Located-on,Located-at、
Located-under等表示事物间的位置关系; Similar-to,Near-to表示相似
或接近关系等等 。
2004.11.3 AI程序设计 73
第一部分:第 2章 知识表示方法
2.4.2 语义网络的知识表示
图 2.6是一个简单的用语义联系表示的例子 。
在这里要特别提到的是一种常用的知识表述结构, 即, 对象 -属性 -值 OAV
( Object-Attribute-Value tripe), 。 对象, 属性, 值这三个因素是在构建
语义网络过程中最频繁出现的项, 它们足以描述一个简化的语义网络 。 因此,
OAV常常用于提取语义网络的主要特征项, 并以列表的形式列举出有关知识,
之后通过规则推理转换为机器代码 。
ISA
燕子 鸟 动物
AKO
翅膀
HAVE
图 2.6 语义联系示例
2004.11.3 AI程序设计 74
第一部分:第 2章 知识表示方法
2.4.2 语义网络的知识表示
下面给出一个 OAV描述的例子 ( 参见表 2-1) 。
表 2-1 OAV语义结构举例
对象
属性
值
狗
毛色
棕黄色
狗
品种
京巴
狗
年龄
3
猫
毛色
白色
猫
品种
波斯
猫
年龄
5
2004.11.3 AI程序设计 75
第一部分:第 2章 知识表示方法
2.4.3 语义网络与 Prolog
语义网络表示很容易转换为 Prolog语言 。 因为, Prolog同样
可以有效地表达事实和规则这两方面知识 。
带有参数的谓词可以表示易于理解的某一事实 。 例如,
color( red) ;红色
father_of(tom,john); Tom是 John的父亲
此外, 通过 ISA,HAS-A等关系所表达的谓词, 也可以很好
的表示某种二元关系, 这正与语义网络的特点相吻合 。 例如,
is_a (red,color);红色是一种颜色
has_a (john,father); John有一位父亲
has_a (john,parents); John有双亲
2004.11.3 AI程序设计 76
第一部分:第 2章 知识表示方法
2.4.3 语义网络与 Prolog
但是, 对于上例中用 HAS-A所表示的双亲关系, 如果想要知道
John的父亲或母亲的具体姓名, 则需要在原有谓词之上引入附加谓词
来间接表示 。 例如,
is_a (tom,father); Tom是一位父亲
is_a (rose,mother); Rose是一位母亲
可是还是无法确定 Tom就是 John的父亲或者 Rose就是 John的母
亲, 因此, Prolog采用规则子句来进行描述 。 形式如下,
P:-P1,P2,…,Pn
其中, P为规则头, Pi为子目标;符号,-表示, 如果, 关系 。 这样前
面所说的, 双亲, 的例子, 就可以用 Prolog的子句表示为,
Parent(X,Y):-Father(X,Y)
Parent(X,Y):-Mother(X,Y)
2004.11.3 AI程序设计 77
第一部分:第 2章 知识表示方法
2.4.4 语义网络的求解流程
语义网络对问题求解是通过两种推理过程, 继承和匹配
来完成的 。
继承是指把对事物的描述从概念节点传递到实例节点 。
概念节点是指表示通用概念, 总体名称的节点, 而实例节
点是指表示那些相对于一般性概念的具体实例的节点 。 继
承过程分为 3类:值继承, If-need继承以及 Default继承 。
匹配也是一种有效的推理方式, 在语义网络中它是指通过
建立必要的虚节点和虚链, 通过部件匹配来实现问题求解 。
这里不作具体介绍 。
2004.11.3 AI程序设计 78
第一部分:第 2章 知识表示方法
2.4.4 语义网络的求解流程
用语义网络求解问题的一般过程为,
(1) 根据待求解问题的要求构造一个网络片断, 其中有些
节点或弧的表示为空, 用来反映待求解的问题 。
(2) 依据此网络片断到知识库中去寻找可匹配的网络, 以
找出所需要的信息 。 这种匹配一般不是完全的, 具有不确
定性, 因此需要解决不确定性匹配问题 。
(3) 当问题的语义网络片断与知识库中的某一语义网络片
断相匹配时, 则与该询问相匹配的事实就是所求问题的解 。
2004.11.3 AI程序设计 79
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
1) 类属关系
类属关系是指具有共同属性的不同事物间的分类关系,
成员关系或实例关系 。
A_kind_of:含义为, 是一种,,
表示一个事物是另一个事物的一种类型 。
A_member_of:含义为, 是一员,,
表示一个事物是另一个事物的一个成员 。
Is_a:含义为, 是一个,,
表示一个事物是另一个事物的一个实例 。
2004.11.3 AI程序设计 80
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
2) 包含关系
包含关系也称为聚类关系, 是指具有组织或结构特征
的, 部分与整体, 之间的关系 。 常用的包含关系有,
Part_of:含义为, 是一部分,, 表示一个事物是另一个
事物的一部分 。
2004.11.3 AI程序设计 81
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
3) 属性关系
属性关系是指事物和其属性之间的关系 。 常用的属性
关系有,
Have:含义为, 有,, 表示一个结点具有另一个结点所
描述的属性 。
Can,含义是, 能,,, 会,, 表示一个结点能做另一个
结点的事情 。
2004.11.3 AI程序设计 82
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
4) 时间关系
时间关系是指不同事件在其发生时间方面的先后次序
关系 。 常用的时间关系有,
Before:含义为, 在前,,
表示一个事件在另一个事件之前发生 。
After:含义为, 在后,,
表示一个事件在另一个事件之后发生 。
At:表示某一事件发生的时间 。
2004.11.3 AI程序设计 83
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
5) 位置关系
位置关系是指不同事物在位置方面的关系 。 常用的位
置关系有,
Located_on:含义为, 在上,, 表示某一物体在另一物体之上 。
Located_at:含义为, 在,, 表示某一物体所在的位置 。
Located_under:含义为, 在下,, 表示某一物体在另一物体之下 。
Located_inside:含义为, 在内,, 表示某一物体在另一物体之内 。
Located_outside:含义为, 在外,, 表示某一物体在另一物体之外 。
2004.11.3 AI程序设计 84
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
6) 相近关系
相近关系是指不同事物在形状, 内容等方面相似或接近 。
常用的相近关系有,
Similar_to:含义为, 相似,, 表示某一事物与另一事物
相似 。
Near_to:含义为, 接近,, 表示某一事物与另一事物接
近 。
2004.11.3 AI程序设计 85
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
7) 组成关系
表示, 构成, 联系, 是一种一对多的联系, 被它联系
的节点间不具有属性基继承性 。 常用的组成关系有,
Composed_of:含义为, 构成,,
表示一个事物由另一些事物所组成 。
2004.11.3 AI程序设计 86
第一部分:第 2章 知识表示方法
2.4.5 基本的语义关系
8) 推论关系
推论关系是指从一个概念推出另一个概念的语义关系 。
常用的组成关系有,
Infer:含义为, 推出,,
表示前提与结论之间的推理关系 。
2004.11.3 AI程序设计 87
第一部分:第 2章 知识表示方法
2.4.6 语义网络表示法的特点
主要优点,( 1) 重要相关性能被明确地清晰地表示出来 。
( 2) 基于联想记忆模型, 相关事实可以从其直接相连的结
点中推导出来, 而不必遍历整个庞大的知识库, 从而避免
了组合爆炸 。 ( 3) 具有继承性, 并易于对继承层次进行演
绎 。 ( 4) 能够利用少量的基本概念的记号建立状态和动作
的描述 。
主要缺点,( 1) 不能保证网络操作所得结沦的有效性 。
( 2) 逻辑表达不充分, 无法嵌入启发式信息 。 ( 3) 对于
网络不存在标准的术语和约定, 语义解释取决于操作网络
的程序 。 ( 4) 网络的搜索需要强有力的组织原则 。
2004.11.3 AI程序设计 88
第一部分:第 2章 知识表示方法
2.5 框架表示法
框架理论是美国著名学者 Minsky于 1975年提出的。
该理论认为人们对现实世界中各种事物的认识都是以一
种类似于框架的结构存储在记忆当中的,当面临一个新
事物时,就从记忆中找出一个适合的框架,并根据实际
情况对其细节加以修改补充,从而形成对当前事物的认
识。框架表示法正是以框架理论为基础发展起来的一种
结构化的知识表示法。目前,已成为一种被广泛使用的
知识表示方法。
2004.11.3 AI程序设计 89
第一部分:第 2章 知识表示方法
2.5 框架表示法
2.5.1 框架的基本结构
2.5.2 框架的 BNF描述
2.5.3 框架系统中的预定义槽名
2.5.4 框架系统的问题求解过程
2.5.5 框架系统的程序语言实现
2.5.6 框架系统的特点
2004.11.3 AI程序设计 90
第一部分:第 2章 知识表示方法
2.5.1 框架的基本结构
框架是一种集事物各方面属性的描述为一体,
并反映相关事物间各种关系的数据结构。它是知
识表示的基本单位。一个框架由若干个, 槽, 构
成,槽又依据具体情况划分为若干个, 侧面, 。
槽用于描述对象的某一方面的属性,侧面用于描
述相应属性的某一方面。槽与侧面所具有的属性
值分别称为槽值和侧面值。
2004.11.3 AI程序设计 91
第一部分:第 2章 知识表示方法
2.5.1 框架的基本结构
框架的基本结构可表示如下,
<框架名 >
<槽名 1>,<槽值 1> <侧面名 11> 值 111,值 112,..,
<侧面名 12> 值 121,值 122,..,
,.,
<槽名 2>,<槽值 2> <侧面名 21> 值 211,值 212,..,
<侧面名 22> 值 221,值 222,..,
,.,
<槽名 n>,<槽值 n> <侧面名 n1> 值 n11,值 n12,..,
<侧面名 n2> 值 n21,值 n22,..,
,.,
<约束 >,<约束条件 1>
<约束条件 2>
,.,
<约束条件 k>
2004.11.3 AI程序设计 92
第一部分:第 2章 知识表示方法
2.5.1 框架的基本结构
例 下面是一个描述, 大学教师, 的框架,
框架名,<大学教师 >
类属,<教师 >
学位,( 学士, 硕士, 博士 )
专业,<学科专业 >
职称,( 助教, 讲师, 副教授, 教授 )
外语:语种:范围,( 英, 法, 日, 俄, 德, … )
缺省:英
水平,( 优, 良, 中, 差 )
缺省:良
2004.11.3 AI程序设计 93
第一部分:第 2章 知识表示方法
2.5.2 框架的 BNF描述
下面给出框架的 BNF描述,
〈 框架 〉 ∷ = 〈 框架头 〉 〈 槽部分 〉 [ 〈 约束部分 〉 ]
〈 框架头 〉 ∷ = 〈 框架名 〉 〈 框架名的值 〉
〈 槽部分 〉 ∷ = 〈 槽 〉,[ 〈 槽 〉 ]
〈 约束部分 〉 ∷ = 〈 约束 〉 〈 约束条件 〉,[ 〈 约束条件 〉 ]
〈 框架名的值 〉 ∷ = 〈 符号名 〉 | 〈 符号名 〉 ( 〈 参数 〉,[ 〈 参数 〉 ])
〈 槽 〉 ∷ = 〈 槽名 〉 〈 槽值 〉 | 〈 侧面部分 〉
〈 槽名 〉 ∷ = 〈 系统预定义槽名 〉 | 〈 用户自定义槽名 〉
〈 槽值 〉 ∷ = 〈 静态描述 〉 | 〈 过程 〉 | 〈 谓词 〉 | 〈 框架名的值 〉 | 〈 空 〉
〈 侧面部分 〉 ∷ = 〈 侧面 〉,[ 〈 侧面 〉 ]
〈 侧面 〉 ∷ = 〈 侧面名 〉 〈 侧面值 〉
〈 侧面名 〉 ∷ = 〈 系统预定义侧面名 〉 | 〈 用户自定义侧面名 〉
〈 侧面值 〉 ∷ = 〈 静态描述 〉 | 〈 过程 〉 | 〈 谓词 〉 | 〈 框架名的值 〉 | 〈 空 〉
〈 静态描述 〉 ∷ = 〈 数值 〉 | 〈 字符串 〉 | 〈 布尔值 〉 | 〈 其它值 〉
〈 过程 〉 ∷ = 〈 动作 〉 | 〈 动作 〉,[ 〈 动作 〉 ]
〈 参数 〉 ∷ = 〈 符号名 〉
2004.11.3 AI程序设计 94
第一部分:第 2章 知识表示方法
2.5.2 框架的 BNF描述
对此表示有如下几点说明,
(1)框架名的值允许带有参数 。 此时, 当另一个框架调用它时需要提供
相应的实在参数 。
(2)当槽值或侧面值是一个过程时, 它既可以是一个明确表示出来的
〈 动作 〉 串, 也可以是对主语言的某个过程的调用, 从而可将过程性
知识表示出来 。
(3)当槽值或侧面值是谓词时, 其真值由当时谓词中变元的取值确定 。
(4)槽值或侧面值为 〈 空 〉 时, 表示该值等待以后填入, 当时还不能确
定 。
(5)〈 约束条件 〉 是任选的, 当不指出约束条件时, 表示没有约束 。
2004.11.3 AI程序设计 95
第一部分:第 2章 知识表示方法
2.5.3 框架系统中的预定义槽名
在框架系统中,框架之间的联系实际上是通过在槽中填入相应
的框架名来实现的。为了提供一些常用且可公用的槽名,在框架
系统中通常预先定义了一些标准槽名,称这些槽名为系统预定义
槽名。在框架系统中,框架之间的联系实际上是通过在槽中填入
相应的框架名来实现的。为了提供一些常用且可公用的槽名,在
框架系统中通常预先定义了一些标准槽名,称这些槽名为系统预
定义槽名。常用的预定义槽名有以下几种,is_a槽,AKO槽,
subclass槽,instance槽,part_of槽,infer槽,
possible_reason槽,similar槽,rotation槽。
2004.11.3 AI程序设计 96
第一部分:第 2章 知识表示方法
2.5.3 框架系统中的预定义槽名
(1) is_a槽
is_a槽用来指出一个具体事物与其抽象概念间的类属关系 。 其直观
含义为, 是一个,, 表示一个事物是另外一个事物的特例 。 设 F和
G是两个实体框架测, F is_a G”的含义为:实体集 F为实体集 G的
一个特例 。 一般来说, is_a槽所指出的联系都具有继承性, 即下层
框架可以继承上层框架所描述的属性或值 。
2004.11.3 AI程序设计 97
第一部分:第 2章 知识表示方法
2.5.3 框架系统中的预定义槽名
(2) AKO槽
AKO槽用来指出事物间在抽象概念上的类属关系 。 其直观含义为, 是一种
( A Kind Of),, 表示一个事物是另外一个事物的一种类型, 例如分类问
题 。 用 AKO作为下层框架的槽名时, 其槽值为上层框架的框架名 。 它表示
该下层框架所描述的事物比其上层框架更具体, 或者说该上层框架所描述
的事物比下层框架更一般或更抽象 。 用 AKO作为下层框架的槽名时, 说明
下层框架对上层框架具有继承性, 即下层框架可以继承其上层框架所描述
的属性或值 。
(3) subclass槽
subclass槽用来指出于类与类之间的类属关系 。 当用它作为某下层框架的
槽时, 表示该下层框架是其上层框架的一个子类 。
2004.11.3 AI程序设计 98
第一部分:第 2章 知识表示方法
2.5.3 框架系统中的预定义槽名
(4) instance槽
instance槽用来建立, AKO”槽的逆关系 。 当用它作为某上层框架的槽时,
可用来指出它的下一层框架都有哪些 。 由 instance槽所建立起来的上, 下层
框架间的联系具有继承性, 即下层框架可以继承上层框架所描述的属性与值 。
(5) part_of槽
part_of槽用于指出, 部分, 与, 全体, 的关系 。 当用它作为某下层框架的
槽时, 它指出该下层框架所描述的事物仅是其上层框架的一部分 。 例如, 上
层框架描述的是, 人体,, 而下层框架描述的是, 手, 。 显然, 手仅是人体
的一部分 。 需要指出的是, part_of槽与前面提到的 4种槽在本质上是有区
别的 。 前面 4种槽描述的都是上, 下层框架之间的类属关系, 它们之间具有
共同特征, 且具有继承性 。 而 part_of槽仅是指出下层框架为上层框架的子
结构, 它们之间一般不具有共同特征, 也不具有继承性 。
2004.11.3 AI程序设计 99
第一部分:第 2章 知识表示方法
2.5.3 框架系统中的预定义槽名
(6) infer槽
infer槽用于指出两个框架所描述事物间的逻辑推理关系, 它可用来表示相应
的产生式规则 。 例如, 有如下知识,
框架名,〈 诊断规则 〉
症状 1:咳嗽
症状 2:发烧
症状 3:打喷嚏
infer,〈 结论 〉
可信度,0.8
框架名,〈 结论 〉
病名:感冒
用药:口服感冒清
服法:一日三次, 每次 2粒
2004.11.3 AI程序设计 100
第一部分:第 2章 知识表示方法
2.5.3 框架系统中的预定义槽名
(7) possible_reason槽
possible_reason槽与 infer槽的作用相反, 用来把某个结论与可能的原因联
系起来 。 例如在上述, 结论, 框架中, 可增加一个 possible_reason槽, 其
槽值为某个框架的框架名 。
(8) similar槽
similar槽用于指出两个框架所描述的事物之间的相似关系 。 如果两个框架所
表示事物的成员之间有足够多的共同特性, 则认为它们是相似的 。 这种相似
关系用 similar槽描述 。
(9) rotation槽
框架可以通过完全任意的关系相联 。 例如, rotation槽用于指出两个框架所
描述的事物之间的, 旋转, 关系 。 如果两个框架所表示的事物是从两个不同
角度对同一实体的观察, 则它们之间可以通过 rotation槽相连 。
2004.11.3 AI程序设计 101
第一部分:第 2章 知识表示方法
2.5.4 框架系统的问题求解过程
由框架的形式可以看出, 框架适合表达结构性的知识 。 所以, 概念, 对象等
知识最适于用框架表示 。 其实, 框架的槽就是对象的属性或状态, 槽值就是
属性值或状态值 。 不仅如此, 框架还可以表示行为 ( 动作 ), 所以, 有些过
程性事件或情节也可用框架网络来表示 。 这是框架系统的表达能力 。
在框架理论中, 框架是知识的基本单位, 把一组有关的框架连接起来便
可形成一个框架系统 。 在框架系统中, 系统的行为由该系统内框架的变化来
实现, 系统的推理过程由框架之间的协调来完成 。
用框架表示知识的系统中, 问题求解主要是通过匹配与填槽实现的 。 用框架
求解问题的基本过程是,
( 1) 将问题用适当的框架表示出来 。
( 2) 与数据库中已有的框架进行匹配 。
( 3) 确定可匹配的预选框架, 收集进一步信息 。
( 4) 选用适当的评价方法对预选框架进行评价, 决定其是否被接受 。
2004.11.3 AI程序设计 102
第一部分:第 2章 知识表示方法
2.5.5 框架系统的程序语言实现
框架系统可以方便的用程序语言进行实现 。 有一种名为框架表示
语言 FRL( Frame Representation Language) 的程序设计语言,
就是专门基于框架的程序设计语言 。 用它就可以方便地实现框架知
识表示 。 不过, 用 PROLOG也可方便地实现框架表示 。
用 PROLOG实现框架表示, 一般采用含结构或表的谓词来实现 。
2004.11.3 AI程序设计 103
第一部分:第 2章 知识表示方法
2.5.5 框架系统的程序语言实现
例如, 前面的, 教师, 框架用 PROLOG可表示如下,
frame( name(, 教师, ),
kind_of(, 〈 知识分子 〉,),
work( scope(, 教学,,, 科研, ), default(, 教学, ))
sex(, 男,,, 女, ),
reco_of_f_s(, 中师,,, 高师, ),
type(, 〈 小学教师 〉,,” 〈 中学教师 〉,,,〈 大学教师 〉,)),
2004.11.3 AI程序设计 104
第一部分:第 2章 知识表示方法
2.5.6 框架系统的特点
主要优点,① 有利于期望引导的处理 。 ② 在给定的状况下, 通过
设计能决定其本身的可利用性或者提供其他框架 。 ③ 深层次, 结构
性和一致性较好, 并且具有继承性 。 ④ 知识组织的方式有利于推理 。
主要缺点,① 许多实际情况与原型不符 。 ② 不善于表达过程性知
识 。 ③ 属性的不确定性带来知识表示的不确定性 。 ④ 对新情况, 特
例及复合对象的描述能力欠缺 。
框架表示法通常适用于表述数学概念及相对较窄的专业知识领域 。
2004.11.3 AI程序设计 105
第一部分:第 2章 知识表示方法
2.6 脚本表示法
脚本表示法是夏克 ( R,C,Schank) 依据他的概念
依赖理论提出的一种知识表示方法, 时间约在 1975年 。
脚本与框架类似, 由一组槽组成, 用来表示特定领域内
一些事件的发生序列 。
2004.11.3 AI程序设计 106
第一部分:第 2章 知识表示方法
2.6 脚本表示法
2.6.1 概念依赖理论
2.6.2 脚本的结构
2.6.3 脚本的推理
2.6.4 脚本表示法的特点
2004.11.3 AI程序设计 107
第一部分:第 2章 知识表示方法
2.6.1 概念依赖理论
在人类的各种知识中,常识性知识是数量最大、涉及
面最宽、关系最复杂的知识,很难把它们形式化地表示出
来交给计算机处理。面对这一难题,夏克提出了概念依赖
理论,其基本思想是:把人类生活中各类故事情节的基本
概念抽取出来,构成一组原子概念,确定这些原子概念间
的相互依赖关系,然后把所有故事情节都用这组原子概念
及其依赖关系表示出来。
夏克在其研制的 SAM( Script Applier Mechanism)
中对动作一类的概念进行了原子化,抽取了 11种原子动作,
并用其来表示槽的行为。这 11种原子动作是,
2004.11.3 AI程序设计 108
第一部分:第 2章 知识表示方法
2.6.1 概念依赖理论
(1) PROPEL:表示对某一对象施加外力。例如推、拉、打等。
(2) GRASP:表示行为主体控制某一对象 。 例如抓起某东西, 扔掉某东西等 。
(3) MOVE:表示行为主体变换自己身体的某一部位 。 例抬手, 蹬脚, 坐下等
(4) ATRANS:表示某种抽象关系的转移 。 例如当把某物交给另一人时, 该物的所
有关系就发生了转移 。
(5) PTRANS:表示某一物理对象物理位置的改变 。 例如某人从一处走到另一处,
其物理位置发生了变化 。
(6) ATTEND:表示用某个感觉器官获取信息 。 例用眼睛查看或听某种声音等 。
(7) INGEST:表示把某物放入体内 。 例如吃饭, 喝水等 。
(8) EXPEL:表示把某物排出体外 。 例如落泪, 呕吐等 。
(9) SPEAK:表示发出声音 。 例如唱歌, 喊叫, 说话等 。
(10) MTRANS:表示信息的转移 。 例如看电视, 窃听, 交谈, 读报等 。
(11) MBUILD:表示由已有的信息形成新信息 。
2004.11.3 AI程序设计 109
第一部分:第 2章 知识表示方法
2.6.2 脚本的结构
脚本表述的是特定范围内的原型事件的结构, 它是框架的一种特殊形
式, 用一组槽来描述这些事件的发生序列 。 脚本通常由开场条件, 角色,
道具, 场景和结局等几部分组成 。
一个脚本通常由以下几部分组成 。
(1) 进入条件:给出在脚本中所描述事件的前提条件 。
(2) 角色:是一些用来表示在脚本所描述事件中可能出现的有关人物的槽 。
(3) 道具:是一些用来表示在脚本所描述事件中可能出现的有关物体的槽 。
(4) 场景:用来描述事件发生的真实顺序 。 一个事件可以由多个场景组成, 而每
个场景又可以是其他的脚本 。
(5) 结局:给出在脚本所描述事件发生以后所产生的结果 。
2004.11.3 AI程序设计 110
第一部分:第 2章 知识表示方法
2.6.2 脚本的结构
下面以夏克的, 餐厅, 脚本为例来说明各个部分的组成 。
(1) 进入条件,① 顾客饿了, 需要进餐; ② 顾客有足够的钱 。
(2) 角色:顾客, 服务员, 厨师, 老板 。
(3) 道具:食品, 桌子, 菜单, 钱 。
(4) 场景,
场景 1:进入 —— ① 顾客进入餐厅; ② 寻找桌子; ③ 在桌子旁坐下 。
场景 2:点菜 —— ① 服务员给顾客菜单; ② 顾客点菜;
③ 顾客把菜单还给服务员; ④ 顾客等待服务员送菜 。
场景 3:等待 —— ① 服务员告诉厨师顾客所点的菜; ② 厨师做菜, 顾客等待 。
场景 4:吃饭 —— ① 厨师把做好的荣给服务员; ② 服务员把菜送给顾客;
③ 顾客吃菜 。
场景 5:离开 —— ① 服务员拿来账单; ② 顾客付钱给服务员;
③ 顾客离开餐厅 。
(5) 结果,① 顾客吃了饭, 不饿了; ② 顾客花了钱; ③ 老板赚了钱; ④ 餐厅食品少了 。
2004.11.3 AI程序设计 111
第一部分:第 2章 知识表示方法
2.6.3 脚本的推理
脚本所描述的事件是一个因果链 。 链头是一组开场条件, 只有当这
些初始条件满足时, 该脚本中的事件才能开始;链尾是一组结果,
只有当这一组结果满足时, 该脚本中的事件才能结束, 以后的事件
或事件序列才能发生 。 在这个因果链中, 一个事件和其前后事件之
间是相互联系的, 前面的事件可使当前事件产生, 当前事件又可能
使后面的事件产生 。
一个脚本建立之后, 如果已知该脚本适合于所给定的事件, 则对一
些在脚本中没有明显提出的事件, 可以通过脚本进行预测, 对那些
在脚本中已明显提到的事件, 可通过脚本给出它们之间的联系 。 一
个脚本在使用之前必须先将其激活, 根据脚本的重要性, 激活脚本
有以下两种方法,
2004.11.3 AI程序设计 112
第一部分:第 2章 知识表示方法
2.6.3 脚本的推理
(1) 对于不属于事件核心部分的脚本, 只需要设置指向该脚本的指
针即可, 以便当它成为核心时能够启用 。 例如, 对于前面讨论过的
餐厅脚本, 有以下事件,
,何雨在去展览会的路上经过他喜欢的饭馆 。 他非常喜欢这次网络
信息展览会, 。 那么应该采用这种方法, 设置指向餐厅脚本的指什 。
(2) 对于符合核心事件的脚本, 则应使用在当前事件中涉及到的具
体对象和人物去填写脚本槽 。 剧本的前提, 道具, 角色和事件等常
能起到激活脚本的指示器的作用 。
一旦脚本被激活, 则可以用它来进行推理 。 其中, 最重要的是利用
剧本可以预测没有明确提及的事件的发生 。
2004.11.3 AI程序设计 113
第一部分:第 2章 知识表示方法
2.6.3 脚本的推理
例如, 对于以下情节,
,昨晚, 何雨到了餐厅, 他订了鱼香肉丝, 大米 。 当他要付款时发
现没钱了 。 因为开始下雨了, 所以他赶快回家了, 。
如果有人问,
,昨晚, 何雨吃饭了吗?,
虽然在上面没有提到何雨吃没吃饭的问题, 但借助于餐厅剧本, 可
以回答:, 他吃了, 。 这是因为启用了餐厅剧本 。 情节中的所有事
件与剧本中所预测的事件序列相对应, 因为可以推出整个事件正常
进行时所得出的结果 。
2004.11.3 AI程序设计 114
第一部分:第 2章 知识表示方法
2.6.3 脚本的推理
但是, 一旦一个典型的事件被中断, 也就是给定情节中的某个事件与剧
本中的事件不能对在时, 则剧本便不能预测被中断以后的事件了 。 例如,
有如下情节,
,何雨走进餐厅, 他被带到餐桌旁, 订了一大盘鱼香肉丝和米饭之后,
他坐在那里等了许久 。 于是, 他生气地走了 。,
在该情节中, 因为要久等, 所以何雨走了 。 这一事件改变了餐厅脚本中
所预测的事件序列, 因而被中断了 。 这时就不能推断何雨是否付了帐等
情节 。 但是, 仍然可以推出他看了菜单, 这是因为看菜单事件发生在中
断之前 。 从这个例子还可以看出, 利用脚本可以将事情的注意力集中在
,因为久等, 何雨生气了, 这样一些特殊事件的发生上 。
2004.11.3 AI程序设计 115
第一部分:第 2章 知识表示方法
2.6.4 脚本表示法的特点
脚本结构与框架结构相比, 要呆板得多, 知识表示的
范围也比较窄 。 因此, 脚本无法有效表示生活当中多种
多样的知识 。 但是, 对于表达预先构思好的特定知识 或
顺序性动作及事件, 如理解故事情节等, 是非常有效的 。
目前, 脚本表示主要在自然语言理解方面获得了一些应
用 。
2004.11.3 AI程序设计 116
第一部分:第 2章 知识表示方法
2.7 过程表示法
在人工智能的发展史中, 关于知识的表示方法曾存在
两种不同的观点 。 一种观点认为知识主要是陈述性的,
其表示方法应着重将其静态特性, 即事物的属性以及事
物间的关系表示出来, 称以这种观点表示知识的方法为
陈述式或说明性表示方法;另一种观点认为知识主要是
过程性的, 其表示方法应将知识及如何使用这些知识的
控制性策略均表述为求解问题的过程, 称以这种观点表
示知识的方法为过程性表示方法, 或过程表示法 。
2004.11.3 AI程序设计 117
第一部分:第 2章 知识表示方法
2.7 过程表示法
2.7.1 表示知识的方法
2.7.2 过程表示的问题求解过程
2.7.3 过程表示的特点
2.7.4 过程性与说明性表示方法的比较
2004.11.3 AI程序设计 118
第一部分:第 2章 知识表示方法
2.7.1 表示知识的方法
说明性表示方法是一种静态表示知识的方法,其主要特征是把领域
内的过程性知识与控制性知识(即问题求解策略)分离开来。
过程性表示方法着重于对知识的利用, 它把与问题有关的知识以及
如何运用这些知识求解问题的控制策略都表述为一个或多个求解问题
的过程, 每一个过程是一段程序, 用于完成对一个具体事件或情况的
处理 。 在问题求解过程中, 当需要使用某个过程时就调用相应的程序
并执行 。 在以这种方法表示知识的系统中, 知识库是一组过程的集合,
当需要对知识库进行增, 删, 改时, 则相应地增加, 删除及修改有关
的过程 。
2004.11.3 AI程序设计 119
第一部分:第 2章 知识表示方法
2.7.1 表示知识的方法
前面所讨论的几种知识表示方法, 均属陈述性知识表示, 它们所强
调的是知识的静态, 显式描述, 而对于如何使用这些知识, 则需要通
过控制策略来决定 。 过程性知识表示则不同, 它可将有关某一问题领
域的知识, 连同如何使用这些知识的方法, 均隐式地表示为一个求解
问题的过程 。
过程性知识表示方法中, 过程所给出的是事物的一些客观规律, 表
达的是如何求解问题, 知识的描述形式就是程序, 所有信息均隐含在
程序之中 。 过程表示没有固定的表示形式, 如何描述知识完全取决于
具体问题 。
2004.11.3 AI程序设计 120
第一部分:第 2章 知识表示方法
2.7.1 表示知识的方法
一般来说, 一个过程规则由以下 4部分组成 。
(1) 激发条件 。 激发条件由推理方向和调用模式两部分组成 。 其中, 推理方
向用于指出推理是正向推理 ( FR) 还是逆向推理 ( BR) 。 若为正向推理, 则
只有当综合数据库中的已有事实可以与其, 调用模式, 匹配时, 该过程规则
才能被激活 。 若为逆向推理, 则只有当, 调用模式, 与查询目标或子目标匹
配时才能将该过程规则激活 。
(2) 演绎操作 。 演绎操作由一系列的子目标构成 。 当前面的激发条件满足时,
将执行这里列出的演绎操作 。
(3) 状态转换 。 状态转换操作用来完成对综合数据库的增, 删, 改操作 。
(4) 返回 。 过程规则的最后一个语句是返回语句, 用于指出将控制权返回到
调用该过程规则的上一级过程规则那里去 。
2004.11.3 AI程序设计 121
第一部分:第 2章 知识表示方法
2.7.1 表示知识的方法
作为例子, 下面给出一个关于同学问题的过程表示 。 设有如下知识,
,如果 x与 y是同班同学, 且 z是 x的老师, 则 z也是 y的老师,
可用过程规则表示为,
BR( Teacher? z? y)
GOAL( Classmate? x y)
GOAL( Teacher z x)
INSERT( Teacher z y)
RETURN
其中 BR是逆向推理标志; GOAL表示求解子目标, 即进行过程调用; INSERT
表示对数据库进行插入操作; RETURN作为结束标志;带,?, 的变量表示
其值将在该过程中求得 。
2004.11.3 AI程序设计 122
第一部分:第 2章 知识表示方法
2.7.2 过程表示的问题求解过程
在用过程规则表示知识的系统中, 问题求解的基本过程是:每当有
一个新的目标时, 就从可以匹配的过程规则中选择一个执行之 。 在该
规则的执行过程中可能会产生新的目标, 此时就调用相应的过程规则
并执行它 。 反复进行这一过程, 直至执行到 RETURN语句, 这时将控制
权返回给调用当前过程的上一级过程规则, 并依次按照调用时的相反
次序逐级返回 。 在这一过程中, 如果某过程规则运行失败, 就另选择
一个同层的可匹配的过程规则执行, 如果不存在这样的过程规则, 则
返回失败标志, 并将执行的控制权移交给上一级过程规则 。
下面说明采用正向推理的问题求解过程 。
2004.11.3 AI程序设计 123
第一部分:第 2章 知识表示方法
2.7.2 过程表示的问题求解过程
设综合数据库中有以下已知事实,
( Classmate 王涛 赵晔 )
( Teacher 林海 王涛 )
其中, 第一个事实表示王涛与赵晔是同班同学;第二个事实表示林海是王涛的老师 。
假设需要求解的问题是:找出两个人 w及 v,其中 w是 v的老师 。 该问题可表示为
GOAL( Teacher? w? v)
求解该问题的过程是,
(1) 在过程规则库中找出对于问题 GOAL( Teacher? w? v), 其激发条件可以满足的过程现则 。 显然,
BR( Teacher? z? y) 经如下变量代换,w / z,v / y
之后可以匹配, 因此选用该过程规则 。
(2) 执行该过程规则中的第一个语句 GOAL( Classmate? x y) 。 此时, 其中的 y已被 v代换 。 经与已
知事实 ( Classmate 王涛 赵晔 ) 匹配, 分别求得了变量 x及 v的值, 即
x = 王涛 v = 赵晔
(3) 执行该过程规则中的第二个语句 GOAL( Teacher z x) 。 此时, x的值已经知道, z已被 w代换 。
经与已知事实 ( Teacher 林海 王涛 ) 匹配, 求得了变量 w的值, 即
w = 林海
( 4) 执行该过程规则中的第三个语句 INSERT( Teacher z y), 此时, z与 y的值均已知道, 分别是
林海和王涛, 因此这时插入数据库的事实是,
( Teacher 林海 赵晔 )
这表明, 林海也是赵晔的老师,, 求得了问题的解 。
2004.11.3 AI程序设计 124
第一部分:第 2章 知识表示方法
2.7.3 过程表示的特点
过程表示法的知识有如下优点,
(1) 表示效率高
过程表示法是用程序来表示知识的, 而程序能准确的表明先做什么, 后做什么
以及怎样做, 并直接嵌入一些启发式的控制信息 。 因此, 可以避免选择及匹配
那些无关的知识, 也不需要跟踪那些不必要的路径, 从而提高了系统的运行效
率 。
(2) 控制系统容易实现
由于控制性质已嵌入到程序中, 因而控制系统就比较容易设计 。
过程表示法的主要缺点是不易修改和添加新知识, 而且当对某一过程进行修改
时, 又可能影响到其他过程, 对系统的维护带来不便 。
目前的发展趋势是探讨说明性与过程性相结合的表示方法,以便在可维护性、
可理解性及运行效率方面寻求一种比较合理的解决方法。
2004.11.3 AI程序设计 125
第一部分:第 2章 知识表示方法
2.7.4 与说明性表示方法的比较
说明性的知识表示方法都是对知识和事实的一种静态描述, 是对
知识的一种显式表达形式 。 而过程性表示方法则是将有关某一问题
领域的知识, 连同如何使用这些知识的方法, 都隐式地表达为一个
求解问题的过程 。 它强调的是知识的动态方面, 即如何发现相关的
知识并进行推理等等 。 因此过程能够最好地体现知识的行为 。
过程表示是将知识包含在若干过程之中 。 过程是一小段程序, 它
处理某些特殊事件或特殊状况 。 每个过程都包含说明客体和事件的
知识, 以及在说明完好的情况下的运行知识等 。 过程通常用子程序
或模块实现 。 采用过程表示知识库的特征为, 知识库是一组过程集
合 。 知识库的修改是增加/删除子程序, 或修改子程序及访问条件 。
2004.11.3 AI程序设计 126
第一部分:第 2章 知识表示方法
2.7.4 与说明性表示方法的比较
过程表示方法与说明性表示方法的比较, 其 主要优点 是,① 有利
于表示启发式知识 。 ② 能实现扩充逻辑推理 ( 如缺省推理等 ) 。 ③
具有高度模块化的优点 。 ④ 能够通过类比进行推理 。
其 主要缺点 是; ① 由于知识隐含在过程之中, 因此难于修改和维
护 。 ② 固定的控制信息限定了其他可能的方法 。 过程表示方法本身
的适用范围比较窄, 但是研究说明性表示与过程性表示相结合的高
效, 易维护, 可理解的知识表示方法却是很有意义的 。
2004.11.3 AI程序设计 127
第一部分:第 2章 知识表示方法
2.8 Petri网表示法
Petri网的概念是 1962年由德国学者 Cah Abam Petri
提出的。开始是用于构造系统模型及进行动态特性分析,
后来逐渐被用于知识表示。
2004.11.3 AI程序设计 128
第一部分:第 2章 知识表示方法
2.8 Petri网表示法
2.8.1 Petri网的基本概念
2.8.2 表示知识的方法
2.8.3 Petri网表示法的特点
2004.11.3 AI程序设计 129
第一部分:第 2章 知识表示方法
2.8.1 Petri网的基本概念
Petri网的概念是 1962年由德国学者 Cah Abam Petri提出的。开
始是用于构造系统模型及进行动态特性分析,后来逐渐被用于知识
表示。
Petri网表示法中,对于不同的应用,网的构成及构成元素的意
义均不相同。但有三种元素是基本的,它们是:位置、转换及标记。
这三种元素之间的关系如图所示。
图 2.8 Petri网
Yj
Pj
Yk
pk ti
图中 pj 与 pk分别代表
第 j个和第 k个位置,
yj 与 yk分别是这两个
位置的标记,ti是某
一转换。
2004.11.3 AI程序设计 130
第一部分:第 2章 知识表示方法
2.8.2 表示知识的方法
如果用 pj 与 pk分别对应产生式规则的前提 dj和结论 dk,用
ti代表规则强度 μi, 则上图所示的 Petri网就与如下产生式
规则有相同的含义,
IF dj THEN dk (CF=μi)
2004.11.3 AI程序设计 131
第一部分:第 2章 知识表示方法
2.8.2 表示知识的方法
对于比较复杂的知识, Petri网通常用一个 8元组来表示知识之间的因果关系 。 具
体形式是,
(P,T,D,I,O,f,α,β)
其中,P是位置的有限集, 记为 P={p1,p2,…,pn};
T是转换的有限集, 记为 T= {t1,t2,…,tn} ;
D是命题的有限集, 记为 D= {d1,d2,…,dn} ;
I是输入函数, 表示从位置到转换的映射;
O是输出函数, 表示从转换到位置的映射;
F是相关函数, 表示从转换到 0~1之间一个实数的映射, 表示规则强度;
α是相关函数, 表示从转换到 0~1之间一个实数的映射, 表示位置对应命题的可
信度;
β是相关函数, 表示从位置到命题的映射, 表示位置所对应的命题 。
2004.11.3 AI程序设计 132
第一部分:第 2章 知识表示方法
2.8.2 表示知识的方法
在上面的叙述中, 用到了, 规则强度, 及, 可信度, 的概念, 这是用
来表示不确定性知识的 。 对于知识的不确定性有多种表示方法,, 可信
度, 是其中的一种, 它用来指出对知识为真的相信程度, 通常用 [0,1]
上的一个实数表示, 值越大表示相信为真的程度越高 。 对于一个产生式
规则, 其可信度称为规则强度 。 在上面的叙述中, 用到了, 规则强度,
及, 可信度, 的概念, 这是用来表示不确定性知识的 。 对于知识的不确
定性有多种表示方法,, 可信度, 是其中的一种, 它用来指出对知识为
真的相信程度, 通常用 [0,1]上的一个实数表示, 值越大表示相信为真
的程度越高 。 对于一个产生式规则, 其可信度称为规则强度 。
2004.11.3 AI程序设计 133
第一部分:第 2章 知识表示方法
2.8.2 表示知识的方法
Petri网表示法的基本思想就是用不同的位置来代表产生式规则的前提及结论,
用转换来表示不同的规则强度, 从而实现 Petri网对产生式规则的规则集的映射 。
对于如下产生式规则集,
r1,IF d1 THEN d2 (CF=0.85)
r2,IF d2 THEN d3 (CF=0.8)
r3,IF d2 THEN d4 (CF=0.8)
r4,IF d4 THEN d5 (CF=0.9)
r5,IF d1 THEN d6 (CF=0.9)
r6,IF d6 THEN d9 (CF=0.93)
r7,IF d1 AND d8 THEN d7 (CF=0.9)
r8,IF d7 THEN d4 (CF=0.9)
则可据此画出对应的 Petri网图 ( 留给读者完成 ) 。
2004.11.3 AI程序设计 134
第一部分:第 2章 知识表示方法
2.8.3 Petri网表示法的特点
Petri网表示法的主要特点是,① 便于描述系统状态
的变化及对系统特性的分析 。 ② 可在不同层次上变换描
述, 不必注意细节及相应的物理表示 。 ③ 适用于表述不
确定性知识 。
2004.11.3 AI程序设计 135
第一部分:第 2章 知识表示方法
2.9 面向对象表示法
面向对象是 20世纪 90年代软件的核心技术之一, 并已
在计算机学科的众多领域中得到了成功应用 。 目前, 面
向对象技术已经取得了长足的进步, 其研究已经涉足于
计算机软, 硬件的多个领域, 如面向对象程序设计方法
学, 面向对象数据库, 面向对象操作系统, 面向对象软
件开发环境, 面向对象硬件支持等等 。
在人工智能领域,人们已经把面向对象的思想、方
法用于智能系统的设计与开发,并在知识表示、知识库
组成与管理、专家系统设计等方面取得了较大进展。
2004.11.3 AI程序设计 136
第一部分:第 2章 知识表示方法
2.9 面向对象表示法
2.9.1 面向对象的基本概念
2.9.2 面向对象的基本特征
2.9.3 面向对象的知识表示
2.9.4 面向对象表示方法的特点
2004.11.3 AI程序设计 137
第一部分:第 2章 知识表示方法
2.9.1 面向对象的基本概念
对象, 类, 封装, 继承是面向对象技术中的基本概念,
对于理解面向对象的思想及方法有十分重要的作用 。 对
象是由一组数据和该组数据相关的操作构成的实体 。 在
面向对象表示中类和类继承是重要概念 。 类由一组变量
和一组操作组成, 它描述了一组具有相同属性和操作的
对象 。 每一个对象都属于某一个类, 每个对象都可由相
关的类生成, 类生成的过程就是例化 。 一个类拥有另一
个类的全部变量和操作, 这种拥有就是继承, 继承是面
向对象表示法的主要推理形式 。
2004.11.3 AI程序设计 138
第一部分:第 2章 知识表示方法
2.9.1 面向对象的基本概念
(1) 对象
, 对象, 是人们日常生活中经常用到的一个词汇, 但到目前为止
还没有一个统一的定义 。 从广义上讲, 所谓, 对象, 是指客观世界
中的任何事物, 即任何事物都可以在一定前提下成为被认识的对象,
它既可以是一个具体的简单事物, 也可以是由多个简单事物组合而
成的复杂事物 。 从这个意义上讲, 整个世界也可被认为是一个最复
杂的对象 。
从问题求解的角度来讲, 对象是与问题领域有关的客观事物 。 由于
客观事物都具有其自然属性及行为, 因此当把与问题有关的属性及
行为抽取出来加以研究时, 相应客观事物就在这些属性及行为的背
景下成为所关心的对象 。
2004.11.3 AI程序设计 139
第一部分:第 2章 知识表示方法
2.9.1 面向对象的基本概念
(1) 对象
按照哲学的观点, 对象有两重性, 即对象的静态描述和动态描述 。 其中, 静态描述表示
对象的类别属性;动态描述表示对象的行为特性 。 它们之间相互影响, 又相互依存 。 在
面向对象系统中, 对象是系统中的基本单位, 它的静态描述可表示为一个 4元组,
对象 ∷ = ( ID,DT,OP,FC)
其中 ID是对象的名字; DT是对象的数据; OP是对象的操作; FC是对象的外部接口 。
从对象的实现机制来讲, 对象是一台自动机, 它有一个名字, 有一组数据和一组操作,
不同对象间的相互作用通过互传消息实现 。 其中, 数据表示对象的状态;操作分为两类,
一类用于对数据进行操作, 改变对象的状态, 另一类用于产生输出结果 。 对一个对象来
说, 其它对象的操作不能直接操纵该对象私有的数据, 只有对象私有的操作可以操纵它,
即对象的状态只能由它私有的操作可以改变它 。 可见, 对象是把数据和操作该数据的代
码封装在一起的实体 。
由对象的自动机表示可以看出, 对象是一个具有局部状态和一个操作集合的实体, 而且
数据与操作是不可分的 。
2004.11.3 AI程序设计 140
第一部分:第 2章 知识表示方法
2.9.1 面向对象的基本概念
( 2) 类
类是一种对象类型, 它描述同一类型对象的共同特征 。 这种特征
包含操作特征和存储特征 。 类具有继承性, 一个类可以是某一类的
子类, 子类可以继承父类的所有特征 。 类的每一个对象都可作为该
类的一个实例 。
类可用一个 5元组形式地描述为,
类 ∷ = ( ID,INH,DT,OI,IF)
其中, ID,DT与对象的含义相似; INH是类的继承描述; OI是操作集;
IF是外部接口 。
2004.11.3 AI程序设计 141
第一部分:第 2章 知识表示方法
2.9.1 面向对象的基本概念
( 3) 消息与方法
消息传递是对象之间进行通信的唯一手段, 一个对象可以通过传递消
息与别的对象建立联系 。 所谓消息是对象之间相互请求或相互协作的
途径, 是要求某个对象执行其中某个功能操作的规格说明 。 消息的功
能是请求对象执行某种操作 。 所谓方法是对对象实施各种操作的描述,
亦即消息的具体实现 。
2004.11.3 AI程序设计 142
第一部分:第 2章 知识表示方法
2.9.2 面向对象的基本特征
面向对象的基本特征主要体现在模块性, 封装性, 继承
性, 多态性, 易维护性等 。
1) 模块性
2) 封装性
3) 继承性
4) 多态性
5) 易维护性
在面向对象系统中,对象是一个可以
独立运行的实体,其内部状态不直接
受外界的影响,它具有模块化的两个
重要特性:抽象和信息隐蔽。模块性
是设计良好软件系统的基本属性。
封装是一种信息隐蔽技术。它是指把
一个数据和与这个数据有关的操作集
合放在一起,形成一个封装体,外界
只需要知道其功能而不必知道实现细
节即可使用。
继承所表达的是一种对象类之间的相
交关系,它使得某类对象可以继承另
一类对象的特征和能力。继承性是通
过类的派生来实现的 。
所谓多态性是指一个名字可以有多种
含义。例如,对运算符“十”,它可
以做整数的加,也可以做实数的加,
甚至还可以做其他数据类型的加。
由于对象实现了抽象和封装,使得一
个对象可能出现的错误仅限于自身,
而不易向外传播,这就便于系统的维
护。
2004.11.3 AI程序设计 143
第一部分:第 2章 知识表示方法
2.9.3 面向对象的知识表示
面向对象的封装性体现了对象之间的横向联系, 而面向对象的继
承性则体现了对象之间的纵向联系 。 这两个特性的存在, 使得面向
对象系统的不同类之间形成了一种类的层次结构 。 这种类层次结构
支持分类知识的表示和演绎推理方式 。
面向对象的知识表示方法类似于框架表示法, 知识以类为单位按
照一定的层次结构进行组织, 不同类之间的联系可通过链来实现 。
以 C++为例, 类的一般形式如下,
2004.11.3 AI程序设计 144
第一部分:第 2章 知识表示方法
2.9.3 面向对象的知识表示
class 〈 类名 〉 [,〈 父类名 〉 ]
{
privae,
〈 私有成员 〉
public,
〈 公有成员 〉
}
其中, class是类说明的关键字; 〈 类名 〉 是类的名字, 它是该类在系统中的
唯一标识; 〈 父类名 〉 是可选的, 当该类有父类时, 用它来指出其父类的名
字; private是私有段的标识关键字, 它也是可选的, 若私有段处于类说明的
第一部分, 则此关键字可以省略; 〈 私有成员 〉 是只有该类本身才能访问的
成员; public是公有段的标识关键字; 〈 公有成员 〉 是允许其他类访问的成
员, 它提供了类的外部界面 。 类中的成员, 无论是私有成员还是公有成员,
都可以包括数据成员和成员函数两种类型 。
2004.11.3 AI程序设计 145
第一部分:第 2章 知识表示方法
2.9.3 面向对象的知识表示
面向对象表示法对类的一般描述
如下,
Class <类名 > [,<超类名 >]
[<类变量名表 >]
Structure
<对象的静态结构描述 >
Method
<关于对象的操作定义 >
Restraint
<限制条件 >
End
其中, Class是类描述开始符; <类名 >是该类的名字,
它是系统中该类的唯一标识; <超类名 >是任选的, 当该
类有父类时, 用它指出父类的名字; <类变量名表 >是一
组变量名构成的序列, 该类中所有对象都共享这些变量,
对该类对象来说它们是全局变量, 当把这些变量实例化
为一组具体的值时, 就得到了该类中的一个具体对象,
即一个实例; Structure后面的 <对象的静态结构描述 >
用于描述该类对象的构成方式; Method后面的 <关于对
象的操作定义 >用于定义对类元素施行的各种操作, 它既
可以是一组规则也可以是为实现相应操作所需执行的一
段程序, 在 C++中则为成员函数调用; Restraint后面的
<限制条件 >指出该类元素所应满足的限制条件, 可用包
含类变量的谓词构成, 当它不出现时表示没有限制 。
2004.11.3 AI程序设计 146
第一部分:第 2章 知识表示方法
2.9.4 面向对象表示方法的特点
在面向对象方法中, 类, 子类, 实例构成了一个
层次结构, 而且子类可以继承父类的数据及操作 。 这
种层次结构及继承机制直接支持了分类知识的表示,
而且其表示方法与框架表示法有许多相似之处, 知识
可以按类以一定层次形式进行组织, 类之间通过链实
现联系 。 面向对象表示法的主要特点表现为继承性,
灵活, 易于维护, 可重用性好等 。
2004.11.3 AI程序设计 147
第一部分:第 2章 知识表示方法
2.10 状态空间表示法
状态空间表示法是基于解答空间的问题表示和求解方法 。 它
通过在某个可能的解空间内寻找可行解来求解问题, 它是以状
态和运算符为基础来表示和求解问题的 。
状态是为描述某类不同事物间的差别而引入的一组最少变量
q0,ql,…, qn的有序集合,其矢量形式为 Q= [q0,ql,...,qn]T 。
其中,每个元素 qi (i=0,1,...,n)为集合的分量,称为状态变量。
给定每个分量的一组值就得到具体的状态,表示为 Qk= [q0k,
qlk,…, qnk]T 。运算符是使问题从一种状态变化为另一种状态
的手段,它可以是走步、过程、规则、数学算子、运算符号或
逻辑符号等。
2004.11.3 AI程序设计 148
第一部分:第 2章 知识表示方法
2.10 状态空间表示法
问题的状态空间则是一个表示该问题全部可能状态及其
关系的图, 它包含三种说明的集合, 即所有可能的问题初
始状态集合 S,操作符集合 F以及目标状态集合 G。 因此,
可把状态空间记为三元状态 (S,F,G)。
状态空间表示法就是依据状态图示法作为求解问题的主
要基础的, 它是一个通过搜索某个状态空间以求得运算符
序列的一个解答过程 。
2004.11.3 AI程序设计 149
第一部分:第 2章 知识表示方法
2.10 状态空间表示法
具体的求解过程如下,
( 1) 准备:描述初始状态, 确定操作符集合, 描述目标
状态特性 。
( 2) 求解:从初始状态出发, 每次加一个操作符产生新
的状态描述, 并递增地建立起操作符的相应实验序列, 直
至达到目标状态为止 。
( 3) 检验:对于求解过程中产生的新状态进行查看, 确
定其是否与目标状态描述相匹配 。 相对于最优化问题还要
寻求某一准则下的最优化路径 。
2004.11.3 AI程序设计 150
第一部分:第 2章 知识表示方法
2.10 状态空间表示法
状态空间表示法的特点:思路简单, 清晰明确, 操作简
便 。 但是由于它需要扩展节点, 当解决复杂问题时就容易
产生, 组合爆炸, 。 因此, 这种方法更适用于求解简单问
题 。
2004.11.3 AI程序设计 151
第一部分:第 2章 知识表示方法
2.11 问题归约表示法
问题归约法的基本思想是从目标出发进行逆向推理,
通过一系列变换把初始问题变换为子问题集合和子 — 子
问题集合,直至最后归约为一个平凡的本原问题集合。
这些本原问题的解可以直接得到,从而解决了初始问题。
2004.11.3 AI程序设计 152
第一部分:第 2章 知识表示方法
2.11 问题归约表示法
问题归约方法应用归约算符来把一个问题描述变换为一个归约或后继问题描
述的集合。变换所得所有后继问题的解就意味着父辈问题的一个解。所有问题
归约的目的是最终产生具有明显解答的本原问题。这些问题可能是能够由状态
空间搜索中走动一步来解决的问题,或者可能是别的具有已知解答的更复杂的
问题。本原问题除了对终止搜索过程起着明显的作用外,有时还被用来限制归
约过程中产生后继问题的替换集合;当一个或多个后继问题属于某个本原问题
的指定子集时,就出现这种限制。问题描述可以有各种数据结构形式,列表、
树、字符串、矢量,数组等等。采用问题归约表示可由下列 3部分组成:一个
初始问题描述;一套把问题变换为子问题的操作符;一套本原问题描述。
2004.11.3 AI程序设计 153
第一部分:第 2章 知识表示方法
2.11 问题归约表示法
与或图可以有效说明问题归约法的求解途径 。 通过与或图, 把某个单
一问题归约算符具体应用于某个问题描述, 依次产生出一个中间或节
点及其与节点后裔 (例外的情况是当子问题集合只含有单项时, 在这种
情况下, 只产生或节点 )。 与或图中每个节点都代表一个明显的问题或
问题集合, 其起始节点对应于初始问题描述, 终叶节点则对应于本原
问题的描述 。 一个问题求解过程就是由生成与或图的足够部分, 并证
明起始节点有解而得以完成的 。
2004.11.3 AI程序设计 154
第一部分:第 2章 知识表示方法
2.11 问题归约表示法
问题归约方法可以应用状态、算符和目标这些表示法来描述问题,
这并不意味着问题归约法和状态空间法是一样的。实际上,递增状态
空间搜索应用某个问题归约的普通形式,而且可以把问题归约法看作
比状态空间法更通用的问题求解方法。问题归约法能够比状态空间法
更有效地表示问题。状态空间法是问题归约法的一种特例。在问题归
约法的与或图中,包含有与节点和或节点,而在状态空间法中只含有
或节点。
2004.11.3 AI程序设计 155
第一部分:第 2章 知识表示方法
本章小结
● 知识表示是人工智能研究领域不可忽视的重要研究方向 。 本章介绍了知识
及其表示 。
● 在引入知识相关概念的基础上, 对现有的多种知识表示方法:一阶谓词逻
辑表示法, 产生式表示法, 语义网络表示法, 框架表示法, 脚本表示法,
过程表示法, Petri网表示法, 面向对象表示法, 状态空间表示法, 问题
归约表示法等进行了介绍 。 分别从它们的基本思想, 工作流程, 主要特点
及相互比较等方面一一进行了分析 。
● 人们在求解问题时总是希望寻求最为便捷, 高效的解决途径 。 而对于智能
系统而言, 知识表示的能力直接关系着系统的运行效率 。 因此选择适合,
高效的知识表示方法, 对于求解复杂的智能系统而言显得尤为重要 。 由于
各种知识表示方法各具特点, 各有优劣, 并有其适用领域, 因而在解决具
体问题时, 应当把握问题的要旨, 综合考虑, 选取适当的表示方法 。
2004.11.3 AI程序设计 156
第一部分:第 2章 知识表示方法
习 题
1,什么是数据, 信息和知识? 三者之间的关系是什么?
2,什么是知识表示? 目前有哪些常用的知识表示方法?
3,试用状态空间法表示推销员旅行问题 。
4,一阶谓词逻辑表示法具有哪些特点? 适用于哪些类型的知识?
5,试用问题归约法和谓词逻辑表示法分别表示梵塔问题的求解过程 。
6,什么是框架? 框架表示的一般形式是什么? 试写出一个, 学生框架, 的描述 。
7,什么是过程表示法? 它具有哪些特点? 试比较说明性表示方法与过程性表示法 。
8,设有 3个传教士和 3个野人准备过河 。 但是只有一条船, 该船每次只能负载两人 。
而在岸上的野人人数不得超过传教士的人数, 否则传教士就会被野人吃掉 。
试给出所有人都安全渡河的方案 。 并用适当的知识表示方法将其表示出来 。
2004.11.3 AI程序设计 157
第一部分:第 2章 知识表示方法
习 题
9,什么是产生式? 产生式与谓词蕴含式有何异同?
10,什么是产生式系统? 它由哪几部分组成? 试述产生式系统求解问题
的一般步骤 。
11,试用产生式表示法表示八数码问题的求解操作 。
12,什么是语义网络? 它与其它知识表示方法相比较有哪些特点?
13,试用语义网络表示下列命题,
(1) 鱼生活在水里 。
(2) 张强是一名计算机专业的大学三年级学生 。
(3) 一班与二班进行篮球比赛, 最后比分是 72:68。
2004.11.3 AI程序设计 158
第一部分:第 2章 知识表示方法
习 题
14,试述语义网络与 Prolog语言之间的对应关系 。 试用 Prolog语言表示
一种植物分类语义网络 。
15,请写出如下产生式规则集的 Petri网,
r1,IF d1 THEN d2 (CF=0.8)
r2,IF d1 AND d3 THEN d4 (CF=0.7)
r3,IF d2 AND d4 THEN d5 (CF=0.9)
16,如何用面向对象方法表示知识?
17,如何对知识表示方法进行评价? 如何合理选用知识表示方法?