问题描述 在一个房间内有一只猴子(可把这只猴子看做一个机器人)、一个箱子和一束香蕉
香蕉挂在天花板下方,但猴子的高度不足以碰到它
那么这只猴子怎样才能摘到香蕉呢
图 1 表示出猴子、香蕉和箱子在房间内的相对位置
用四元表列(W,x,Y,z)来表示这个问题的状态
其中, W-猴子的水平位置 x-当猴子在箱子顶上时取 x=1;否则取 x=0 Y-箱子的水平位置 z-当猴子摘到香蕉时取 z=1;否则取 z=0 这个问题中的操作(算符)如下: 1、goto(U)猴子走到水平位置 U,表示为 Goto (U) (W,0,Y,z) -------------->(U ,0 ,Y ,z) 即把状态(W,0,Y,z)变换为状态(U,0,Y,z)
2、pushbox(V)猴子把箱子推到水平位置 V,即有 Pushbox (V) (W,0,W,z)---------------->(V ,0 ,V ,z ) 条件:猴子与箱子必须在同一位置上,并且,猴子不是在箱子顶上
应当注意的是,要应用算符 pushbox(V),就要求 产生式规则的左边,猴子与箱子必须在同一位置上,并且,猴子不是在箱子顶上
这种强加于操作的适用性条件,叫做产生式规则的先决条件 3、climbbox 猴子爬上箱顶,即有 Climbbox (W,0,W,z)------------------>(W,1,W,z) 条件:猴子和箱子应当在同一位置上,而且猴子不在箱顶上
4、grasp 猴子摘到香蕉,即有 Grasp (c,1,c,0) ------------------->(c,1,c,1) 条件:猴子和箱子都在位置 c 上,并且猴子已在箱子顶上
求解过程 令初始状态为(a,0,b,0)
这时,goto(U)是唯一适用的操作,并导致下一状态(U,0,b,0)
现在有3 个适用的操作,即 goto(U),p