以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  机器人搬弄积木问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=78311)


--  作者:showin
--  发布时间:11/25/2009 2:03:00 PM

--  机器人搬弄积木问题

问题描述:设在房间里,有一个机器人Robot,一个壁橱Alcove,一块积木BOX、两张桌子A和B。开始时,机器人Robot在壁橱的旁边,且两手空空,桌子A上放着积木块BOX,桌子B上是空的。机器人Robot将把木块BOX从桌子A上转到桌子B上。其中,机器人可以行走,机器人一次只能搬动一块积木。用三种知识表示方法描述该问题,并给出问题的求解过程,并对其中一种求解方法给出计算机推理结果,要求程序运行后能给出求解的过程。

大家发发言啊


--  作者:showin
--  发布时间:11/25/2009 2:04:00 PM

--  
引入谓词
   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)

W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms