理论教育 语义网络的推理方法

语义网络的推理方法

时间:2023-06-15 理论教育 版权反馈
【摘要】:图2-81语义网络的槽和数值为了叙述的方便,我们对所用符号作进一步的规定,将尾部的节点称为值节点。语义网络中的推论有两种:一种是继承,另一种是匹配。因此,虽然Brick12节点没有Shape槽,但可以从这个语义网络推理出Brick12的外形是矩形。图2-82语义网络的值继承①建立一个由F以及所有和F以ISA链相连的类节点的表,在表中F节点排在第一个位置。

语义网络的推理方法

在语义网络知识表达方法中,没有形式语义。和谓词逻辑不同,语义网络知识表达方法对给定的表达结构表示什么语义没有统一的表示法,赋予网络结构的含义完全取决于管理这个网络的过程的特征(见图2-81)。

图2-81 语义网络的槽和数值

为了叙述的方便,我们对所用符号作进一步的规定,将尾部的节点称为值节点。

语义网络中的推论有两种:一种是继承,另一种是匹配。

1.继承

语义网络中,所谓的继承是把对事物的描述从概念节点或类点节传递到实例节点。

在图2-82中,Brick是概念节点,Brick12是实例节点。Brick节点在Shape(外形)槽,其中填入Rectangular(矩形),说明砖块的外形是矩形的,这个描述可以通过ISA链传递给实例节点Brick12。因此,虽然Brick12节点没有Shape槽,但可以从这个语义网络推理出Brick12的外形是矩形。

继承的方法有三种:

1)值继承

ISA,AKO=A-KIND-OF

值继承程序:

设F是给定的节点,S是给定的槽。

图2-82 语义网络的值继承

①建立一个由F以及所有和F以ISA链相连的类节点的表,在表中F节点排在第一个位置。

②检查表中第一个元素的S槽是否有值,直到表为空或找到一个值。

③如果表中第一个元素在S槽中有值,就认为找到一个值。

④否则,从表中删除第一个元素,并把以AKO链与此第一个元素相连的节点加入到这个表的末尾。

⑤如果找到了一个值,那么就说这个值是F节点的S槽的值,否则就宣告失败。

2)“如果需要”继承

在某些情况下,当我们不知道槽值时,可以利用已知信息来计算。

[例] 我们可以根据体积和密度来计算积木的重量,进行上述计算的程序称为IF NEEDED(如果需要)程序,如图2-83所示。

图2-83 语义网络的如果需要继承

为了储存进行上述计算的程序,我们需要改进节点、槽、值的结构,允许槽有几种类型的值而不只是一个类型。为此,每个槽又可以有若干个侧面,以储存这些不同类型的值。原始意义上的值放在“值侧面”中,IF NEEDED程序存放在IFNEEDED侧面中。

计算重量的IFNEEDED程序:

如果在VOLUME(体积)和DENSITY(密度)槽中有值;

①把这两个槽中值的乘积放入WEIGHT槽中。

②把上述乘积记下作为节点的重量值。

可见,由图就可求出积木的重量。(www.daowen.com)

“如果需要”(IF NEEDED)继承程序。

设F是给定的节点,S是给定的槽。

①建立一个由F以及所有和F以ISA链相连的类节点的表,在此表中,F节点排在第一个位置。

②检查表中第一个元素的S槽的IF-NEEDED侧面中是否存在一个过程,直到表为空或找到一个成功的IF NEEDED过程为止。

③如果侧面中存有一个过程,并且这个过程产生一个值,那么就认为已找到一个值。

④否则,从表中删除这第一个元素,并把以AKO链和此第一个元素相连的节点加入到这个表的末尾。

⑤如果一个过程找到一个值,那么就说所找到的值是F节点的槽值,否则宣告失败。

在图2-83所示的例子中,Block节点中的程序根据Brick12的体积和密度计算Brick12节点的重量,并把计算结果存入节点Brick12的Whight槽的值侧面中,如图2-84所示。

图2-84 语义网络的如果需要继承

3)“默认”继承

我们把具有相当程度的真实性,但又不能十分肯定的值称为“默认”值.这种类型值被放入槽Default(默认)侧面中。

[例] 从整体上说,积木的颜色很可能是蓝色的,但在砖块中,颜色可能是红的。对Block和Brick节点来说,在Color槽中找到的侧面都是Default侧面,如图2-85所示。

图2-85 语义网络的“默认”继承

“默认”(Default)继承程序:

设F是给定的节点,S是给定的槽

(1)建立一个由F以及所有和F以ISA链相连的类节点的表,在此表中,F节点排在第一个位置。

(2)检查表中第一个元素的S槽的DEFAULT侧面中是否有值,直到表为空或找到一个默认值为止。

①如果表中第一个元素的S槽的DEFAULT侧面中有值,那么就认为已找到一个值。

②否则,从表中删除这第一个元素,并把以AKO链和此第一个元素相连的节点加入到这个表的末尾。

③如果找到了一个值,那么就说所找到的值是F节点的S槽的默认值,否则宣告失败。

2.匹配

上面讨论的是类节点和实例节点之间的继承。下面用一个例子来说明匹配关系。

如图2-86所示,玩具房Toy-House和玩具房Toy-House77(实线表类节点,虚线表实例节点)。继承过程将如何进行?我们不仅必须考虑把值从玩具房Toy-House传递到玩具房Toy-House77的路径,而且须考虑把值从玩具房Toy-House部件传递到玩具房Toy-House77部件的路径。由于Toy-House77是Toy-House的一个实例,所以它与Toy-House除了有继承关系外,还需有部件的匹配。

图2-86 虚节点和虚链

图2-87 部件匹配

图2-87中的结构35(Structure35)有两个部件,一个砖块Brick12和一个楔块Wedge18。一旦在Structure35和Toy-House之间放上ISA链,那么Brick12必须支撑Wedge18。在图中用虚线箭头表示Brick12和Wedge18的Support虚链。Wedge18肯定和作为Toy-House的一个部件的楔块相匹配,而Brick12肯定和砖块相匹配。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈