当前位置:文档之家› 猴子拿香蕉 逻辑谓词

猴子拿香蕉 逻辑谓词

房内有一只猴子、一个箱子,天花板上挂了一串香蕉,其位置关系如图所示,猴子为了拿到香蕉,它必须把箱子推到香蕉下面,然后再爬到箱子上。

请定义必要的谓词,写出问题的初始状态(即图示的状态)、目标状态(猴子拿到了香蕉,站在箱子上,箱子位于位置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)
,。

相关主题