人工智能原理与应用_(张仰森_著)_高等教育出版社_课后答案
- 格式:wps
- 大小:12.22 MB
- 文档页数:10
2.7解:根据谓词知识表示的步骤求解问题如下:
解法一:
(1)本问题涉及的常量定义为:
猴子:Monkey,箱子:Box,香蕉:Banana,位置:a,b,c
(2)定义谓词如下:
SITE(x,y):表示x在y处;
HANG(x,y):表示x悬挂在y处;
ON(x,y):表示x站在y上;
HOLDS(y,w):表示y手里拿着w。
(3)根据问题的描述将问题的初始状态和目标状态分别用谓词公式表示如下:
问题的初始状态表示:
SITE(Monkey,a)∧HANG(Banana,b)∧SITE(Box,c)∧~ON(Monkey,Box)∧~HOLDS(Monkey,Banana)
问题的目标状态表示:
SITE(Monkey,b)∧~HANG(Banana,b)∧SITE(Box,b)
∧ON(Monkey,Box)∧HOLDS(Monkey,Banana)
解法二:
(1)本问题涉及的常量定义为:
猴子:Monkey,箱子:Box,香蕉:Banana,位置:a,b,c
(2)定义谓词如下:
SITE(x,y):表示x在y处;
ONBOX(x):表示x站在箱子顶上;
HOLDS(x):表示x摘到了香蕉。
(3)根据问题的描述将问题的初始状态和目标状态分别用谓词公式表示如下:
问题的初始状态表示:
SITE(Monkey,a)∧SITE(Box,c)∧~ONBOX(Monkey)∧~HOLDS(Monkey)
问题的目标状态表示:
SITE(Box,b)∧SITE(Monkey,b)∧ONBOX(Monkey)∧HOLDS(Monkey)
从上述两种解法可以看出,只要谓词定义不同,问题的初始状态和目标状态就不同。所以,对于同样的知识,不同的人的表示结果可能不同。
2.8解:本问题的关键就是制定一组操作,将初始状态转换为目标状态。为了用谓词公式表示操作,可将操作分为条件(为完成相应操作所必须具备的条件)和动作两部分。条件易于用谓词公式表示,而动作则可通过执行该动作前后的状态变化表示出来,即由于动作的执行,当前状态中删去了某些谓词公式而又增加一些谓词公式从而得到了新的状态,通过这种不同状态中谓词公式的增、减来描述动作。
定义四个操作的谓词如下,操作的条件和动作可用谓词公式的增、删表示:
(1)goto 条件:SITE(Monkey,x) 动作:删除SITE(Monkey,x);增加SITE(Monkey,y) (2)pushbox (x,y):将箱子从x处推到y处。 条件:SITE(Monkey,x)∧SITE(Box,x)∧~ONBOX(Monkey) 动作:删除SITE(Monkey,x),SITE(Box,x);增加SITE(Monkey,y),SITE(Box,y) (3)climbbox:爬到箱子顶上。 条件:~ONBOX(Monkey) 动作:删除~ONBOX(Monkey);增加ONBOX(Monkey) (4)grasp:摘下香蕉。 条件:~HOLDS(Monkey) ∧ONBOX(Monkey) ∧SITE(Monkey,b) 动作:删除~HOLDS(Monkey);增加HOLDS(Monkey) 在执行某一操作前,先检查当前状态是否满足其前提条件。若满足,则执行该操作。 否则,检查另一操作的条件是否被满足。检查的方法就是当前的状态中是否蕴含了操作所要求的条件。在定义了操作谓词后,就可以给出从初始状态到目标状态的求解过程。在求解过程中,当进行条件检查时,要进行适当的变量代换。 SITE(Monkey,a) SITE(Box,c) ~ONBOX(Monkey) ~HOLDS(Monkey) ⇓goto(x,y),用a代x,用c代y SITE(Monkey,c) SITE(Box,c) ~ONBOX(Monkey) ~HOLDS(Monkey) ⇓ pushbox(x,y),用c代x,用b代y SITE(Monkey,b) SITE(Box,b) ~ONBOX(Monkey) ~HOLDS(Monkey) ⇓climbbox SITE(Monkey,b) SITE(Box,b) ONBOX(Monkey) ~HOLDS(Monkey) ⇓grasp SITE(Monkey,b) SITE(Box,b) ONBOX(Monkey) HOLDS(Monkey) 2.12 解:首先建立棋盘变换的产生式规则。如果把棋盘的每一种布局看做是一个状态矩阵,本题就变成了从初始状态矩阵到目标状态矩阵的一种变化。 所谓棋盘状态的变化就是希望棋盘上空格周围的棋子能走进空格,这也可以理解为移动空格,只要实现空格的上、下、左、右四种移动即可。可通过建立四个条件一操作型的产生式规则,来实现这四种移动。 设Sij为状态矩阵中的第i行和第j列的数码,i0、j0表示空格所在的行和列,如果在状态矩阵中用0来表示空格的话,则建立如下四条产生式规则: R1:if (jo – 1≥1) then begin Siojo: = Sio(jo-1); Sio(jo-1): =0 end 空格左移 R2:if (io – 1≥1) then begin Siojo: = S(io-l)jo; S(io-l)jo: =0 end