第2章 知识表示
以符号和逻辑为基础的传统人工智能问题的求解是通过知识表示和知识推理来实现的。因此,如何从现实世界中获取知识,如何将已获取的知识以计算机内部代码的形式合理表示,以及如何运用这些知识进行推理以解决实际问题就成为人工智能学科需要解决的三大问题,而如何表示知识也就成为人工智能研究的一个重要议题。知识表示的主要任务是如何将已获取的有关知识以计算机内部代码形式加以合理的描述和存储,以便于有效地利用这些知识。虽然知识在人脑中的表示、存储和使用机理仍然是一个尚待揭开的迷,但以形式化的方式表示知识并供计算机自动处理,已经发展为较成熟的方法——知识表示方法。本章将对知识的有关概念及常用的知识表示方法进行讨论。
2.1 基本概念
2.1.1 知识的概念
知识是人类智能的基础。人类在长期生活、生产以及科学研究等社会实践活动中积累了对客观世界的认识和经验,把这些实践中获取的信息关联在一起,就得到了知识。因此,知识是大脑对现实世界认识的表达,它经过对信息的加工整理、解释、挑选和改造而成。然而,在人工智能中给出一个有关知识的清晰简洁的描述是很困难的,不同的人从不同的侧面有不同的理解。
通常知识可以从范围、目的和有效性三个方面来描述,其中知识的范围是由具体到一般,知识的目的是由说明性到指定性,知识的有效性是由确定到不确定。例如,“今天下雨”,这种知识是具体的、说明性的和不确定的;而“要证明A↔B,只需证明A→B且B→A”,这种知识是一般性的、指示性的和确定性的。
1. 知识的要素
知识的要素是指构成知识的必需元素。在这里,指的是一个人工智能系统所处理知识的组成成分。一般而言,人工智能系统的知识包含事实、规则、控制和元知识。
事实是指有关问题环境的一些事物的知识,包括事物的分类、属性、事物间关系、科学事实、客观事实等。它是静态的、可为人们共享的、可公开获得的公认的知识,也是知识库中最低层的知识。它常以“…是…”或“…有…”等形式出现,如“雪是白色的”、“苹果是甜的”、“人有四肢”等。
规则是指有关问题中与事物的行动、动作相联系的因果关系知识。这种知识是动态的,常以“如果…,那么…”等形式出现。例如,“如果下雨,那么出门带伞”。
控制是指当有多个动作同时被激活时,选择哪一个动作来执行的知识。它是有关问题的求解步骤、规划、求解策略等技巧性知识。
元知识是指怎样使用规则、解释规则、校验规则、解释程序结构等知识。它是有关知识的知识,是知识库中的高层知识。元知识与控制知识有时可以重叠。对于一个大的程序来说,以元知识或者元规则形式体现控制知识更为方便,这是因为元知识就存在于知识库中,而控制知识与程序结合在一起,则不易修改。
2. 知识的特性
结合后面要讨论的内容,对知识可以归纳出如下一些主要的特性。
(1)知识具有相对正确性。知识是人类对客观世界认识的结晶,并且经过长期实践的检验。因此,在一定的条件及环境下,知识一般来说都是正确的,可信任的。“一定的条件及环境”是知识正确性的前提,是必不可少的。由于任何知识都是在一定条件和环境下产生的,因而也只有在这种条件及环境下才是正确的。这在日常生活及科学实验中可以找到很多例子,如“1+1=2”是一条妇孺皆知的正确知识,但它只是在十进制数前提下才正确。再如在我国唐代,“以胖为美”是一条广为接受的正确知识,但在我国现代,它就不正确了。
(2)知识具有不确定性。人类对客观世界的认识是逐步提高的,只有在积累了大量的感性认识后才能升华到理性认识的高度,形成某种知识,因此知识有一个逐步完善的过程。在此过程中,或者由于客观事物表露得不够充分,致使人类对它的认识不够完全;或者对充分表露的事物一时抓不住本质,致使对它的认识不准确。由此造成在认识上的不完全、不准确必将导致相应的知识存在不确定性。另外,世界上的事物并不都是“不为真就一定为假的”。在某些情况下,它可能既不完全为真,也不完全为假,而处于真与假之间的某个状态上。事物的这种属性反映到知识上,就使得知识具有不确定性。
(3)知识具有可表示性。知识是可以用形式化的东西表示的,如可以用语言、文字、数字、符号、公式、图表、图形、图像等多种形式来表示知识,而这些表示形式是人类所能接受、理解和处理的形式。正因为这一特性,知识才能数据化,并能用计算机将其存储、传播和利用。
(4)知识具有可利用性。人类每时每刻都在利用所掌握的知识来解决现实世界中的各种问题,如果知识不具有可利用性,人类就不能积累知识。
3. 知识的分类
世界上的知识有很多种,从不同的角度进行划分,可以得到不同的知识类型。这里仅介绍常见的几种划分。
(1)知识按其应用范围可分为常识性知识和领域性知识。常识性知识是指通用性知识,它是人们都知道的知识,适用于所有领域;领域性知识是指面向某个具体领域的知识,是专业性知识,只有相应专业人员才能掌握并且用来求解有关问题。例如,“夏天热,冬天冷”、“太阳从东方升起”就是常识性知识;而“水由H2 O分子构成,H2 O分子由2个H原子和1个O原子组成”就是化学方面的领域知识。专家系统也主要是以领域性知识为基础构建的。
(2)知识按其确定性可分为确定性知识和不确定性知识。确定性知识是可以给出其真值为“真”或“假”的知识;而不确定性知识是泛指不完全、不精确及模糊性知识。
(3)知识按其结构及表现形式分为逻辑性知识和形象性知识。逻辑性知识是反映人类逻辑思维过程的知识,如人类的经验性知识等。这种知识一般都具有因果关系及精确描述的特点,通常是专家的经验以及对一些事物的直观感觉。本书后面将讨论的一阶谓词逻辑、产生式等就是这种知识。人类除了逻辑思维方式外,还有形象思维方式。通过形象思维获得的知识称为形象性知识。例如,我们问“什么是自行车?”,用文字来回答这个问题是很困难的,但若指着一辆自行车说这就是自行车,就容易在人类大脑中建立起“自行车”的概念。
(4)知识按其形式可分为显性知识和隐性知识。显性知识是指可用语言、文字、符号、图形、声音及其他的人能直接识别和处理的形式,明确地在其载体上表示出来的知识。例如,书本中的知识就是显性表示的知识。隐性知识则是指不能用上述形式表达的知识,如游泳、开车、表演等操作中的一些知识。
(5)知识按其作用可分为事实性知识、过程性知识和控制性知识。事实性知识用于描述问题或事物的概念、属性、状态、环境及条件等的知识,它主要反映事物的静态特征,一般采用直接表达形式,如“猴子都有尾巴”、“北京有一千万人口”等。过程性知识是用来描述问题求解过程所需要的操作、演算或行为等规律性的知识,它用于说明那些事实性知识成立时该怎么办,一般由与所求解问题有关的规则、定律、定理及经验来构成。控制性知识是关于如何运用已有知识进行问题求解的知识,因此也称为关于知识的知识。
2.1.2 知识的表示方法
人工智能研究的目的是要建立一个模拟人类智能行为的系统,为达到这个目的,除了告诉计算机如何像人一样地利用知识(对知识进行推理)以外,一个更为基础和先行的工作是如何使计算机具有知识(对知识进行表示),即在计算机上如何表达人类的知识。
所谓知识表示,就是知识符号化和形式化的过程,是研究用机器表示知识的可行性、有效性的一般方法。它是一种数据结构与控制结构的统一体,既考虑知识的存储又考虑知识的使用。知识表示可看成是描述一组事物的约定,它研究如何用最合适的数据结构来组织和表示人类知识,这与问题性质和求解方法密切相关。
知识表示方法是研究各种数据结构的设计,通过这种数据结构把问题领域的各种知识结合到计算机系统的程序设计的过程。一般来说,同一种知识可采用不同的表示方法,反过来,一种知识表示方法可表达多种不同的知识。在求解某一问题时,不同的表示方法会产生完全不同的效果。迄今为止,人们仍未找到一种通用、完善的知识表示模式。
由于知识表示的优劣对问题求解的结果和工作量影响很大,因此在选择知识表示方法时要充分考虑以下几个方面。
(1)充分表示领域知识。确定一个知识表示方法时,首先应该考虑它能否充分表示领域知识。为此要深入地了解领域知识的特点以及每一种表示方法的特征,以便做到“对症下药”。例如,在医疗诊断领域中,其知识一般具有经验性、因果性,适合采用产生式表示方法。可见,知识表示方法的选择和确定往往受到领域知识自然结构的制约,需要视具体情况而定。
(2)有利于对知识的利用。知识表示的目的就是为了利用这些知识进行推理,以便求解现实问题。所谓推理是指根据问题的已知事实,利用存储在计算机中的知识推出新的事实或者执行某个操作过程。知识推理与知识表示密切相关,如果一种表示方法的数据结构过于复杂或者难以理解及实现,则必然会影响到系统的推理效率,从而降低系统求解问题的能力。
(3)便于知识库的维护与管理。在一个人工智能系统初步建成后,经过对一定数量实例的运行,可能会发现其知识在质量或性能方面存在某些问题,此时或者需要增补一些新知识,或者需要修改甚至删除某些已有的知识。在进行这些工作时,又需要进行多方面的检测,以保证知识的一致性、完整性等。在确定知识表示方法及组织方式时,应充分考虑维护与管理的方便性。
(4)便于理解和实现。一种知识表示方法应该使人们容易理解,这就要求它符合人们的思维习惯。至于实现,就更加重要。因为如果一种表示方法不便于在计算机上实现,那它就只能是纸上谈兵,没有任何实用价值。
目前,较常用的知识表示方法有状态空间表示法、与/或图表示法、一阶谓词逻辑表示法、产生式表示法、语义网络表示法、框架表示法、脚本表示法、面向对象表示法、过程表示法和基于Perti网的表示法等。
2.2 状态空间表示法
状态空间表示法是人工智能中最基本的形式化方法,是其他形式化方法和问题求解的基础。它是用“状态”和“操作算子”来表示问题的一种方法。其中,“状态”用以描述问题求解过程中不同时刻的状况;“操作算子”表示对状态的操作,操作算子的每一次使用就使问题由一种状态变换为另一种状态。当到达目标状态时,由初始状态到目标状态所用的操作算子的序列就是问题的解。
1. 状态及状态空间
(1)状态
状态是描述问题求解过程中任一时刻状况的数据结构,一般用一组变量的有序组合来表示:
S=(s0,s1,…,sn)
其中,元素si(i=0,1,…,n)为集合S的分量,称为状态变量。当给每个分量以确定值时,就得到一个具体的状态。
(2)操作算子
操作算子也称为运算符,它引起状态中的某些分量发生变化,从而使问题由一个具体状态改变到另一个具体状态。操作算子可以是一个机械的步骤、过程和规则等,它指出了状态之间的关系。
(3)状态空间
由表示一个问题的全部状态及一切可用操作算子构成的集合称为该问题的状态空间。问题的状态空间可以用三元组来表示:(S,F,G),其中,S为问题的所有初始状态构成的集合;F为操作算子的集合;G为目标状态的集合。
2. 状态空间图
利用状态空间表示问题的全部可能的状态及其相互关系,可以用一个赋值有向图来表示,这种状态空间的图示形式称为状态空间图。状态空间图中,节点表示状态,节点间的有向边表示状态变迁,边上的标签则指示导致状态变迁的操作算子。下面通过两个例子来说明如何用状态空间图表示问题。
例2-1 二阶梵塔问题。
假设有三根柱子,在1号柱子上穿有A、B两片空心圆盘,A的直径小于B的直径,且位于B的上面。要求把这两片空心圆盘全部移到另一根柱子上,规定每次只能移动一片,而且任何时刻都不能使B位于A的上面。
解 设用SK=(SK0,SK1)表示问题的状态。其中,SK0表示A所在的柱子号;SK1表示B所在的柱子号,全部可能状态有如下9种:
如图2-1所示。
图2-1 二阶梵塔的状态
问题的初始状态集合为S={S0},目标状态集合为G={S4,S8}。操作算子分别为A(i,j)和B(i,j)。A(i,j)表示把A从第i号柱子移到第j号柱子上;B(i,j)表示把B从第i号柱子移到第j号柱子上。可知共有如下12个操作算子:
A(1,2),A(1,3),A(2,1),A(2,3),A(3,1),A(3,2) B(1,2),B(1,3),B(2,1),B(2,3),B(3,1),B(3,2)
根据上述9种可能状态及12 种操作算子,可构成二阶梵塔问题的一个状态空间图,如图2-2所示。
图2-2 二阶梵塔的状态空间图
例2-2 传教士和野人问题。
假设3个传教士带领3个野人划船渡河,其约束条件是船每一次最多只能运载2个人,同时在任何时候野人的数目一定不能比传教士多。
解 设用A和B表示河的两岸,初始状态下传教士、野人和船都在A岸,目标状态下这三者都到达B岸。用m表示传教士在A岸的数目,用c表示野人在A岸的数目,那么问题的状态可以表示为三元组(m,c,a)。其中a=1,表示船在A岸;a=0,表示船在B岸。根据这个约束条件,在A岸、B岸和船上,野人的数目都不能比传教士多,除非只有野人的情况。
问题求解任务可描述为:
(3,3,1)→(0,0,0)
在这个简单问题中,状态空间可能的状态总数为:4 ×4 ×2 = 32,但由于要遵守问题约束只有20个状态是合法的。下面是几个不合法状态的例子:
(1,0,1)表示A岸只有1个传教士,0个野人,相应的B岸有2个传教士,3个野人,且船在A岸。这个状态中,B岸的情况违反了问题的约束条件,即在任何时候野人的数量一定不能比传教士多。
(1,2,1)表示A岸只有1个传教士,2个野人,相应的B岸有2个传教士,1个野人,且船在A岸。这个状态中,A岸的情况违反了问题的约束条件。
(2,3,1)表示A岸只有2个传教士,3个野人,相应的B岸有1个传教士,0个野人,且船在A岸。同样,A岸的情况违反了问题的约束条件。
鉴于存在不合法状态,还会导致某些合法状态不可达,如以下几个状态:
(0,0,1)表示A岸没有传教士和没有野人,船在A岸。因为如果有人驾船到达A岸,则A岸必然有传教士或野人。
(0,3,0)表示A岸全是野人,即B岸必然全是传教士,且船在B岸。那么到达这个状态之前A岸必然有1个或2个传教士,而这不满足约束条件。因此不可能出现这个状态。
因此,这个问题总共只有16个可达的合法状态。渡河问题中的操作算子可以定义2类:L(m,c)和R(m,c),分别指示从A岸到B岸的划船操作和从B岸返回A岸的划船操作。因为问题的约束条件,m和c取值的可能组合只有5个:1与0、2与0、1与1、0与1和0与2,故总共有10个操作算子。
渡河问题的状态空间图如图2-3所示,其中实心点表示船在河A岸,空心点表示船在河B岸。由于划船操作可逆,在图2-3 中采用了简化的表示方法,如用一个双向边“1,0”表示L(1,0)和R(1,0)。
图2-3 渡河问题的状态空间图
由上述两例可以看出:
(1)用状态空间表示问题时,必须先定义状态的描述形式,通过这种描述形式把问题的一切状态都表示出来。问题求解的过程就是一个不断把操作算子作用于状态的过程。操作算子的一次使用,就使问题状态转变为另一种状态。每个操作算子的执行均可使问题求解更接近于目标状态。状态变迁过程中的状态序列或相应的操作算子调用序列称为从初始状态到目标状态的解答路径。
(2)状态空间的解答路径有多条。对任何一个状态可以有多个可供选择的操作算子,这种操作算子的选择在逻辑上称为“或”关系。这样由一个状态所生成的后继状态就可能有多个,必然导致多个待搜索的解答路径,只要其中有一条路径通往目标状态,就能获得成功解答。
(3)一个复杂问题的状态空间一般都是十分庞大的。状态空间表示法比较适合表示像渡河这样的简单问题。对于64阶梵塔问题有364 =0.94 × 1030个不同状态。若把它们都存储到计算机中去,需要占用巨大的存储空间,这是难以实现的。
通常,问题的全部状态都存储到计算机中也是不必要的,因为对于一个具体问题来说,与解题有关的状态空间往往只是整个状态空间的一部分,因此只要能生成并存储这部分状态空间就可求得问题的解。如果在搜索解答路径的过程中只画出搜索时直接涉及的节点和边,就构成所谓的搜索图。由搜索图中的所有节点及反向指针所构成的集合是一个树,则称为搜索树。树中没有父节点的节点称为根节点,没有子节点的节点称为叶节点,具有相同父节点的子节点间称为兄弟节点。
2.3 与/或图表示法
与/或图也是问题求解的一种抽象表示。与状态空间图不同的是,与/或图是一种超图,常用于表示比较复杂的问题求解。它基于问题归约的思想,利用树状结构来表示复杂问题,使复杂问题简单化。
2.3.1 问题归约
问题归约的基本思想就是把复杂的问题转化为若干个需要同时处理的较为简单的子问题,而每个子问题又可以依次更精细地分解成多个更低一级的子子问题后再加以分别求解。只有当这些子子问题全部解决时,问题才算解决,问题的解答就由子子问题的解答联合构成。问题归约可以递归地进行,直到把问题变换为本原问题的集合。所谓本原问题就是不可或不需再通过分解或变换的“原子”问题,即可以直接解答的子问题。在实际问题的求解过程中,有可能需要同时采用分解和变换的方法,无论分解还是变换,都要将原问题化为一组本原问题。下面以符号积分问题加以说明。
例2-3 符号积分问题。
符号积分问题是求不定积分原函数的问题,通过应用各种代数和三角变换,以及不定积分的性质(如函数和积分、分部积分等),可以把复杂的积分问题逐步归约为若干个本原积分问题(可利用积分表直接求出原函数)。
该积分问题首先分解为两个独立的子问题,然后分别变换这两个积分子问题,并分解变换结果为若干本原积分问题,分别求解这些本原问题后再联合成最终解答。
2.3.2 与/或图的表示
当把一个复杂问题归约为一组本原问题时,其归约过程可用一个与/或图来表示。通常,
1. 与树
把一个复杂问题分解为与之等价的若干个较简单的子问题时,可用一个“与树”来表示这种分解。若所有子问题可求解,则可得到原问题的解。这些子问题间的关系也就是“与”关系,得到问题分解的树图,称为与树。这些子问题还可以进一步分解。若原问题P可以分解为三个子问题P1、P2、P3,如对原问题的求解相当于对这三个子问题的同时求解,则原问题和这三个子问题之间的关系可用如图2-4所示的与树来表示。在这个与树中,用相应的节点表示P、P1、P2、P3,并用三条有向边分别将P和P1、P2、P3 连接起来,它表示P1、P2、P3 是P的三个子问题。连接三条有向边的小弧线表示P1、P2、P3 之间是“与”的关系,它们是对节点P的分解,P为“与”节点。
图2-4 与树
2. 或树
把一个复杂的问题变换为与之等价的若干个较简单的新问题时,可用一个“或树”来表示这种变换。若其中一个新问题可求解,则可得到原问题的解。这些新问题间的关系也就是“或”关系,得到问题求解的树图,称为或树。这些较容易的问题还可以进一步变换。若原问题P可以变换为三个较容易的新问题P1、P2、P3 中的任何一个,如P与这三个新问题中的任何一个等价,则P与它们之间的关系可用如图2-5所示的或树来表示。在这个或树中,用相应的节点表示P、P1、P2、P3,并用三条有向边分别将P和P1、P2、P3 连接起来,它表示P1、P2、P3 是与P等价的三个新问题。三条有向边不用小弧线连接,以表示P1、P2、P3 之间是“或”的关系,它们与节点P是等价的,P为“或”节点。
图2-5 或树
3. 与/或图
在解决大多数问题时,对原问题的分解与变换是相结合的。如果一个问题既需要通过分解,又需要通过变换才能得到其本原问题,则其求解过程可用如图2-6所示的与/或图来表示。
图2-6 与/或图
与/或图可以视为对状态空间图的扩展,或者把状态空间图视为与/或图的特例,即状态空间图不允许节点间具有“与”关系。与状态空间图类似,与/或图也有根节点,用于指示初始状态,对应着待求解的原始问题。在典型的与/或图中,解答路径往往不复存在,因为与/或图中的路径一般不同状态空间图中那样的线形路径,而是图(一般称为解图)或树(一般称为解树)形路径。求解与/或图问题就是在与/或图中搜索解图或解树的问题。
下面以三阶梵塔问题说明与/或图的表示方法。
例2-4 三阶梵塔问题。
有编号为1、2、3的三个柱子和标识为A、B、C的小、中、大三个空心圆盘,如图2-7所示。初始状态下三个盘子按A、B、C顺序堆放在1号柱子上,目标状态下三个圆盘以同样次序顺序堆放在3号柱子上。盘子的搬移须遵守以下规则:每次只能搬一个盘子,且较大的盘子不能压放在较小的盘子之上。
图2-7 三阶梵塔问题
解 以三元素列表作为数据结构描述问题状态,三个元素依次指示盘子A、B、C所在的柱子编号。则梵塔问题可描述为(1,1,1)→(3,3,3),可以把该问题分解为三个子问题:
(1,1,1)→(2,2,1),先把A、B盘搬到柱子2;
(2,2,1)→(2,2,3),再把C盘搬到柱子3;
(2,2,3)→(3,3,3),最后把A、B盘搬到柱子3。
第1个子问题(1,1,1)→(2,2,1)又可以进一步分解为如下三个子子问题:(1,1,1)→(3, 1,1),(3,1,1)→(3,2,1),(3,2,1)→(2,2,1),即依次搬A盘到柱子3,B盘到柱子2,A盘到柱子2;
第3个子问题(2,2,3)→(3,3,3)又可进一步分解为如下三个子子问题:(2,2,3)→(1,2, 3),(1,2,3)→(1,3,3),(1,3,3)→(3,3,3),即依次搬A盘到柱子1、B盘到柱子3、A盘到柱子3。现在所有子子问题均为本原问题,只要依次解决就可到达目标状态,如图2-8所示。
图2-8 三阶梵塔问题归约得到与/或图
梵塔问题的子问题间和子子问题间有交互作用,必须注意正确的排序。
若把这些本原问题的解按从左到右排序,就得到原始问题的解:(1,1,1)→(3,1,1),(3,1,1)→(3,2,1),(3,2, 1)→(2,2,1),(2,2,1)→(2,2,3),(2,2,3)→(1,2,3), (1,2,3)→(1,3,3),(1,3,3)→(3,3,3)。它指出了移动盘子的顺序。
下面讨论与/或图的一般情况(与/或树是其特例)。
图2-9给出了一个抽象的与/或图简例。这个图也称为超图,其节点间是用超弧线(或连接符)来连接的。下面基于该例引入和解释与/或图的基本概念。
图2-9 与/或图简例
(1)k-连接。用于表示从父节点到子节点间的连接,也
称为父节点的外向连接,并以圆弧指示同父子节点间的“与”关系,k为这些子节点的个数。一个父节点可以有多个外向的k-连接。例如,根节点x0 就有2个k-连接,其中,一个是1-连接指向子节点x1,另一个是2-连接指向子节点x4 和x5。k大于1的连接也称为超连接,k等于1时超连接蜕化为普通连接,而当所有超连接的k都等于1时,与/或图蜕化为状态空间图。
(2)无父节点的节点称为根节点,用于指示问题的初始状态;无子节点的节点称为叶节点。由于问题归约伴随着问题分解,所以目标状态不再由单一节点表示,而应由一组节点联合表示。能用于联合表示目标状态的节点,即本原问题对应的节点称为终止节点;终止节点必定是叶节点,反之不然;非终止节点的叶节点往往指示了解答搜索的失败。
(3)解图的生成。在与/或图搜索过程中,可以这样建立解图:自根节点开始选一外向连接,并从该连接指向的每个子节点出发,再选一外向连接,如此反复进行,直到所有外向连接都指向终止节点为止。例如,从图2-9的与/或图根节点x0 开始,选左边的k等于1的外向连接,指向节点x1;从x1 选左边的k等于1的外向连接,指向x3,…;依次进行,直到终止节点x7和x8。如此,生成如图2-10(a)所示的解图。
图2-10 三个可能的解图
解图是遵从问题归约策略而搜索到的,因此解图中节点或节点组之间不存在“或”关系;换言之,解图纯粹是一种“与”图。另外,正因为与/或图中存在“或”关系,所以往往会搜索到多个解图。本例中就有3个解图。
为确保在与/或图中搜索解图的有效性,要求解图是无环的,即任何节点的外向连接均不得指向自己或自己的先辈,否则会使搜索陷入死循环。换言之,会导致解图有环的外向连接不能选用。
下面给出几个定义。
(1)解图
在与/或图是无环(即不存在这样的节点——其后继节点同时又是它的祖先)的假定下,解图可递归定义如下:与/或图(记为G)任一节点(记为x)到终节点集合的解图(记为G′)是G的子图。
① 若x是终止节点,则G′就由单一节点x构成;
②若x有一外向k-连接指向子节点x1,x2,…,xk,且这些子节点每个都有到终止节点集合的解图,则G′由该k-连接和所有这些相应于子节点的解图构成;
③ 否则不存在x到终止节点集合的解图。
(2)解图代价
以C(x)指示节点x到终节点集合解图的代价,并令k-连接的代价为K,则有:
① 若x是终止节点,则C(x)=0;
②若x有一外向k-连接指向子节点x1,x2,…,xk,且这些子节点每个都有到终止节点集合的解图,则
C(x)= K+C(x1)+C(x2)+…+C(xk)
(3)能解节点
① 终止节点是能解节点;
② 若节点x有一外向k-连接指向子节点x1,x2,…,xk,且这些子节点都是能解节点,则x是能解节点。
(4)不能解节点
① 非终止节点的叶节点是不能解节点;
② 若节点x的每一个外向k-连接都至少指向一个不能解节点,则x是不能解节点。
2.4 一阶谓词逻辑表示法
逻辑表示法是一种基于数理逻辑的知识表示方法,是最早应用于人工智能表示知识的一种逻辑。人工智能中用到的逻辑可分为两类:一类是命题逻辑和一阶谓词逻辑;另一类是除前者所代表的经典逻辑以外的那些逻辑。
谓词逻辑是在命题逻辑的基础上发展起来的,而命题逻辑可看做是谓词逻辑的一种特殊的形式。谓词逻辑是一种形式语言,也是目前为止能够表达人类思维活动规律的一种最精确的语言,它与人们的自然语言比较接近,又能方便地存储到计算机中并被计算机精确处理。
2.4.1 命题逻辑
1. 命题逻辑的基本概念
1)命题
定义2-1 能够分辨真假的陈述句称为命题。
例如,下列一些句子:
① 天在下雨;
② 他在哭;
③ 刘颖是一个学生;
④4是偶数;
⑤ 煤是白色的。
这些句子在特定情况下都具有“真”或“假”的含义,在逻辑上就可以称为命题。
没有“真”或“假”意义的疑问句、感叹句等都不是命题。
例如:① 你好吗?② x>3,③ 我正在说谎。这三个句子均不是命题。第一个句子不是陈述句,因此不是命题;第二个句子是陈述句,但真假取决于x的取值,因此不是命题。第三个句子也是陈述句,但它是个悖论,因此也不是命题。
通常命题用大写字母A、B等表示,命题的真假用T和F表示。
定义2-2 一个语句如果不能进一步分解成更简单的语句,并且又是一个命题,则称此命题为原子命题。
2)连接词
在命题逻辑中,原子命题可以通过连接词构成复合命题。在命题逻辑系统中定义了5种连接词。
「:否定。复合命题 「A表示否定A的真值的命题。
∧:合取。复合命题A∧B表示A和B的合取,两个命题具有“与”关系。
∨:析取。复合命题A∨B表示A和B的析取,两个命题具有“或”关系。
→:条件或蕴含。复合命题A→B表示命题A是命题B的条件,或A蕴含B,即“如果A,那么B”。
↔:双条件。复合命题A↔B表示命题A和命题B互为条件,即“A当且仅当B”。
可以看出,复合命题实际上提供了简单推理的表示方法。通过连接词产生的复合命题的真值表如表2-1所示。
表2-1 真值表
3)命题公式
为了研究命题推理,命题逻辑中用符号A、B等表示不具有固定具体含义的命题,称为“命题变量”。复合命题可利用命题变量构成所谓的“合式公式”,即合法的表达式。
定义2-3 命题逻辑的合式公式定义如下:
① 原子命题A是合式公式;
② 若A是合式公式,那么 「A也是合式公式;
③ 若A和B都是合式公式,则A∧B、A∨B、A→B和A↔B也都是合式公式;
④ 只有按上述规则①至③求得的公式,才是合式公式。
命题逻辑中的合式公式也称命题公式。定义了命题逻辑中合式公式的概念后,就可以讨论命题逻辑中如何推理了。
2. 命题逻辑的推理
在命题逻辑中,为了描述推理,应首先给出相应的推理规则和“蕴含式”、“等价式”等概念。
如果合式公式A→B 恒为真,则称A⇒B 为一个蕴含式,表示“A 永真蕴含B”,如A∧B
⇒A。
如果合式公式A↔B恒为真,则称A⇔B为一个等价式,表示“A等价于B”,如A⇔ 「 「A。
当A→B恒为真,则称由A得B的推理正确,也称B是A的逻辑结论。可以通过真值表法或等值演算法等证明逻辑结论。
推理规则是用一些命题逻辑的合式公式A1,A2,…,An推导出另外一些命题逻辑的合式公式B1,B2,…,Bn的方法。
证明中常用的推理规则:
P规则(即前提引入规则):在推导任何步骤上,都可以引入前提。
T规则(即结论引入规则):在推导过程中,如果前面有一个或多个命题永真蕴含命题S,就可以把命题S引进推导过程中。
CP规则(即置换规则):如果能从一组前提集合和R中推导出S来,那么就能够从这组前提集合中推导出R→S来,其中R为任意引入命题。
推理过程中也要用到一些定律,如表2-2所示。
表2-2 命题逻辑常用的定律
通过下面例子说明如何利用规则构造证明。
例2-5 写出对应下面推理的证明。
如果今天下雨,则要带伞或带雨衣;如果走路上班,则不带雨衣。故根据今天下雨,走路上班,所以带伞。
解 A:今天下雨 B:带伞 C:带雨衣 D:走路上班
前提 A→(B∨C) D→ 「C,A,D
结论 B
证明 ① A→(B∨C)
②A
③ B∨C
④ D→ 「C
⑤D
⑥ 「C
P规则
P规则
①,②假言推理
P规则
P规则
④,⑤假言推理
⑦B
③,⑥析取三段论
2.4.2 一阶谓词逻辑
谓词逻辑是命题逻辑的扩充和发展,它适合表示事物的状态、属性、概念等事实性的知识,也可以方便地表示事物间的因果关系,即规则。
1. 谓词逻辑的基本概念
1)谓词和个体
设a1,a2,…,an表示个体对象,A表示它们的属性、状态或关系,则A(a1,a2,…,an)在谓词逻辑中表示一个原子命题。例如,素数(2),就表示命题“2是个素数”。
一般地,谓词和个体的关系可用P(x1,x2,…,xn)进行表示。其中,P是谓词符号,也称谓词,代表一个确定的特征或关系;x1,x2,…,xn称为谓词的参量或者项,一般表示个体。在谓词中,个体可以是常量、变量或函数。
为了表达个体间的对应关系,引入数学中函数的概念和记法。例如,“x是y的老师”可以用谓词teacher(x,y);“x的父亲”可用father(x)表示,其中x,y是变量;“小李的父亲是医生”可用doctor(father(Li))表示,其中father(Li)是函数。
把个体称作个体变量,个体变量变化范围称为个体域,包揽一切事物的集合称为全总个体域。谓词中包含个体的数目称为谓词的元数。
在谓词P(x1,x2,…,xn)中,如果xi(i=1,2,…,n)都是个体常量、变量或函数,则称它为一阶谓词。如果xi(i=1,2,…,n)本身又是一个一阶谓词,则称它为二阶谓词。这里仅讨论一阶谓词。
2)量词
在谓词逻辑中为刻画谓词与个体间的关系,还引入了以下两个量词。全称量词∀是以符号∀xP(x)来表示对于某个论域中的所有(任意一个)个体x,都有P(x)真值为T。
存在量词∃是以符号∃xP(x)来表示某个论域中至少存在一个个体x,使P(x)真值为T。
例如,“班上同学都很用功”可以表示为∀xG(x);“班上有些同学用功”可以表示为
∃xG(x)。
3)谓词公式
下面首先介绍本章中将要用到的一些定义。
定义2-4 项的定义如下:
① 个体常量和个体变量都是项。
② 设f是n元函数符号,若t1,t2,…,tn是项,则f(t1,t2,…,tn)是项。
定义2-5 设P为n元谓词符号,t1,t2,…,tn 为项,则P(t1,t2,…,tn)称为原子谓词公式,简称原子公式。
定义2-6 谓词逻辑中的合式公式定义如下:
① 原子谓词公式是合式公式;
② 若A是合式公式,那么 「A也是合式公式;
③ 若A和B都是合式公式,则A∧B、A∨B、A→B和A↔B也都是合式公式;
④ 若A是合式公式,x是任一个体变量,则∀xA和∃xA也都是合式公式;
⑤ 只有按上述规则①至④求得的公式,才是合式公式。
谓词逻辑中的合式公式也称为谓词公式。命题公式可以看成是谓词公式的特例,所以全体命题公式也都是谓词公式。
5)辖域和约束变量
紧接于量词之后被量词作用的谓词公式称为该量词的辖域。例如:
① ∀xA(x),其中,A(x)是∀x的辖域;
② ∀x(P(x)→Q(x,y)),P(x)→Q(x,y)为∀x的辖域;
③ ∃xH(x)∧G(x),H(x)为∃x的辖域,G(x)不是∃x的辖域。
量词后的变量,如∀x、∃y中的x、y称为量词的指导变量,而一个量词的辖域中与该量词的指导变量相同的变量称为约束变量,其他变量(如果有的话)称为自由变量。例如,②中的x为约束变量,y为自由变量;③中的H(x)中的x为约束变量;而G(x)中的x为自由变量。
如果一个变量在一个公式中既可约束形式出现,又可自由形式出现,则为了避免混淆,通常通过改名规则,使得一个公式中一个变量仅以一种形式出现。
约束变量的改名规则如下:
① 对需要改名的变量,应同时更改该变量在量词及辖域中的所有出现。
② 新变量符号必须是量词辖域内原先没有的,最好是公式中也未出现过的。
例如,∃xH(x)∧G(x)可改为∃xH(x)∧G(y)或∃yH(y)∧G(x)。
在谓词前加量词,称为一个谓词中相应的个体变量被量化。如果一个谓词中所有个体变量都被量化,则这个谓词就变为一个命题。例如设P(x)表示“x是素数”,∀xP(x)和∃xP(x)就都是命题。这样就有两个从谓词得到命题的两种方法:一个是给谓词中个体变量代入个体常量,另一个是把谓词中的个体变量全部量化。
6)合取范式和析取范式
定义2-7 设A为如下形式的谓词公式:
B1∧B2∧…∧Bn
其中,Bi(i=1,2,…,n)形如L1∨L2∨…∨Lm,Lj(j=1,2,…,m)为原子公式或其否定,则称A为合取范式。
定义2-8 设A为如下形式的谓词公式:
B1∨B2∨…∨Bn
其中,Bi(i=1,2,…,n)形如L1∧L2∧…∧Lm,Lj(j=1,2,…,m)为原子公式或其否定,则称A为析取范式。
应用逻辑等价式,任何谓词公式都可以化为与之等价的合取范式或析取范式,而且一个谓词公式的合取范式或析取范式一般也不唯一。
2. 谓词公式的解释
对谓词公式中各种变量制定特殊常量去替代,就构成一个谓词的解释,其定义如下。
定义2-9 设P为谓词公式,D为其个体域,若对于P中的个体常量、函数和谓词按如下规定赋值:
① 为每个个体常量指派D中的一个元素;
② 为每个n元函数指派一个从Dn 到D的映射,其中Dn ={(x1,x2,…,xn)| x1,x2,…, xn∈D};
③ 为每个n元谓词指派一个从Dn到{F,T}的映射;
则称这些指派为P在D上的一个解释。
有定义可知,在使用一个解释I,解释一个谓词公式A时,将A中的个体常量用I中特定常量代替,函数和谓词用I中特定函数和谓词代替。其中解释是一个集合的概念,此集合是在个体域的背景下讨论的,其中包括个体域的元素及在其上定义的函数和谓词组成。而解释谓词公式时,就是将解释中的相应变量、函数值等代入,观察其值。下面给出解释的例子。
例2-6 设个体域D={1,2},求公式A=∀x(P(x)→Q(f(x),b),在D上的某一个解释,并指出在此解释下公式A的真值。
解 首先设个体常量b及函数f(x)的真值指派值分别为
b=1, f(1)=2, f(2)=1
对于谓词指派的真值为
P(1)=F, P(2)=T, Q(1,1)=T, Q(2,1)=F
这里,由于已指派b=1,所以Q(1,1)与Q(1,2)不可能出现,故没有给它们指派真值。
上述的指派就是对于公式A的一个解释,在此解释下,由于当x=1时有
P(1)=F, Q(f(1),1)=Q(2,1)=F
所以P(1)→Q(f(1),1)的真值为T。
当x=2时有
P(2)=T, Q(f(2),1)=Q(1,1)=T
所以P(2)→Q(f(2),1)的真值为T。因为对于个体域{1,2}上所有x均有P(x)→Q(f(x),b)的真值为T,所以公式A在此解释下的真值为T。
一般情况下,谓词公式的真值都是针对某一解释而言的。同一公式可能在一种解释下其真值为T,而在另一种解释下其真值为F。
根据解释的性质,可以给出如下定义。
定义2-10 设P为谓词公式,D为其个体域,对于D中任一解释I:
① 若P恒为真,则P在D上永真或是D上的永真式。
② 若P恒为假,则P在D上永假(或不可满足或不相容)或是D上的永假式。
③ 若至少有一个解释,可使P为真,则称P在D上可满足或是D上的可满足式。
定义2-11 设P为谓词公式,对于任何个体域(或所有解释):
① 若P都为真,则称P为永真式。
② 若P都为假,则称P为永假式。
③ 若P都可满足,则称P为可满足式。
谓词公式的真值与个体域和解释有关,考虑到个体域的数目和个体域中元素数目无限的情形,要通过一个机械执行的方法,判断一个谓词公式的永真性一般是不可能的,因此一阶谓词逻辑是不可判定的。
2.4.3 一阶谓词逻辑表示方法
为了能够正确地进行谓词公式的推理,首先必须掌握谓词逻辑的基本等价公式和一些基本规则。在谓词逻辑的推理过程中除了运用与命题逻辑中相同的推理规则外,还要进行量词的消去和引入。除命题逻辑外,谓词逻辑中常用的基本等价式、蕴含式和基本规则见表2-3。
表2-3 谓词逻辑中基本的等价式、蕴含式和基本规则
一阶谓词逻辑是最直观的一种逻辑。下面通过两个示例说明如何用一阶谓词逻辑表示知识。
例2-7 设下列语句:
(1)高山比他父亲高。
(2)张强是计算机系的一名学生,但他不喜欢编程。
(3)人人爱劳动。
(4)所有整数不是奇数就是偶数。
解 为了用谓词公式表示这些语句,须先定义谓词。
Higher(x,y):x比y高。
Computer(x):x是计算机系的学生。
Like(x,y):x喜欢y。
Love(x,y):x爱y。
M(x):x是人。
I(x):x是整数。
O(x):x是奇数。
F(x):x是偶数。
这里涉及的个体有:高山(gaoshan),编程(progranmming),张强(zhangqiang),劳动(labour),以函数形式Father(gaoshan)表示高山的父亲。
此时可用谓词公式把上述4个句子表示为:
(1)Higher(gaosan,Father(gaoshan))
(2)Computer(zhangqiang)∧ 「Like(zhangqiang,progranmming)
(3)∀x(M(x)→Love(x,labour))
(4)∀x(I(x)→O(x)∨F(x))
例2-8 机器人搬积木问题的表示。
一个房间里,有一个机器人Robot,一个壁室Alcove,一个积木块Box,两个桌子A和B。
机器人可把积木块Box从一种状态变换成另一种状态。怎样用一阶谓词逻辑描述从初始状态(积本块在桌子A上)到目标状态(积本块在桌子B上)的机器人操作过程呢?
解 先定义谓词。
Table(x):x是桌子。
Emptyhanded(y):y手中是空的。
At(y,z):y在z旁。
Holds(y,w):y拿着w。
On(w,x):w在x上。
其中,x的个体域是(A,B);y的个体域是{Robot};z的个体域是{A,B,Alcove};w的个体域是{Box}。
问题的初始状态是
At(Robot,Alcove)∧Emptyhanded(Robot)∧On(Box,A)∧Table(A)∧Table(B)
问题的目标状态是
At(Robot,Alcove)∧Emptyhanded(Robot)∧On(Box,B)∧Table(A)∧Table(B)
问题表示出来后,如何求解呢?
机器人行动的目标是把问题的初始状态转化为问题目标状态机,其间它必须完成一系列的操作。操作一般可分为条件和动作两部分。用谓词公式表示时,条件可表示为合取式;动作可表示该操作执行后应从当前状态中删除什么公式以及增加什么公式,因为机器人每个操作的结果总是要引起状态的变化,可用对原状态的增添表和删除表来表示。机器人由初始状态把Box从A桌上移到B桌上,它应执行如下三个操作:
GOTO(x,y):从x处走到y处。
PICK-UP(x):在x处拿起Box。
SET-DOWN(x):在x处放下Box。
这三个操作可分别用条件与动作表示如下:
(1)GOTO(x,y)
条件:At(Robot,x)
删除表:At(Robot,x)
增添表:At(Robot,y)
(2)PICK-UP(x)
条件:On(Box,x)∧Table(x)∧At(Robot,x)∧Emptyhanded(Robot)
删除表:Emptyhanded(Robot)∧On(Box,x)
增添表:Holds(Robot,Box)
(3)SET-DOWN(x)
条件:At(Robot,x)∧Table(x)∧Holds(Robot,Box)
删除表:Holds(Robot,Box)
增添表:Emptyhanded(Robot)∧On(Box,x)
机器人在执行每一个动作之前,总要先检查当前状态是否可使所要求的条件得到满足。若能满足,就执行相应的操作,否则就检查下一个操作所要求的条件。所谓检查当前状态是否满足所要求的条件,其实就是一个定理证明过程,即证明当前状态是否蕴含操作所要求的条件,若蕴含就表示所要求的条件得到了满足。
有了上述概念,就可写出机器人行动规划问题的求解过程。对于先决条件成立与否的验证可使用第4章介绍的归结原理来完成,这里暂不讨论。
2.4.4 一阶谓词逻辑表示法的特点
一阶谓词逻辑是一种形式语言,它具有以下一些特点:
(1)自然性。一阶谓词逻辑是一种接近自然语言的形式语言,人们比较容易接受,用它们表示的知识比较容易理解。一阶谓词逻辑与数据库,特别是关系数据库有密切关系。在关系数据库中,逻辑代数表达式是谓词表达式之一。因此,如果采用一阶谓词逻辑作为系统的理论背景,则可将数据库系统扩展改造成知识库。
(2)精确性。一阶谓词逻辑是二值逻辑,其谓词公式的真值只有“真”与“假”两个,因此可以用它表示精确的知识,并保证经演绎推理所得结论正确。
(3)容易实现。用一阶谓词逻辑表示知识可以比较容易地转换为计算机的内部形式,其自然演绎及归结推理都容易在计算机上实现。
(4)效率低。用一阶谓词逻辑表示知识时,其推理是根据形式逻辑进行的,把推理与知识的语义分开,这就使得推理过程冗长,降低了系统的效率。
(5)灵活性差。一阶谓词逻辑表示法只能表示精确的知识,不能表示不精确的知识,而在人类的知识中大多数都是不精确及模糊的知识,这就使得谓词逻辑表示知识的范围受到限制。另外,一阶谓词逻辑不便于表示启发性知识及元知识。启发性知识是与问题特性有关的知识,将在第3章讨论。
一阶谓词逻辑主要适用于采用定理证明方法求解问题的系统中,如Green等人设计的自动问答系统(QA-3)和Fikes等人设计的机器人行动规划系统(STRIP),这两个系统将在第10章人工智能规划系统中详细介绍。此外人工智能语言Prolog也是以一阶谓词逻辑为基础的程序设计语言。
2.5 产生式表示法
产生式表示法又称规则表示法。“产生式”这一术语最早是由美国数学家波斯特(E-.Post)提出来的。他根据串替代规则提出一种称为波斯特机的计算模型,模型中的每一条规则称为一个产生式。后来这一术语几经修改扩充,被用到许多领域。例如用来描述形式语言的语法、表示人类心理活动信息加工的过程等。由于产生式系统求解问题的过程与人类求解问题时的思维很相像,因此它可以用来模拟人类求解问题的思维过程。产生式系统可以作为人工智能系统的基本结构单元或基本模型来看待,就好像是积木世界中的积木块一样,因此研究产生式系统的基本问题具有一般意义。
2.5.1 产生式的基本形式
产生式通常用于表示具有因果关系的知识,其基本形式是
或者
其中,P代表一组前提或状态;Q代表若干结论或动作。其含义是:如果前提P被满足,则可推出结论Q或执行Q所规定的动作。
产生式又称为规则或产生式规则,由于这些名称都是指相同的含义,今后将不加区分地使用。由产生式的形式,可以看出谓词逻辑中的蕴含式与产生式的基本形式相同,但蕴含式只是产生式的一种特殊情况。两者的差异在于,蕴含式只能表示确定的知识,而产生式不仅可以表示确定的知识,还可以表示不确定的知识。知识的不确定表示将在第4章不确定推理中详细介绍。
对于不确定的产生式,在产生式后面标出可信度值,形如
P→Q (可信度值)
IF P THEN Q (可信度值)
或
例如,MYCIN系统中有这样一条产生式:
If (1)The stain of organizm is gramnegative,
and (2)The morphology of the organizm is rop,
and (3)The aerobicity of the organizm is anaerbic
then There is suggestive evidence(0.6)that the identity of the organizm is bacteroides
它表示当列出的各个前提都满足时,结论有0.6的可信度。
自然界的各种知识单元之间存在大量因果关系,这些因果关系转化为前提与结论,用产生式表示非常方便。一般为便于产生式的使用,在知识库中某些产生式常按某种观点来组织放在一起,以提高查找效率。
产生式的前提部分又称“条件部分”或产生式“前件”、“左部”;其结论部分又称产生式的“后件”、“右部”。通常,条件部分是一些事实的合取,而结论部分是某一事实。
下面介绍事实的表示方法。
事实可看成是断言,即一个语言变量的值或是多个语言变量间关系的陈述句。语言变量的值或语言变量间的关系可以是一个词,不一定是数字。例如,雪是白色的,其中雪是语言变量,其值是白色的。
事实一般使用三个元组(对象,属性,值)或(关系,对象1,对象2)来表示,其中对象就是语言变量。若考虑不确定性,就增加一个可行信度值,成为一个四元组(对象,属性,值,可行度值)或(关系,对象1,对象2,可行度值)来表示。
这种事实表示的机器内部实现就是一个表。例如,事实“老李年龄是35 岁”,便写成(Li,Age,35);事实“老李年龄可能40 岁”,如果可能性是80 %,便可写成(Li,Age,40,0.8)。
2.5.2 产生式系统的组成
把一组产生式放在一起,让它们互相配合、协调作用,一个产生式生成的结论可供另一个产生式作为前提使用,以这种方式求得问题解决的系统,称为产生式系统。
产生式系统主要由三部分组成,其结构如图2-11所示。
图2-11 产生式系统结构
(1)规则库,由一组产生式组成的集合,即产生式系统的知识库。它的内容是否完整、一致,将直接影响到系统的功能和性能。规则库中的每一个产生式都有一个编号,系统运行时通过
编号标识每一个产生式。每个产生式分为左部和右部。一般说来,左部表示情形,即什么条件发生时,该产生式应该被调用。右部表示动作,即此产生式被调用后所做的事情。在核实左部情形时,通常采用匹配的方法,即查看数据库中当前事实中是否存在产生式左部
所指示的情形。若存在,则认为匹配成功,否则认为匹配不成功。匹配成功时,执行右部规定的动作。
(2)综合数据库,用于存放问题求解过程中的各种信息。例如问题的初始状态、推理时得到的中间结论及最终结论等。当规则库中某条产生式的前提可与综合数据库中某些事实匹配时,则该产生式就被激活,并把其结论放入综合数据库中。因此综合数据库的内容是不断变化的。
(3)推理机,又称规则的解释器,它是一组程序,负责产生式系统的运行。推理机主要执行以下几项工作:
① 按一定的策略从规则库中选择产生式与综合数据库中的已知事实进行匹配。所谓匹配就是把综合数据库中的事实与产生式的前提进行比较,如果二者一致,称为匹配成功,相应的产生式称为可用的;否则称为匹配不成功,相应的产生式称为不可用的。
② 匹配成功的产生式可能不止一个,此时称为发生冲突,推理机必须有相应的解决冲突的策略,以便从中选出一个执行。
③ 在执行某一个产生式时,如果产生式的右部是一个或多个结论,就把这些结论加入到综合数据库中;如果产生式的右部是一个或多个操作时,则执行操作。
④ 随时掌握结束产生式系统运行的时机,以便在适当时间停止其运行。
以上的每一步都有许多工作要做,特别是系统的推理方式和控制策略。
2.5.3 产生式系统的推理方式和控制策略
一个产生式系统的推理方式和控制策略体现在推理机的算法描述中。
1. 产生式系统的推理方式
产生式系统的推理方式有正向推理、反向推理和双向推理。
(1)正向推理
正向推理是从已知事实出发,通过规则库求得结论。或称为数据驱动方式,也称为自底向上推理方式。推理过程如下:
① 规则库中的产生式与数据库中的事实进行匹配,得到匹配的产生式集合;
② 从匹配的产生式集合中选择一条产生式使用;
③ 执行该产生式的后件,并将该产生式的后件输入数据库;
④ 重复进行,直到达到目标。
数据库中有A,规则库中有Rule1:A→B,那么Rule1 就是匹配的产生式,进而将后件B送入数据库中。
例如,事实中包含“有毛发”及“产乳”,则根据产生式有“有毛发又产乳→哺乳动物”,通过匹配该产生式得到“哺乳动物”,则将“哺乳动物”送入数据库中成为新的证据,作为新的前提,可以在随后的推理中使用。
这种推理方式可能得出许多冗余的产生式和与目标无关的事实,如果选择产生式的控制策略不当,求解效率会比较低。
(2)反向推理
反向推理是从目标出发,反向使用规则,求得已知事实。或称为目标驱动方式,也称自顶向下推理方式。推理过程如下:
① 用规则库中的产生式后件与目标事实进行匹配,得到匹配的产生式集合;
② 从匹配的产生式集合中选择一条产生式使用;
③ 把该产生式的前件作为下一个循环的目标事实;
④ 重复进行,直到达到目标。
这种推理方式如果目标明确,则推理的效率较高,常被使用。有关正、逆向推理策略的比较见表2-4。
表2-4 正、逆向推理的比较
(3)双向推理
双向推理既自顶向下又自底向上,直至达到某一个中间环节两个方向的结果相符,便成功结束推理。显然,这种推理方式的推理网络较小,效率也较高。
2. 产生式系统的控制策略
从产生式系统的控制机制可知,如何选用合适的产生式进行问题求解构成了控制策略的主要内容。这种选取产生式的策略,也称“冲突消解策略”。因为当产生式集合中的多个产生式都可触发执行时,由于只能取其中之一,这就产生了冲突或竞争。
常用的冲突消解策略有:优先级法(优先级高者优先)、可信度法(可信度高者优先)、代价法(代价低者优先)及自然顺序法等。当然在使用优先级法、可信度法、代价法等策略时,须事先为产生式设定相关的参数,即优先级、可信度、代价等。
可以看出,采用优先级、可信度、代价等冲突消解策略,就是一种启发式搜索;而采用自然顺序法,则就是一种盲目碰撞搜索。关于搜索详细策略见第3章。
另外,在简单情况下,可以通过设置修补产生式来实现对推理的修补,以便在推理失败的情况下激活这些产生式,对推理的中间结果(综合数据库的内容)做某些变换,进而使失败的推理能继续下去。例如,对于下面的英语句子做文法分析:
Have the students who missed the exam take it today.
句首单词“Have”可以作为助动词或主动词。若文法分析时先试探性地将其作为助动词,则名词短语“the student who missed the exam”被分析为主语。由于随后出现“take”而非“taken”,则推理失败。但只要把“have”改作为主动词,其后的名词短语改作为宾语,就可继续文法分析直到成功,不必回溯。这种推理修补可以通过设立相应的产生式来实现,该产生式依据现有的分析结果(置于综合数据库的部分解答),即“have”是助动词、“students”是宾语和“take”是动词原形,被激活而进行预定的修补操作。
2.5.4 产生式表示法的特点
1. 产生式表示法的优点
(1)相对固定的格式,形式单一。任何产生式均由左部和右部组成,左部匹配,右部动作。匹配提供的信息只有两种:成功或失败。匹配过程中不允许产生副作用。规则匹配失败时,对规则库无影响。匹配一般无递归,无复杂的计算。右部的动作一般是最基本的,无复杂的控制。这种统一的格式易于进行知识的一致性、完整性检测。
(2)模块性。产生式是规则库中最基本的知识单元,各产生式之间只能通过综合数据库发生联系,不能相互调用,增加了产生式的模块性,有利于对知识的增加、删除和修改。知识的模块化使得综合数据库的补充和修改变得非常容易。但要注意任何修改和扩充必须保持综合数据库的无矛盾性和一致性。这种一致性检验最好由系统自动执行,至少检验到一定程度。因为从理论上,在某些情形下彻底的一致性检验是不现实的。
(3)有效性。产生式表示法既可以表示确定性知识,又可以表示不确定性知识,既有利于表示启发性知识,又有利于表示过程性知识。
(4)自然性。产生式表示法与人类的判断性知识基本一致,直观、自然,便于推理。它既可以表示确定性知识,又可以表示不确定知识,更符合人们日常遇到的问题。
2. 产生式表示法的缺点
(1)求解效率低。在产生式系统中,各产生式之间的联系以数据库为媒介,求解过程是一种反复进行的“匹配-冲突消除-执行”的过程。即先用产生式的前提与已知事实匹配,再从规则库中选取可用的产生式(当存在多条产生式时,必须有合适的策略),去除产生式之间的冲突,最后执行相应的产生式。这样的执行效率较低。
(2)不能表示结构性的知识。产生式表示的知识有一定的格式,且产生式之间不能直接调用,因此那些具有结构关系或层次关系的知识不易用它表示出来。
产生式表示法在人工智能中应用广泛,在某些领域的应用十分有效。例如,对于由许多相对独立的知识单元组成,彼此间关系不密切、不存在结构关系的领域中的知识,如在化学反应领域有化学分子结构专家系统DENDRAL;对于多为经验性的,不具有确定、统一理论的领域中的知识,如在医疗诊断领域有诊治感染性疾病的专家系统MYCIN,它们的求解过程都可以被表示为一系列相对独立的操作,一个操作可以被表示为一条或多条产生式。因此,产生式表示法常作为建造专家系统的第一选择。
2.6 语义网络表示法
语义网络最早是由Quillian于1968年在研究人类联想记忆时提出的一种心理学模型,是由节点和节点间的有向弧组成的有向图。1972年,Simon首先将语义网络表示法用于自然语言理解的研究中。1975年,亨德里克斯(G.G.Hendrix)又对全称量词的表示提出语义网络分区技术。目前,语义网络已经成为人工智能中应用较多的一种知识表示方法,尤其是在自然语言处理方面。
2.6.1 语义网络的概念和结构
语义网络是通过概念及语义关系来表示知识的一种有向图,它由一组节点和一组连接节点的有向弧构成。其中,节点代表实体,表示各种事物、概念、情况、属性、状态、事件、动作等;有向弧则带有标识,以区分各种不同的实体,以及实体间的各种不同的语义联系。在语义网络中,节点还可以是一个语义网络,形成嵌套。
从结构上来看,语义网络一般由一些最基本的语义单元组成。这些最基本的语义单元被称为语义基元。当把多个语义基元用相应的语义联系关联在一起的时候,就形成了一个语义网络。这些语义基元可用三元组(节点1,弧,节点2)来表示,也可用有向图来表示。如图2-12所示,其中A和B分别代表节点;R则表示A和B之间的某种语义联系。
图2-12 语义基元结构
语义网络表示法和产生式表示法及谓词逻辑表示法之间有着对应的表示关系。语义基元是一种知识的单位,各个语义基元相互联系,人脑的记忆是由存储了大量的网络单元来体现的;而产生式表示法是以一条产生式作为知识单位的,各条产生式间没有直接的联系。从谓词逻辑表示法来看,一个语义网络相当于一个二元谓词。对比谓词逻辑表示法Relation(Object1,Object2),用语义网络表示法可表示为(Object1,Relation,Object2)三元组,同样用语义网络表示的三元组也可以表示为谓词逻辑形式。
2.6.2 语义网络表示知识的方法
由语义网络的结构特点可以看出,语义网络不仅可以表示事物的属性、状态、行为等,而且更适合于表示事物之间的关系和联系。从功能上讲,语义网络可以描述任何复杂事物间的任何复杂关系。但是,这种描述是通过把许多基本的语义关系关联到一起实现的。基本语义关系是构成复杂语义关系的基础,也是语义网络知识表示的基础。由于基本语义关系的多样性和灵活性,因此下面首先介绍一些经常使用的、已经普遍为大家所接受的基本语义关系。
1. 基本语义关系
(1)类属关系
类属关系是指具有共同属性的不同事物间的分类关系、成员关系或实例关系。它体现的是“具体与抽象”、“个体与集体”的概念。类属关系的一个最主要特征是属性的继承性,处在具体层的节点可以继承抽象层节点的所有属性。常用的属性有:
ISA或is-a:用来表示具体抽象关系,或者说表示一种隶属关系,体现某种层次分类。它的特点是具体层节点可继承抽象层节点的属性。例如,“鸟类是动物”可表示为如图2-13所示。
图2-13 表示隶属关系的语义网络
IS:用于表示一个节点是另一节点的属性。例如,“老张很胖”可表示为如图2-14所示。
图2-14 表示属性关系的语义网络
AKO或a-kind-of:表示一个事物是另一个事物的一种类型。例如,“灵长类是一类动物”可表示为如图2-15所示。
图2-15 表示从属关系的语义网络
a-member-of:表示一个事物是另一个事物的成员。例如,“李刚是共产党员”可表示为如图2-16所示。
图2-16 表示成员关系的语义网络
(2)包含关系
包含关系也称为聚类关系,是指具有组织或结构特征的“部分与整体”之间的关系。它和类属关系的最主要区别就是包含关系一般不具备属性的继承性。常用的包含关系有:
Part-of:表示一个事物是另一个事物的一部分。它的特点是Part-of关系下各层节点的属性可能是很不相同的。例如,“两只手是人体的一部分”可表示为如图2-17所示。
图2-17 表示包含关系的语义网络
(3)属性关系
属性关系是指事物和其属性之间的关系。常用的属性关系有:
Have:表示一个节点具有另一个节点所描述的属性。
Can:表示一个节点能做另一个节点的事情。
例如,“鸟有翅膀”可表示为如图2-18所示。
图2-18 表示属性关系的语义网络
(4)时间关系
时间关系是指不同事件在其发生时间方面的先后关系。常用的时间关系有:
Before:表示一个事件在另一个事件之前发生。
After:表示一个事件在另一个事件之后发生。
例如,“香港回归之后,澳门也会回归了”可表示为如图2-19所示。
图2-19 表示时间关系的语义网络
(5)位置关系
位置关系是指不同事物在位置方面的关系。例如,“理工大学位于迎泽西大街上”可表示为图2-20所示。
图2-20 表示位置关系的语义网络
(6)事件和动作语义网络描述
Event节点表示一个动作或一个事件。描述Event节点,常由表示动作施主的Agent节点、表示对象的Object节点、表示动作位置的Location节点、表示动作时间的Time节点等组成,如图2-21所示。
图2-21 Event语义网络
例如,对于“John Punch Tom”这一事件,如果还知道John是雇员,Tom是老板,那么语义网络如图2-22所示。
图2-22 “John Punch Tom”事件语义网络
2. 常用语义网络的表示
应用前面的基本语义关系可以组成任意复杂的语义关系,形成语义网络。下面介绍一些常用语义网络的表示。
(1)命题语义网络
节点表示命题,有向弧表示命题间的关系。当语义网络表示知识时,经常会用到像“并且”、“或者”这样的连接词。为了能表示知识中体现出来的“合取和析取”的语义联系,可通过增加合取节点和析取节点来表示。只要在使用时注意其语义,不应出现不合理的组合情况。
例如,“参加者有男有女,有教师有学生”可表示为如图2-23所示。其中,A、B、C和D分别代表四种不同情况的参加者。对于这种带用两种逻辑关系的事实,首先分析参加者的不同情况。如果把所有参加者组合起来,可得四种情况:A表示男学生,B表
图2-23 具有合取和析取的简单命题语义网络
示女学生,C表示男教师,D表示女教师。然后再按照他们的逻辑关系用语义网络表示出来。
(2)谓词语义网络
用语义网络表示复杂知识时,也会经常用到“所有的”、“有一些”这样的量词。
① 对于存在量词可以直接用“是一个”、“是一种”等这样的语义关系来表示。例如,“某个学生读过一本书”,其谓词公式可以表示为
∃x∃y(Student(x)∧Book(y)∧Read(x,y))
其语义网络可表示为如图2-24所示。
图2-24 只有存在量词的语义网络
② 对于全称量词需要用网络分区技术才能实现。分区技术的基本思想是将复杂命题拆成许多子命题,每个子命题用一个小的语义网络表示,称为一个空间。复杂命题构成大空间,子命题构成子空间,它本身又可看做大空间中的一个节点;子空间可层层嵌套,也可用弧互相连接。例如,“每个学生都读过一本书”,其谓词公式可以表示为
∀x∃y(Student(x)∧Book(y)∧Read(x,y))
其语义网络可表示为如图2-25所示。
图2-25 具有全称量词的语义网络
图2-25中GS是全称量化的概念节点,表示整个概念空间;节点R是一个实例节点,它代表GS中某个具体的子空间;x是一个全称变量,表示任意一个学生;read1是一个存在变量,表示某一次读过;y也是一个存在变量,表示某一本书。这样x、read1、y及其语义就构成了一个子空间,它表示对于每个学生x,都存在一次读事件read1和一本书y。从节点R引出三条弧中,弧“ISA”表示节点R是GS的一个实例;弧“F”表示它代表的子空间及其具体形式;弧“∀”指出x是一个全称变量,在R所代表的子空间中有多少个全称变量,就需要从R引出多少条这样的弧。在这种表示法中,要求子空间中的所有非全称变量的节点都是全称变量的函数,否则应该放在子空间的外面。例如,“每个学生都读过西游记这本书”,由于西游记是具体的一本书,不是全称变量的函数(或不依赖于全称变量),所以应该把它放在子空间的外面,如图2-26所示。
图2-26 具有非全称变量的节点不为全称变量的函数的语义网络
(3)数据语义网络
以数据为中心的语义网络,在利用数据时,需要数据的语义和数据间的关系,以便向用户提供数据的有关知识,包括支持用户对数据实行推理的功能。它是用于知识型数据库的一种知识表示方法。主要的形式有E-R模型、DBTG模型。如图2-27所示是关于实体车间主任、车间和车间成员,供应者与零件的E-R图。
图2-27 E-R图
(4)语言语义网络
在分析语句时,以动词为中心,而将其他成分都看做是对动词(动作)的修饰。每一种修饰称为一个格,不同形式的格是对句子理解的重要支柱。其结构包括两个部分:一部分为纯语法性质,以<语态>为代表;另一部分是语义性质,称为格结构。一个格结构由许多格变量组成,每个格变量从语法上讲是一个名词短语,从语义上讲分别属于五种格关系(动作主体、主题、地点、源、目标)。例如“猪八戒背媳妇”可表示为如图2-28所示。
图2-28 语言语义网络
2.6.3 语义网络的问题求解过程
用语义网络来表示知识的问题求解系统主要由两大部分组成,一部分是由语义网络构成的知识库,另一部分是用于问题求解的推理机。语义网络的推理过程主要有两种,一种是匹配,另一种是继承。
1. 匹配
所谓匹配就是在知识库的语义网络中寻找与待求问题相符的语义网络模式。其主要过程如下:
(1)根据问题的要求构造网络片断,该网络片断中有些节点或弧为空,则标记为待求解的问题。
(2)根据该语义片断在知识库中寻找相应的信息。
(3)当待求解的语义网络片断和知识库中的语义网络片断相匹配时,则与询问处(也就是待求解的地方)相匹配的事实就是问题的解。当然这种匹配不一定是完全匹配,需要考虑匹配程度。
下面通过一个例子来说明语义网络的匹配过程。
例2-9 设图2-29是学生赵云教育情况的语义网络,它已存放在知识库中。
图2-29 赵云受教育情况的语义网络
图2-29的语义网络描述了如下事实:“赵云是一个学生”,“他在理工大学主修计算机课程”,“他入校的时间是1990年”。其中,“教育-1”是指赵云所受的教育。
假设现在希望知道赵云主修的课程,根据这个问题可以构造一个网络片断,如图2-30所示。
图2-30 待求问题的语义网络片断
用图2-30所示的语义网络片断与图2-29所示的语义网络进行匹配时,则由弧“major”所指的节点可知赵云的主修课程是计算机。这就得到了问题的答案。如果希望得知赵云是什么时间入学的,以及他在哪个学校学习等,也可以用同样的办法求得问题解答。
2. 继承
所谓继承是指对事物的描述从抽象节点(概念节点、类节点)传递到具体节点(实例节点)。通过继承可以得到所需节点的一些属性值,它通常是沿着ISA、AKO等类属关系弧进行的。其主要过程如下:
(1)建立节点表,用来存放待求解的节点和所有与此节点类属关系弧相连的那些节点。在初始情况下,只有待求解的节点。
(2)检查表中的第一个节点是否有类属关系弧。如果有,就从该弧所指的所有节点放入节点表末尾,记录这些节点的所有属性,并从节点表中删除第一个节点。如果没有,仅从节点表中删除第一节点。
(3)重复检查表中的第一个节点是否有类属关系弧,直到节点表为空。记录下来的属性就是待求解节点的所有属性。
在实际系统中的推理过程不可能如此简单,有很多复杂的情况。例如,在某些情况下,当不知道具体的属性值时,可以利用已知的信息来计算;当对事物所做的假设不十分有把握时,最好在所做的假设上引入不确定性知识表示的描述方法,给出几种选择,或给出选择的可信度。
2.6.4 语义网络表示法的特点
谓词逻辑和产生式表示法常用于表示有关领域中各个不同状态间的关系,然而用于表示一个事物同其各个部分间的分类知识就不方便了。而槽与填槽表示方法则便于表示这种分类知识,语义网络、框架、概念从属和脚本都属于槽与填槽表示方法。语义网络则是其中最简单的,也是这类表示法的先驱。
1. 语义网络表示法的优点
(1)结构性。语义网络把事物的属性以及事物间的各种语义联系显式地表现出来,是一种结构化的知识表示法。在这种方法中,下层节点可以继承、新增和变异上层节点的属性,从而实现信息共享。
(2)联想性。语义网络着重强调事物间的语义联系,体现了人类思维的联想过程。
(3)自索引性。语义网络把各节点之间的联系以明确、简洁的方式表示出来,通过与某一节点的连接弧很容易找出相关信息,而不必查找整个知识库。语义网络可以有效地避免搜索时的组合爆炸问题。
(4)自然性。语义网络是一种直观的知识表示方法,符合人们表达事物间关系的习惯,而且把自然语言转换成语义网络也较为容易。
(5)非严格性。在语义网络表示法中,没有形式化的语义,也就是说,和谓词逻辑不同,对所给定的表达表示为什么语义并没有统一的表示法。赋予网络结构的含义完全决定于管理这个网络的过程的特性。
2. 语义网络表示法的缺点
(1)推理规则不十分明了,不能像一阶谓词逻辑那样保证推理的严格性和有效性。
(2)表达范围有限,一旦节点个数太多,网络结构复杂,推理就难以进行,不便于表示深层知识。
因此,语义网络表示法比较适合于那些根据非常复杂的分类而进行推理的领域,以及需要表示事件状况、性质及动作之间关系的领域,特别是在二元关系的表示上突显其优势。不过语义网络表示法并不是一种通用的知识表示方法。
2.7 框架表示法
框架理论是美国学者Minsky于1975年提出的。该理论认为,人脑已存储有大量的典型情景,当人面临新的情景时,就从记忆中选择一个称做框架的基本知识结构,这个框架是以前记忆的一个知识空框,而其具体内容依据新的情景而改变,对该空框的细节进行加工、修改和补充,所形成的对新情景的认识又记忆于人脑中。
框架表示法就是以框架理论为基础发展起来的一种结构化的知识表示法。框架被视为知识的单位,将一组有关的框架连接起来便形成框架系统。系统中不同框架可以有共同节点,系统的行为是由系统内框架的变化来表现的。推理过程是由框架间的协调来完成的。
2.7.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,…)︙其中,槽值、侧面值可以是数值、字符串、布尔值,也可以是一个动作或过程,甚至还可以是另一个框架。
框架内部结构的丰富程度取决于事物描述本身的需要。一般来讲,表示概念(例如类概念)的框架结构复杂,而表示个体事物的框架就很简单。复杂的框架常常包含一些嵌套的框架结构。
例2-10 下面是一个描述“教师”的框架。
框架名:<教师>
类属:<知识分子>
工作:范围:(教学,科研)
默认:教学
性别:(男,女)
学历:(学士,硕士,博士)
类型:(<小学教师>,<中学教师>,<大学教师>)
可以看出,这个框架的名字为“教师”,它含有5 个槽,槽名分别是“类属”、“工作”、“性别”、“学历”和“类型”。这些槽名的右面,如“<知识分子>”、“男”、“女”、“学士”、“硕士”、“博士”等是槽值。其中,“<知识分子>”又可以是一个框架名,而“范围”、“默认”则是侧面名,其后是侧面值。
例2-11 下面是一个描述“大学教师”的框架。
框架名:<大学教师>
类属:<教师>
学历:(学士,硕士,博士)
专业:<学科专业>
职称:(助教,讲师,副教授,教授)
外语:语种:(英,法,日,俄,德,…)
默认:英
水平:(优,良,中,差)
默认:良
例2-12 下面是描述一个具体教师的框架。
框架名:<教师-1>
类属:<大学教师>
姓名:孙芳
性别:女
年龄:29
职业:教师
职称:助教
专业:计算机应用
︙
比较例2-11和例2-12中的框架,可以看出,前者描述的是一个概念,后者描述的则是一个具体的事物。二者的关系是,后者是前者的一个实例。因此,后者一般称为前者的实例框架。这个框架之间存在一种层次关系,一般称前者为上层框架(或父框架),后者为下层框架(或子框架)。例如,“大学教师”是“教师-1”的上层框架,又是“教师”框架的下层框架。
框架之间的这种层次关系对减少信息冗余有重要意义。因为上层框架与下层框架所表示的事物,在逻辑结构上为种属关系,即一般与特殊的关系。这样,凡是上层框架所具有的属性,下层框架也一定具有。于是下层框架就可以从上层框架那里“继承”某些槽值或侧面值。所以“特性继承”也就是框架这种知识表示方法的一个重要特征。
2.7.2 框架系统中的预定义槽名
在框架系统中,框架之间的联系实际上是通过在槽中填入相应的框架名来实现的。为了提供一些常用且可公用的槽名,在框架系统中通常预先定义了一些标准槽名,称这些槽名为系统预定义槽名。常用的预定义槽名有以下几种:
(1)ISA槽。ISA槽用来指出一个具体事物与其抽象概念间的类属关系,表示一个事物是另一个事物的特例。一般来说,ISA槽所指出的联系都具有继承性,即下层框架可以继承上层框架所描述的属性或值。
(2)AKO槽。AKO槽用来指出事物间在抽象概念上的类属关系。用AKO作为下层框架的槽名时,其槽值为上层框架名。它表示该下层框架所描述的事物比其上层框架更具体,也说
(3)Subclass槽。Subclass槽用来指出类与类之间的类属关系。当用它作为某下层框架的槽时,表示该下层框架是其上层框架的一个子类。
(4)Instance槽。Instance槽用来建立AKO槽的逆关系。当用它作为某上层框架的槽时,可用来指出它的下一层框架都有哪些。由Instance槽所建立起来的上、下层框架间的联系具有继承性。
(5)Part-of槽。Part-of槽用于指出“部分”和“全体”的关系。当用它作为某下层框架的槽时,它指出该下层框架所描述的事物仅是其上层框架的一部分。Part-of槽与前4种槽有本质区别:Part-of槽所指的上、下层框架间一般不具有共同特征,也不具有继承性;而前4种槽所指出的上、下层框架间具有共同特征,且具有继承性。
(6)Infer槽。Infer槽用于指出两个框架所描述的事物间的逻辑推理关系,用于表示相应的产生式。
(7)Possible-reason槽。Possible-reason槽与Infer槽的作用相反,用来把某个结论与可能的原因联系起来。
(8)Similar槽。Similar槽用于指出两个框架所描述的事物之间的相似关系。
(9)Rotation槽。Rotation槽用于指出两个框架所描述的事物之间的“旋转”关系。如果两个框架所表示的事物是从两个不同角度对同一实体的观察,则它们之间可以通过Rotation槽相连。
2.7.3 框架网络
多个互连的框架连接起来组成的框架系统称为框架网络。框架网络可以视为语义网络和框架的联合使用,是语义网络一般化的形式,与后者没有本质的差别。它包含两方面的含义:第一种含义是网络中的节点是框架,相当于基本事实或假设,利用节点之间的关系可由某些框架推论出另一些框架;第二种含义是网络中的节点既可代表框架,也可代表框架中的槽,每条弧的一头连着某个框架的一个槽,另一头连着另一个框架,表示后面的框架是前面的槽所代表的子框架,以此方式就可实现框架的任意深度的嵌套调用,如图2-31所示。
图2-31 框架网络
图2-31所示的框架网络中,“师生员工”框架用于描述教职工和学生的共同属性,如“姓名”、“性别”、“年龄”等;“教职工”框架用于描述教师和工人的共同属性,但凡在“师生员工”框架中已经指出的属性在这里就可以不再指出;“学生”框架用于描述学生的共同属性,已在“师生员工”框架中指出的属性这里也不可再重复描述。以此类推,可知“教师”框架、“工人”框架、“信息系学生”框架等也只需描述只有他们自己具有的属性。但是,如果一个在上层框架中描述的属性在下层框架有进一步说明时,则需要在该下层框架中再次给出描述。
在框架网络中,为了指明哪一个框架是当前框架的上层框架,需要在当前框架中设立一个专门的槽,该槽的槽名是事先约定的,其槽值是上层框架的名字。这样,通过框架名就可把不同的框架联系起来,构成一个复杂的框架网络。
在框架网络中如何给出槽值十分重要,须注意以下几点:
(1)在框架网络中,各个框架通过“继承”槽实现上、下层框架间的纵向联系,而以框架名作为槽值指出框架间的横向联系。因此框架网络是一个纵横交错的复杂的框架体系结构。
(2)凡是在上层框架中已指出的槽,如果下层框架对它没有另外说明或限制,就不必在下层框架中再次给出,下层框架可以继承上层框架的槽值。
(3)实例框架中的每个槽都应该给出槽值,但对可继承上层框架槽值的槽,其槽值可以不给出。
2.7.4 框架系统的问题求解过程
与语义网络类似,框架系统的问题求解主要有两大部分组成,一部分是由框架及其相互关联的层次关系构成的知识库,另一部分是用于问题求解的推理机。框架表示法没有固定的推理机理。但框架系统的推理和语义网络一样遵循匹配和继承的原则。
当求解某个问题时,首先把这个问题用一个框架表示出来,然后通过与知识库中已有的框架进行匹配,找出一个或几个可匹配的预选框架作为初步假设,并在此初步假设的引导下收集更多的信息,最后用某种评价方法对预选框架进行评价,以便决定是否接受它。
框架的匹配过程是通过对相应槽的槽值进行逐个比较实现的。如果两个框架能够匹配,则表示这两个框架之间存在继承关系,一个框架的某些槽值可能是从它的上层框架继承过来的,因此对两个框架的比较,往往牵涉它的上层框架,这就增加了匹配的复杂性。另外,框架中各个槽值的重要性不一定都是一样的,有些槽重要一些,匹配时两个框架的相应槽值要完全一致;有些槽相对次要一些,匹配时不严格要求两者完全一致,这就需要制定某种标准,以便确定在何种情况下两个框架才算匹配成功,何种情况下两个框架算匹配不成功。
框架系统的推理过程实际上就是填槽的过程,目前还没有一种普遍适用的推理方法,往往需要根据问题的特点采用一些灵活变通的方法。
2.7.5 框架表示法的特点
1. 框架表示法的优点
(1)结构性。框架表示法善于表达结构性知识,能够把知识间的结构关系充分表示出来,是一种结构化的知识表示方法。这一特点是产生式表示法所不具备的。另外它与语义网络所表示的结构性又不相同,语义网络通常用于表示知识间的宏观结构关系,而框架表示法适于表示固定的、典型的概念、事件和行为。
(2)继承性。框架表示可以通过将槽值设置为另一个框架的名字而实现框架间的联系,建立起表示复杂知识的框架网络。在框架网络中,下层框架可以继承上层框架的槽值,也可以进行补充和修改,这样不仅减少了知识的冗余,而且较好地保证了知识的一致性。
(3)自然性。框架表示法体现了人们在观察事物时的思维活动,当遇到新事物时,就从记忆中调用类似的事物的框架,将其中某些细节加以修改、补充,形成对当前的认识。
(4)推理灵活多变。框架表示法没有固定的推理机制,它可以根据待求解问题的特点,灵活地采取多种推理方法。
2. 框架表示法的缺点
框架表示法的主要不足之处是不善于表示过程性的知识,对新的情况、特例及复合对象的描述能力欠缺。如果框架系统中各个子框架的数据结构不一致就会影响系统的清晰性,造成推理的困难。因此,框架表示法通常适用于表达数学概念及相对较窄的专业知识领域。
2.8 其他表示方法
2.8.1 脚本表示法
脚本表示法是夏克(R.C.Schank)依据他的概念依赖理论提出的一种知识表示方法。概念依赖理论的基本思想是把人类生活中各类故事情节的基本概念抽取出来,构成一组原子概念,确定这些原子概念间的相互依赖关系,然后把所有故事情节都用这组原子概念及其依赖关系表示出来。脚本与框架类似,由一组槽组成,用来表示特定领域内一些事件的发生序列。
1. 脚本的结构
脚本表述的是特定范围内的原型事件的结构,它是框架的一种特殊形式,一个脚本所描述的知识像剧本一样,通常由以下几部分组成。
(1)开场条件:给出在脚本中所描述事件的前提条件。
(2)角色:一些用来表示在脚本所描述事件中可能出现的有关人物的槽。
(3)道具:一些用来表示在脚本所描述事件中可能出现的有关物体的槽。
(4)场景:用来描述事件发生的真实顺序。一个事件可以由多个场景组成,而每个场景又可以是其他的脚本。
(5)结局:给出在脚本所描述的事件发生以后所产生的结果。
例2-13 以Schank的“餐厅”脚本为例来说明各个部分的组成。
(1)开场条件:① 顾客饿了,需要进餐;② 顾客有足够的钱。
(2)角色:顾客,服务员,厨师,老板。
(3)道具:食品,桌子,菜单,钱。
(4)场景分别如下。
场景1——进入:① 顾客进入餐厅;② 寻找桌子;③ 在桌子旁边坐下。
场景2——点菜:① 服务员给顾客菜单;② 顾客点菜;③ 顾客把菜单还给服务员。④ 顾客等待服务员送菜。
场景3——等待:① 服务员告诉厨师顾客所点的菜;② 厨师做菜,顾客等待。
场景4——吃饭:① 厨师把做好的菜给服务员;② 服务员把菜端给顾客;③ 顾客吃菜。
场景5——离开:① 服务员拿来账单;② 顾客付钱给服务员;③ 顾客离开餐厅。
(5)结局:① 顾客吃了饭,不饿了;② 顾客花了钱;③ 老板赚了钱;③ 餐厅食品少了。
2. 脚本的推理
脚本描述事件是一个因果链。链头是一组开场条件,只有当这些初始条件满足时,该脚本中的事件才能开始;链尾是一组结果,只有当这一组结果满足时,该脚本中的事件才能结束,以后的事件或事件序列才能发生。在这个因果链中,一个事件和其他前后事件之间相互联系,前面的事件可使当前事件产生,当前事件又可使后面的事件产生。
脚本是以非常固定的形式描述的,在预言一些没有直接提到的事件方面特别有用。例如,已知某一脚本适用于所给定的情形,一旦脚本被启用,则可以应用它按照事件发生的顺序来推理。如果其中的某一个情景的描述发生了跳跃,可以根据脚本的故事情节推断出整个事件正常进行时所得出的结论。但是如果事件被强行中断,也就是给定的情节中的某个时间与脚本中的事件不能对应时,则脚本便不能预测被中断以后的事件。例如,顾客走进餐厅,被带到餐桌旁,订餐后,因为等了许久,结果顾客生气走了。在该情节中,因为要久等,所以顾客走了。这一事件改变了餐厅脚本中所预测的事件序列,因而被中断了,这时就不能推断出顾客是否付了账等情节。
3. 脚本特点
脚本比语义网络和框架等通用结构要呆板得多,知识表达范围也很窄,因此不适用于表达各种知识。但对于表达事先构思好的特定知识非常有效。目前主要在自然语言理解方面获得一些应用。
2.8.2 面向对象的表示法
面向对象的表示法起源于施乐(Xerox)公司于20 世纪70 年代所做的SMALLTALK研究工作。1980年SMALLTALK-80作为面向对象编程语言的推出,推动了各种不同风格和不同用途的面向对象语言的研究和相继问世,尤其是C++已发展为应用最为广泛的主流编程语言。同时,面向对象的技术也在计算机科学和工程的多个领域,如面向对象的编程方法学、面向对象的数据库、面向对象的软件开发环境等,得到了深入的研究和开发。
把面向对象的方法与技术用于知识表示和处理具有极好的发展前景。面向对象方法的本质,是强调在客观世界中从固有的事物出发来构造系统,强调系统中对象之间的关系能够如实地反映客观世界的固有事物及其关系。
本节先讨论面向对象的基本概念,然后再对应用面向对象技术表示知识的方法进行初步探讨。
1. 面向对象的基本概念
面向对象表示法非常适合于人们认识和解决问题的习惯。首先,它是一种从一般到特殊的演绎方法,这与人们认识客观世界时常用的分类思想非常吻合;其次,它也是一种从特殊到一般的归纳方法,由一大批相同或相似的对象抽象出新类的过程,就是一个归纳过程。面向对象既提供了从一般到特殊的演绎手段,如继承等;也提供了从特殊到一般的归纳方法,如类等。由此可知,它是一种很好的认知方法。
(1)对象
广义地讲,所谓对象是指客观世界中的任何事物,它既可以是一个具体的简单事物,也可以是由多个简单事物组合而成的复杂事物。从问题求解的角度来讲,对象是与问题领域有关的客观事物。
对象是由一组数据(属性)和与施加于该组数据的一组相关操作构成的实体。一个对象的形式定义可以用四元组表示:
对象::= <ID,DS,MS,MI>
其中,ID为对象名字;DS为对象的数据;MS为对象的操作;MI为对象的外部接口。
对象是一个封闭体,它向外界提供一组接口界面,外界通过这些接口与对象进行交互。从对象的实现机制来讲,对象是一台自动机,它有名字,有一组数据和一组操作,不同的对象间的相互作用通过互传消息实现。其中,数据表示对象的状态。操作分为两类:一类用于对数据进行操作,改变对象状态;另一类用于产生输出结果。
简单地说,面向对象作为一种大有前途的方法和现今被广泛采用的技术,其基本原则有三条:① 一切事物都是对象;② 任何系统都是由对象构成的,系统本身也是对象;③ 系统的发展和进化过程都是由系统的内部对象和外部对象之间(也包括内部对象与内部对象之间)的相互作用完成的。
(2)类
类是面向对象的一个基本概念。类和对象关系密切,但并不相同。类由一组变量和一组操作组成,它描述了一组具有相同属性和操作的对象。每个对象都属于某一类,每个对象都可由相关的类生成,类生成对象的过程就是例化。例如,电话的电路结构和设计布局可以是一个类,而这个类的实例,即对象,便是一部电话。
同一个类中的对象继承了类的属性和方法,对一组相似的类进行抽象可以得到这一组类的超类(Superclass)。相应地,超类中的每一个类则称为子类(Subclass)。超类和子类的定义隐含地表示了类层次的概念,如图2-32所示。
图2-32 类的层次结构
在类层次结构中,超类的属性和方法可以由子类继承,子类中又可能加入新的属性和方法,而子类中从超类中继承而来的属性和方法,以及子类中新定义的属性和方法,都可以由这一子类的子类继承。
在类的描述中,通常要包括类名(CLASS NAME)、类变量(CLASS VER)、实现变量(INSTANCE VER)及一组称为方法的操作程序。类变量指出这类对象,其值为属于该类的所有对象所共享,其相对应的实例变量则用来说明这类对象各自的内部特性。通常同一类对象其实例变量的值不一定相同,只有附加于对象本身的方法才能访问这些变量。方法部分则是由一组操作程序组成的,形成对象的处理能力。类可用一个五元组形式描述如下:
类::= <ID,INH,DT,OI,IF>
其中,ID和DT与对象的含义相似;INH是类的继承描述;OI是操作集;IF是外部接口。
例2-14 用一个类POINT描述平面上所有的点。
类名:POINT
类变量:无
实例变量:X;0(点的横坐标,初值为0)
Y;0(点的纵坐标,初值为0)
COLOR;RED(点的颜色;初值为红色)
操作程序:
例2-15 平面上位于(3,5)处一个红色的点,可用对象POINT1描述如下:
上例给出的对象POINT1则可看做为类POINT的一个实例。类的描述中变量部分对应于对象的内部状态,操作程序部分对应于对象的处理能力。
3)消息与方法
消息传递是对象之间通信的唯一手段,一个对象可以通过传递消息与别的对象建立联系。消息是对象建立相互请求或相互协作的途径,是要求某个对象执行其中某个功能操作的规格说明。消息可以通过以下方式表示
(Object,Selector,Arguments)
其中,Object是消息要发送的对象;Selector是要求该对象完成的操作;Arguments是Selector可选的参数。
方法是对对象实施各种操作的描述,即消息的具体实现。它与消息是一一对应关系,是实现每条消息具体功能的手段。
4)封装与继承
封装与继承是面向对象方法的两个重要特征。面向对象的封装性体现了对象之间的横向联系,面向对象的继承性则体现了对象之间的纵向联系。
所谓封装是指每个对象内部的数据及对数据的操作不允许其他对象直接引用和修改。对象内部状态和方法对外界都是隐蔽的。
一个复杂对象常由若干相对简单的对象组成。简单对象所提供的某些消息有时可能仅供复杂对象内部使用,复杂对象的这种不向外界公开的消息称为复杂对象的私有消息;相对地,对象向外界公开提供的消息称为该对象的公有消息。
封装使对象的设计者与对象的使用者分开,使用者不用知道对象行为的实现细节而只需通过该对象的消息接口便可访问该对象。明确地把该对象的外部定义和对象的内部实现分开是面向对象系统的一个特色。封装性本身就是模块性,模块的定义和实现分开,使面向对象的知识系统便于维护和修改。
继承是一种表示类之间的相似性的机制,在定义一个先前已经定义的类相似的类时能简化类的定义工作。已存在的类可称为新建立的类的超类;新建立的类则可称为已存在的类的子类。
继承机制有层次继承与复合继承两种。在层次继承中,一个类最多只能有一个超类,子类中的对象最多只能直接继承其超类中所描述的特性,但可以有多个属于同一个超类。在子类描述中可以对超类中已有的描述进行修改,例如为某个变量赋予新的初值,对某个消息选择符定义新的过程,或在子类中增加新的描述(如定义新变量和操作程序等)。针对前面已定义了一个类POINT描述平面上的点,为了描述平面上的直线,可以利用继承性定义类POINT的一个子类 LINE。由于描述一条直线只需指定直线的起点、方向及长度,因此,在类LINE中只需定义变量DIR和LEN来描述直线的方向和长度,以及一组相应操作程序,而直线的起点这个变量则可从前面定义过的类POINT中继承。同时类LINE还可以继承类 POINT中所描述的对点的操作程序,如 MOVE-X,MOVE-Y 等。以下便是类LINE的描述。
类名:LINE
类变量:无
实例变量: DIR:0(直线和水平轴的夹角,初值为0)
LEN:0(直线的长度,初值为0)
超类:POINT
操作程序:
这里,“超类:POINT”指明了类LINE的超类是类POINT。这样属于类LINE的对象除了具有上述类LINE中描述的特性外,还继承了类POINT中所描述的全部特性。因此在类LINE的描述中,无须再定义如直线的起点以及相应的操作等,减少了冗余信息。
一个子类可以拥有其父类的全部功能,在此基础上,可添加其他控件或功能。例如,现有一个表示基本电话的类,用户可以定义其子类,该子类可拥有这个基本电话类的全部功能,用户还可添加上自己需要的其他功能。子类可以重复使用代码。
根据以上基本概念的介绍,面向对象方法可用一个公式概括为:
Object Oriented =Objects +Classes +Inheritances +Communication with Messages
2. 面向对象的表示法
(1)对象的基本结构
面向对象的知识表示中对象的基本结构如图2-33所示。对象的表达由4类槽组成。其中,关系槽表示对象与其他对象之间的静态关系;属性槽表示对象和静态数据或数据结构,一个属性槽可以通过多个侧面来描述其特性;方法槽用来存放对象中的方法,方法名用于区分不同的方法;规则槽用来存放产生式集,一个对象中可以具有不同的规则槽,用来存放完成不同任务的产生式集。
图2-33 知识对象的基本结构
(2)面向对象表示法的形式定义
采用面向对象的框架表示对象或对象类,其形式定义用巴科斯范式(BNF,Backus-Naur Form)表示如下。
<框架>::=unit:<框架名> in<知识库名>
Superclass:<超类框架名>,<超类框架名>;
Subclass:<子类框架名>,<子类框架名>;
Member:<成员框架名>,<成员框架名>;
Memberof:<类框架名>,<类框架名>;
END unit;
<槽>::=membersolt|ownslot:<槽名>from<框架名>;
Valueclass:<槽值类型>;
inheritance:<继承属性>;
<自定义侧面>:<侧面值>;
Value:<槽值>;
END solt;
<槽值类型>::=inter|real|string|struct|rules|METHODS| <框架名>
<继承属性>::=override|union|METHOD
<框架名>::= <字符> <字符>| <数字>
<槽名>::= <字符> <字符>| <字符>
<自定义侧面>::= <字符> <字符>| <数字>
<槽值>::= <字符串>| <数值>
<字符串>::= <字符> <字符>| <数字>
<数字>::=0|…|9
<字符>::=A|…|Z|a|…|z
3. 面向对象表示法的特点
在面向对象方法中,类、子类、实例构成了一个层次结构,而且子类可以继承父类的数据及操作。这种层次结构及继承机制直接支持了分类知识的表示,而且其表示方法与框架表示法有许多相似之处,知识可以按类以一定层次形式进行组织,类之间通过链实现联系。面向对象表示法的主要特点表现为继承性、灵活、易于维护、可重用性好等。
2.8.3 过程表示法
在人工智能的发展史中,关于知识的表示方法曾存在两种不同的观点。一种观点认为知识主要是陈述性的,其表示方法应该着重将其静态特性,即事物的属性以及事物间的关系表示出来,称以这种观点表示知识的方法为陈述性或说明性表示法。其特征是把领域内的过程性知识与控制性知识分开,如前面所述的产生式系统,规则库只用来表示并存储领域内的过程性知识,而把控制性知识隐含在控制系统中,两者是分离的。另一种观点认为知识主要是过程性的,其表示方法应将知识及如何使用这些知识的控制性策略均表述为求解问题的过程,称以这种观点表示知识的方法为过程表示法。
1. 过程性知识的表示方法
过程表示法侧重于对知识的利用,它把与问题有关的知识以及如何运用这些知识求解问题的控制策略都表述为一个或多个求解问题的过程,每个过程就是一段程序,用于完成对一个具体事件或情况的处理。
在问题求解过程中,当需要使用某个过程时就调用相应的程序并执行之。在以这种方法表示知识的系统中,知识库是一组过程的集合,对知识库进行增加、删除、修改,就是对相关过程进行相应地增加、删除、修改。
过程表示法中,过程所给出的是事物的一些客观规律,表达的是如何求解问题,知识的描述形式就是程序,所有信息均隐含在程序之中。过程表示法没有固定的表示形式,如何描述知识完全取决于具体问题。下面以过程规则表示形式为例说明知识的过程表示问题。一般来说,一个过程规则由以下4部分组成。
(1)激发条件。激发条件由推理方向和调用模式两部分组成。其中,推理方向用于指出推理是正向推理还是逆向推理。若为正向推理,则只有当综合数据库中的已有事实可以与其“调用模式”匹配时,该过程规则才能被激活。若为逆向推理,则只有当“调用模式”与查询目标或子目标匹配时才能将该过程规则激活。
(2)演绎操作。演绎操作由一系列的子目标构成。当前面的激发条件满足时,将执行这里列出的演绎操作。
(3)状态转换。状态转换是指对综合数据库的增加、删除、修改操作。
(4)返回。返回用于指出将控制权返回到调用该过程规则的上一级过程规则那里去。
例2-16 设有如下知识:“如果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作为结束标志;带“?”的变量表示其值将在该过程中求得。
2. 过程表示的问题求解过程
在使用过程规则表示知识的系统中,问题求解的基本过程是:每当有一个新的目标时,就从可以匹配的过程规则中选择一个执行。在该规则的执行过程中可能会产生新的目标,此时就调用相应的过程规则并执行它。反复进行这一过程,直至执行返回语句,这时将控制权返回给调用当前过程的上一级过程规则,并按照调用时的相反次序逐级返回。在这一过程中,如果不存在这样的过程规则,则返回失败标志,并将执行的控制权移交给上一级过程规则。
3. 过程表示法的特点
过程表示法的优点为:
(1)表示效率高。它用程序来表示知识,可以准确地表明先做什么,后做什么及怎么做,并直接嵌入一些启发式的控制信息。因此可以避免选择及匹配那些无关的知识,从而提高系统的运行效率。
(2)控制系统容易实现。控制信息已嵌入到程序中,因而控制系统就比较容易设计。
过程表示法的主要缺点是不易修改、添加新的知识,而且当对某一过程进行修改时,有可能影响到其他过程,对系统的维护带来诸多不便。
2.8.4 Petri网表示法
Petri网的概念是1962年由德国学者佩特里(C.A.Petri)提出的,开始用于构造系统模型及进行动态特性分析,后来逐渐被用于知识表示。
Petri网表示法中,对于不同的应用,网的构成及构成元素的意义均不相同。但有3 种元素是基本的,它们是位置、转换及标记。这三种元素之间的关系如图2-34所示。图中,pj 与pk分别代表第j个和第k个位置;yj与yk分别是这两个位置的标记;ti 是某一转换。
图2-34 Petri网
如果用pj与pk分别对应产生式的前提dj和结论dk,用ti 表示这个产生式的强度ui,则图
2-34所表示的Petri网就与如下产生式有相同的含义:
IF dj THEN dk (CF=ui)
对于比较复杂的知识,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之间一个实数的映射,用来表示位置对应命题的可信度;β是相关函数,表示从位置到命题的映射,用于表示位置所对应的命题。
上述用到的“强度”、“可信度”的概念,都是表示不确定性的知识。
设有如下产生式
IF dj THEN dk (CF=ui)
若dj的可信度为0.8,产生式的强度ui=0.9,则Petri网中各元素的内容分别如下:
Petri网表示法的基本思想就是用不同的位置来代表产生式的前提和结论,用转换来表示不同的产生式强度,从而实现Petri网对产生式集合的映射。
Petri网表示法的特点是,便于描述系统状态的变化及对系统特性的分析;它可以在不同层次上变化描述,不必注意细节及相应的物理表示;而且适用于表示不确定性知识。
小 结
本章对知识和知识表示的概念进行了较详细的阐述;在引入知识相关概念的基础上,对现有的多种知识表示方法进行了介绍,分别从它们的基本思想、工作流程、主要特点及相互比较等方面一一进行了分析。
由于各种知识表示方法各具特点、各有优劣,并有其适用领域,因而在解决具体问题时,应当把握问题的要旨,综合考虑,选取适当的表示方法。在实际应用中,对于复杂的、深层次的知识,也很难用一种知识表示来解决问题。为了解决这个难题,通常根据表示知识的特征来决定用两、三种方式联合表示。各种不同的知识表示方法没有什么本质的差别,目的无非是使知识的运用更合理和高效。一般而言,一个智能系统都由推理系统和知识库构成,知识表示的优劣直接影响推理的进行,二者是相辅相成的。因此,选择什么样的知识表示法时,不仅要考虑知识本身的结构,还要考虑推理系统的构成。
练习题
2.1 什么是知识?有哪几种分类?
2.2 用状态空间法表示推销员旅行问题。
2.3 问题归约法求解问题的原理是什么?
2.4 试用一阶谓词逻辑表示法描述下述推理:
凡是清洁的东西就有人喜欢;人们都不喜欢苍蝇,所以苍蝇不清洁。
2.5 设计一个产生式系统,已知规则库包含以下的8条规则,要求根据规则画出与或图。
R1:IF d1 THEN d2
R2:IF d2 THEN d3
R3:IF d2 THEN d4
R4:IF d4 THEN d5
R5:IF d1 THEN d6
R6:IF d6 THEN d9
R7:IF d1 AND d8 THEN d7
R8:IF d7 THEN d4
2.6 语义网络表示的特点是什么?语义网络表示下的推理是如何进行的?
2.7 请把下列命题用一个语义网络表示出来:
(1)树和草都是植物;
(2)树和草都有叶和根;
(3)水草是草,且生长在水中;
(4)果树是树,且会结果;
(5)梨树是果树中的一种,它会结梨。
2.8 用框架表示方法描述有关汽车的知识,以框架的形式表示出来。
2.9 从开场条件、角色、道具、场景和结果等5个方面给出描写坐出租车的脚本。
2.10 用面向对象知识表示方法描述中国社会的家族和亲戚关系,要能反映父、母、子、女、夫、妻、叔、伯、姨、舅等男女性别、辈分关系(假设没有任何双重亲戚关系)。
2.11 应用过程性知识表示方法,描述:如果张三比李四大,且李四比王五大,则张三比王五大。
2.12 应用Petri网描述如下产生式规则,画出Petri网图。
R1:IF d1 THEN d2(CF=0.8)
R2:IF d2 AND d3 THEN d4(CF=0.7)
R3:IF d2 AND d4 THEN d5(CF=0.9)
2.13 如何对知识表示方法进行评价?如何合理选用知识表示方法?