1、猴子摘香 蕉问 题 的宽度优 先搜 索和 最大深 度为 5 的有界深 度优 先搜 索 ( 注 意: 括号中 的斜体 字是 我做 的说明 ,不 是答 案的 内 容 ) 解: 设 一个状态 由四元组 (W , X, Y , Z )来 表示,其 中 : 1. W 代表猴子的 位置,其 取值可 为 a ,b 和 c ; 2. X 代表猴子 和箱子的 位置关 系,取值 为 0 和 1 ,其中 0 表示猴子在箱 子下, 而 1 表示猴子 在箱子上 面; 3. Y 代表箱子的位 置,其取 值可为 a ,b 和 c ; 4. Z 代表是 否摘得香 蕉,取值 为 0 和 1,其 中 0 表示未 摘得香蕉而 1
2、表 示已经 摘到了香 蕉。 则本问题的 初始状态 为 (a ,0 ,c ,0 ) , 而目标 状态为 (b ,1 ,b ,1 )( 注意: 目标状态写为 (U,V,H,1 ) 也可以,因 为 我们只关心摘到香蕉) 。 本问题中涉 及的算符 有四个, 分别为 1. 移动:Goto (U), 其中 U 可取 a ,b 和 c ,其 执行条 件为 X 0 ( 即猴子不在箱子上) ,其 效果如下式 ( ,0, , )goto( )( ,0, , ) W YZ U U YZ ,其中 ,U a ,b ,c 且UW ( 注意: 加UW 是为了减少后面状态 图 中节 点到自身的弧;( ,0, , )goto(
3、 )( ,0, , ) W YZ U U YZ 表示在状态 ( ,0, , ) W YZ 上执行 Goto (U ) 操作, 使得原状态变 为状态 ( ,0, , ) U YZ ) 2. 推箱子:Pushbox(U) ,其中 U 可取 a ,b 和 c ,其执 行 条件为 W Y ( 猴子和箱子在同一个位置)且 X 0 ( 猴子 不在箱子上) ,其效 果如下式 ( ,0, , )Pushbox( )( ,0, , ) V VZ U U UZ ,其中 U, V a ,b ,c,且UV (注意:加UV 的作用同上UW ) 3. 攀爬:Climb,其执行 条件为 W=Y ( 猴子和箱子在同一个位置)
4、且 X 0 ( 猴子不在箱子上 ) ,其效果 如下 ( ,0, , )Climb( ,1, , ) U UZ U UZ ,其中 U a ,b 或 c 4. 摘香蕉:Grasp , 其执行条 件为 W Y b ( 猴子和箱 子 都在 b 位置 ), X=1 ( 猴子在箱子上)且 Z 0 ( 猴子未摘 得香蕉 ) ,其效果 如下 ( ,1, ,0)Grasp( ,1, ,1) bb bb 。 设在同一状态 下,检查 并应用可 应用的必 要算符的次 序如下:goto(a), goto(b), goto(c), pushbox(a), pushbox(b), pushbox(c), climb, gr
5、asp. 则宽度优先 搜索树如 下图所示 ,其中状 态左上角 的数 字代表该状 态被扩展 的顺序( 是“生孩子”的顺序而 不是 “出生”的顺序) : (标号为 2 的状态是第二个被扩展的, 但是在 该状态 下,goto(b), push 的 3 个算符,climb 和 grasp 不满足应用 条件,而 应用 goto(a) 和 goto(c) 产生重复的状态, 所以在该状态下,没有可以被应用并且 需要被应用的 算符, 结果是:虽然扩展了该状态,但是该状 态没有任何“ 儿子” 。标号为 6 ,7 ,8 ,9 ,10 ,11 的状态也一样 ) 使用最大深 度为 5 的有 界深度优 先搜索算 法形成的 搜 索树如下图 所示: ( 附送一个,作业中没有要去大家 画 )