4.2 逻辑表示法 逻辑是一种重要的知识表示方法。从第二章归结推理方法的介绍容易理解这一点。使用逻辑法表示知识,需将以自然语言描述的知识,通过引入谓词、函数来加以形成描述,获得有关的逻辑公式,进而以机器内部代码表示。在逻辑法表示下可采用归结或其它方法进行准确的推理。当然一阶逻辑的表达能力是有限的,如具有归纳结构的知识、多层次的知识类型都难于用一阶逻辑来描述。 由于对逻辑表示法在第二章已有详细介绍,这里仅举两个例子再做些说明。 4.2.1 机器人搬弄积木块问题表示 设在一个房间里,有一个机器人ROBOT ,一个壁室ALCOVE,一个积木块BOX,两个桌子A和B。机器人可把积木块BOX从一种状态变换成另一种状态。 引入谓词 TABLE(A) 表A是桌子 EMPTYHANDED(ROBOT) 表机器人双手是空的 AT(ROBOT,A) 表机器人在A旁 HOLDS(ROBOT,BOX) 表机器人拿着积木块 ON(BOX,A) 表积木块BOX在A上 设定初始状态是 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桌上,然后仍回到壁室,这时同初始状态相比有 增添表 ON(BOX,B) 删除表 ON(BOX,A) 又如机器人由初始状态,走近A桌,然后拿起BOX,这时同初始状态相比有 增添表 AT(ROBOT,A) HOLDS(ROBOT,BOX) 删除表 AT(ROBOT,ALCOVE) EMPTYHANDED(ROBOT) ON(BOX,A) 进一步说,机器人的每一操作还需有先决条件。如机器人拿起A桌上的BOX这一操作,先决条件是 ON(BOX,A),AT(ROBOT ,A) EMPTYHANDED (ROBOT) 而先决条件成立与否的验证可使用归结法。如将初始状态视作已知条件,而将要验证的先决条件视作结论,便可使用归结法了。有如下归结过程: (1) AT(ROBOT,A) (2) EMPTYHANDED(ROBOT) (3) ON(BOX,A) (4) TABLE (A) (5) TABLE (B) (6) ~ON (BOX,A)∨~AT(ROBOT,A) ∨~EMPTYHANDED(ROBOT)(先决条件的否定) (7)~AT(ROBOT,A)∨~EMPTYHANDED (ROBOT)(3,6) (8)~EMPTYHANDED (ROBOT)(1,7) (9)□ (2,8) 于是验证了这一先决条件成立。 从初始状态出发,每实现机器人的一个操作都验证先决条件,并建立相应的增添表和删除表,便可逐步达到目标状态。这里仅是说明逻辑法可以描述这类问题。1972年FIKS建立的STRIPS机器人规划系统就是使用的逻辑法表示的。 4.2.2 Honil 塔问题表示 已知三个柱子1,2,3和三个盘子A,B,C(A比B小,B比C小)。初始状态下,A,B,C依次放在1柱上。目标状态是A,B,C依次放在柱子3上。条件是每次可移动一个盘子,盘子上方是空顶方可移动,而任何时候都不允许大盘在小盘之上。 这个问题,使用逻辑法可作如下描述。 (1) 常量 A,B,C,1,2,3而S表状态。 (2) 谓词 Disk(A)表A是盘子 PEE(1) 表1是柱子 Smaller(A,B) 表A比B小 Free(x,s) 表状态S下,X空顶 Legal(x,y,s) 表状态S下,x可向y上移动 ON(A,B,S)表状态S下A在B上 (3) 函数 move(A,B,S)表状态S下,A移到B上所得的新状态 (4) 谓词和函数间的关系
有了这些关系,再给出初始状态和目标状态的谓词公式,便可使用归结法建立求解过程。 |