- 背景简介/问题描述
图1.1 猴子摘香蕉问题
一个房间里,天花板上挂有一串香蕉,有一只猴子可在房间里任意活动(到处走动,推移箱子,攀登箱子等)。设房间里还有一只可被猴子移动的箱子,且猴子登上箱子时才能摘到香蕉,问猴子在某一状态下(设猴子位置为A,香蕉位置在B,箱子位置为C),如何行动可摘取到香蕉。
- 算法介绍
2.1 分别定义描述状态谓词
SITE(x, y): x在y 处;
HANG(w,y):w悬挂在y处
ON (z): z站在箱子上;
HOLDS(z): z手里拿着香蕉
2.2变元的个体域:
x的个体域是{Monkey, Box}
y的个体域是{a, b, c}
z的个体域是怡{Monkey}
w的个体域是{Banana}
2.3状态:
初始状态S0:
结束状态Sg:即拿到香蕉
2.4定义五个操作函数:
monkeygoto (u,i): 猴子在第i步从当前位置走到u处。
movebox (u,i):猴子第i步推着箱子从当前位置走到u处。
Climbonbox(i): 猴子第i步爬上箱子。
Climbdownbox(i): 猴子第i步跳下箱子。
grasp(i): 猴子第i步摘到香蕉。
2.5各操作的条件和动作:
monkeygoto (u,i)
条件:当前是第i个操作,下一个操作猴子移动去u。
动作:增添新状态,新状态中猴子位置为u。
movebox (u,i)
条件:当前是第i个操作,下一个操作猴子推动箱子去u,猴子和箱子必须在一个位置。
动作:增添新状态,新状态中猴子和箱子位置为u。
Climbonto(i)
条件&#x