猴子拿香蕉 逻辑谓词
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
房内有一只猴子、一个箱子,天花板上挂了一串香蕉,其位置关系如图所示,猴子为了拿到香蕉,它必须把箱子推到香蕉下面,然后再爬到箱子上。请定义必要的谓词,写出问题的初始状态(即图示的状态)、目标状态(猴子拿到了香蕉,站在箱子上,箱子位于位置b)。
定义谓词
AT(x,y):x在y位置上
BOX(y):箱子在y的位置。
OVER(x):x被挂在天花板上
EMPTY(x):x手中是空的
HOLD(x, z):x拿着z
ON(x,w):x在w的上面
NOT_on(x,w) :x在w的上面
BAN(y):香蕉在y的位置
猴子的位置为:a
香蕉位置为:b
箱子的位置为:c
问题的初始状态:
AT(monkey, a)∧BOX(c)∧BAN(b)∧OVER(b)∧EMPTY(monkey)∧NOT_on(monkey, box)
问题的目标状态是:
AT(monkey, b)∧BOX(b)∧BAN(b)∧HOLD(monkey, banana)∧ONmonkey, box)
操作:
GOTO(x, y):从x处走到y处。
PUSH(x, y):把箱子从x处推倒y处。
CLIMB(x):在x处爬上箱子。
GET(x):在x处得到香蕉。
操作对应的条件与动作如下:
GOTO(x, y)
条件:AT(monkey, x)∧NOT_on(monkey, box)
动作:删除:AT(monkey, x)
添加:AT(monkey, y)
PUSH(x, y)
条件:AT(monkey, x)∧BOX(x)∧NOT_on(monkey, box)
动作:删除:AT(monkey, x)∧BOX(x)
添加:AT(monkey, y)∧BOX(y)
CLIMB(x)
条件:AT(monkey, x)∧BOX(x) ∧NOT_on(monkey, box) 动作:删除:NOT_on(monkey, box)
添加:ON(monkey, box)
GET(x)
条件:AT(monkey, x)∧BOX(x)∧ON(monkey, box)
动作:删除:EMPTY(monkey)
添加:HOLD(monkey, banana)