您好,欢迎访问三七文档
-1-第三章框架结构3.1事物的属性我们对某一事物的了解,表现在我们对于该事物方方面面的了解,即对该事物所有属性的了解。掌握了某一事物的所有属性,也就有了关于该事物的知识。因此,许多知识表示是从属性的描述开始的。最简单的属性表示法,称之为属性表表示法:就是把同一事物各方面的属性列成一张称之为属性表的表。下面是化学元素铁的属性表:事物名:铁类别:化学元素颜色:银白比重:7.86熔点:1535℃沸点:2750℃能否导电:能化学性质:活泼周期表位置:第4周期第8族地壳含量:5%原子量:55.847在这张属性表中,左面一列是属性名,右面一列是相应的属性值。一般来说,在不同的事物之间,不仅所包含的属性是不一样的,而且即便是某一(或某些)属性相同但其属性值也不见得一样。由于世界上的事物千差万别,属性的门类可以非常之多。例如,下面是又一张属性表:事物名:新康德主义类别:哲学理论阶级性:资产阶级出现时间:19世纪后半期流行地区:德国、意大利、俄国-2-代表人物:李普曼、朗格、黑尔姆霍茨主要主张:否认“自在之物”的存在前身:康德主义显然,这两个事物的属性有极大的不同,在铁的属性中决不可能有阶级性这一条,而在新康德主义的属性中也决不可能有原子量这一条。1).某些属性是否存在以至于它的值的大小取决于另一些属性(在上面的例子中决定于“类别”属性),这叫做属性之间的依赖关系。2).有时,一些属性的值甚至可直接从另一些属性的值计算出来,例如化合物的分子量可以直接从它的分子式以及组成该分子的诸原子的原子量计算出来。3).各类事物的属性总数之大,以及每个事物的属性数相对地少这一情况,是知识库不同于通常数据库的一个重要方面。4).对具有相同一些属性的某类事物,可以把这批属性确定下来构成属性框架,只要往此框架内对诸属性赋以不同的值,就得到了对该类事物中不同个体的描述。例如:元素名铁铝镁铜原子量55.84726.98224.30563.546颜色银白银白银白紫红熔点1535℃660.4℃648.8℃1083℃沸点2750℃2467℃1090℃2582℃属性的这种表示形式我们很熟悉,与数据库中的“关系”很相似。实际上,如果把它看作一个矩阵A,则只需作一转置,所得的新矩阵R=A就是一个关系。关系不仅是对具有相同属性不同属性值的同一类事物的描述,而且也使我们对于属性表的认识达到了一种新的观点,★即事物本身和它的属性不加区分的观点,或者说,把事物本身也作为一种属性。-3-例如,对于上面的关系,如果我们要问铝的沸点是什么,可以提这样的问题:元素(铝,,,,x)?两个逗号中的空白表示我们对此变元之值没有兴趣,而变量x中存放我们要查询的值,即铝的沸点。从这个问题看来,沸点是铝的一个属性。但是,我们也可以反过来问:沸点为2467℃的元素是什么?这时问题可以这样提:元素(x,,,,2467)?在这个问题里,沸点成了事物,而铝变成属性了。更有甚者,我们还可提这样的问题:元素(,63.546,,x,)?即原子量为63.546的元素的熔点是什么?★可见,事物和属性之间的区别不是绝对的,这是我们在用属性表示知识时必须注意的一个重要观点。在数据库组织的层次模型中,我们可从另一个角度来观察事物和属性之间无绝对界线这一现象。如,下面是一辆坦克的属性表:型号:T-72车号:30084装甲:复合型火炮:滑膛炮车高:2.19米属性表的右面一列全是属性值。其中有的属性本身可作为事物而进一步加以描述。比如T-72坦克的装甲的属性表:装甲类型:复合型厚度:204mm外形:弧形水平倾角:22O-4-★这样,一个对象即具有双重性质:在高一级的属性表中,它是一个属性,在低一级的属性表中,它又是被描述的事物。在低一级的属性表中,又可有某些属性被看作事物而拥有自己的属性表,从而形成层次式的嵌套结构,理论上层次数可以任意大。从数据结构的观点看,它是一棵树。3.2框架上节我们讨论了表示事物属性的各方面。这些不同的表示技巧,集大成于一种叫做框架的知识表示方法当中。★框架是Minsky在1975年提出的一个概念,当用它来表示有关事物的知识时,不仅可以表示出事物各方面的属性,而且可以表示出事物之间的类属关系,事物的特征和变异等等,在识别、分析、预测事物及其行为方面有很大用处。框架的基本思想是这样的:世上各类事物的状态、属性、发展过程和相互关系往往有一定的规律性,俗称“套套”。我们可以把各个领域、各类事物的“套套”事先总结出来,存于数据库中。当我们要认识一个新的事物时,我们可根据对这个新事物的初步印象(此时可能只有很片面的印象),从数据库里取出一个与它最相近的“套套”来,实行“自顶向下”的匹配,如果匹配成功,则“套套”中存放的属性就可向我们提供有关此新事物的知识,如果匹配不成,则寻找原因,重新自数据库中取一个更能与新事物匹配的“套套”,或者修改刚才那个匹配得不太成功的套套,直到最后求得一个令人满意的解答为止。这种现实世界的框架例子并不少见。聊斋上有个著名的《胭脂》故事,开始时邑宰(县官)判错了案,就是因为他头脑里有个破案的框架,这个框架的样子大概是这样的:-5-框架名:tx未遂杀人案犯罪意图:x犯罪结果:杀人被杀者:y杀人动机:x未遂被y发现知情人:{ziiI}罪犯:t条件一:若x为强奸则t必须是男性条件二:有某个zi指控t条件三:t招认邑宰用此框架去套胭脂一案,结果得到了该框架的一个实例(变元x,y,iZ,t均用实际的值代入)。框架实例:鄂秋隼强奸未遂杀人案犯罪意图:强奸犯罪结果:杀人被杀者:卞牛医杀人动机:强奸未遂被卞牛医发现知情人:卞妻,胭脂罪犯:鄂秋隼条件一:鄂秋隼为男性,成立条件二:胭脂指控鄂秋隼,成立条件三:鄂秋隼招认,成立在这个框架实例中,原来是变元而代入了实际值的地方都加了下划线。注意,这些变元的值并不是随便代入的。邑宰根据欲自顶向下(搜索),则如何选择“顶”?是关键!顶层框架选错则可能导致错误的推理结果。隼sǔn-6-胭脂的哭诉觉得此案很象是强奸未遂杀人,于是调用本框架(tx未遂杀人案)。被杀者卞牛医和知情人卞妻、胭脂是客观现实,可以立即填入。犯罪意图、罪犯和杀人动机则根据苦主告状作试验性填入,待到三个条件验证成立后,上述试验性填入就被确认为合法而被接受了。现实生活中的框架自然比这个例子要复杂得多。可是,对于某些特定的不是非常复杂的环境,例如机器人识别积木世界,则框架的办法还是很有效的。例如,当机器人从斜上方观察一块方形积木时,呈现在他面前的可能是如下一个图形:把这个图形用框架描述得到:框架:积木上方斜视图物体:立方体视角:斜俯视视状:六角形上面:面A斜视图(L1,L2,L3,L4)下左面:面B斜视图(L5,L4,L6,L8)下右面:面C斜视图(L3,L7,L9,L6)边:{L1,L2,L3,L4,L5,L6,L7,L8,L9}姿态:平卧负载面:AL4L9L7L3L1L5BL6L2ACL8-7-接地面:{B,C}框架:面X斜视图(y1,y2,y3,y4)物体:正方平面视角:斜俯视(或斜侧俯视)视状:平行四边形左上边:y1右上边:y2左下边:y3右下边:y4姿态:平卧(或直立)能载物:是(或否)接地:否(或是)这里有两个框架,每个框架都有一些属性,有些属性值是确定的,有些属性值是不确定的,要待变成实例时才代入确定的值。有些属性本身是子框架,第二个框架就是第一个框架的子框架,分别在第一个框架的上面,下左面和下右面三个属性处被调用。框架可以带参数,第二个框架有五个参数,其中X是积木面的名字,y1,y2,y3和y4是(按顺时针方向排列的)该面的四条边。框架被调用时其参数要用实际的值代入,不同的参数值生成不同的框架实例。上面的子框架分别在三个调用处生成A,B,C三个面的斜视图实例。属性的值要满足一定的条件。有些条件已隐含在其中,如子框架的后面四个参数分别是它的四条边。主框架中各子框架调用的实在参数必须在子框架中名叫“边”的属性值中出现,而且这些实在参数的总和正好是主框架中“边”属性的全体属性值,等等。机器人可以利用这个框架来认识积木。例如,如果它看到-8-了一个六边形,又看到这个六边形分为三个面,每一个面都符合子框架的描述,则机器人可断定该六边形在几个主要属性上符合主框架的描述,因此该六边形可与主框架匹配上。然后根据主框架中“物体”属性的值知道自己看见的是一个立方体,又根据“视角”属性的值知道自己位于立方体的斜上方,最后,根据“负载面”属性的值知道可把别的东西,例如另一块积木,放在A面上。由此,一个框架的主要特征可初步概括为:1.每个框架有一个可带有参数的框架名;2.每个框架有一组属性,每个属性称为一个槽(slot),槽里面可存放属性值;3.每个属性对它的值有一定的类型要求,不同属性对它的值类型的要求可以不一样;4.有些属性值可以是子框架调用,子框架调用可以带参数;5.有些属性值是事先确定的,有些属性值需在生成实例时代入;6.有些属性值代入时需满足一定的条件。不同属性的属性值之间有时还有一些条件要满足。一般来说,实现的每1个框架系统应具备如下的功能:1.描述功能每个框架实现系统应该提供一组功能模块,利用这些功能模块可为某类客观事物建立一个由一组互相联系、互相支持的框架构成的描述,并对此描述进行管理(譬如,进行查询、修改、推理、……)。在建立一个单个框架时,可根据需要设置一组槽,规定每个槽的性质,及槽与槽之间的关系。通常每个槽在框架中被认为是无内部结构的,但当需要时,它本身又可扩充成一个有内部结构的框架。例:机器人进入一个房间,他运用他头脑中的框架体系(即框架系统)来判断这是一个什么房间,机器人的当前框架是“房间”框架。墙框架的两个参数是为了限制一面墙上的窗数和门数不得多于整个房间的窗数和门数。括在方括号内的数目是属性的缺省值,当无其它信息-9-时,可以假定此属性的值就是该缺省值。带*号的属性表示其属性个数不限。加方括号的槽(即属性)是可有可无的。框架房间墙数窗数门数前墙[后墙][左墙][右墙][家俱][地毯][供电]天花板地板条件:a[=4]b[=2]c[=1]墙框架调用(b,c,b1,c1)墙框架调用(b,c,b2,c2)墙框架调用(b,c,b3,c3)墙框架调用(b,c,b4,c4)家俱框架调用地毯框架调用供电框架调用天花板框架调用地板框架调用b1+b2+b3+b4=b,c1+c2+c3+c4=ca0,b≥0,c0框架墙(w,d,w1,d1)墙面材料白灰(或)油漆(或)墙纸墙面颜色窗数w1门数d1挂物数挂物*物框架调用窗*窗框架调用门*门框架调用条件:w1≤wd1≤d这几项新的描述手段都是很有用的。许多属性都有缺省-10-值,如人一般有两条腿,可作缺省值使用。★对于不易判定的属性值,使用缺省值更有好处。★通过实际代入值与缺省值相比较,可有助于发现异常。★允许一个框架有不确定数量的槽,使框架具有动态结构,其好处更不待言。2.子类我们不应该也不可能把各种房间的所有可能属性全写进一个房间框架中,即使勉强写进去了,恐怕也是庞大无比,不便使用。★比较好的办法是采用SIMULA67的方法,把房间分成子类,每类房间有自己的框架。然后,可能的话,再把这些子类分成更小的子类,定义更小的框架。如此等等。★所谓子类,就是说母类的属性子类都有,因此,凡是母类框架(称为上层框架)中有的槽,在子类框架(称为下层框架)中不再列出。房间框架可有许多下层框架,这里以厨房框架作为下层框架的一个例子:框架厨房上层转入条件煤气罐数煤气灶煤气罐[菜厨][水斗]工作台房间框架煤气罐数0[1]煤气灶框架调用煤气罐框架调用菜厨框架调用水斗框架调用工作台框架调用★“上层”槽指的是厨房框架的直接上层框架。这个槽把上下层框架联系起来,形成一个层次体系。如果某个属性在包含它的厨房框架中找不到,则到包含它的厨房框架的上层框架中去找。若在这个上层框架中还未找到,那么还可通过这个上层框架的“上层”槽到更上层的框架-11-中去找,等等。★“转入条件”指的是在什么条件下应由上层框架转入其对应的下层框架(确定的一个)。例:☆当机器人刚一进入房间时,
本文标题:第三讲框架
链接地址:https://www.777doc.com/doc-2183832 .html