1、1第 2 章 知识表示方法部分参考答案2.8 设有如下语句,请用相应的谓词公式分别把他们表示出来:(1) 有的人喜欢梅花,有的人喜欢菊花,有的人既喜欢梅花又喜欢菊花 。解:定义谓词P(x):x 是人L(x,y):x 喜欢 y其中,y 的个体域是梅花,菊花 。将知识用谓词表示为:( x )(P(x) (L(x, 梅花)L(x, 菊花) L(x, 梅花)L(x, 菊花)(2) 有人每天下午都去打篮球。解:定义谓词P(x):x 是人B(x):x 打篮球A(y):y 是下午将知识用谓词表示为:( x )( y) (A(y) B(x)P(x)(3) 新型计算机速度又快,存储容量又大。解:定义谓词NC(x
2、):x 是新型计算机F(x):x 速度快B(x):x 容量大将知识用谓词表示为:( x) (NC(x)F(x)B(x)(4) 不是每个计算机系的学生都喜欢在计算机上编程序。解:定义谓词S(x):x 是计算机系学生L(x, pragramming):x 喜欢编程序U(x,computer):x 使用计算机将知识用谓词表示为: ( x) (S(x)L(x, pragramming)U(x,computer)(5) 凡是喜欢编程序的人都喜欢计算机。解:定义谓词P(x):x 是人L(x, y):x 喜欢 y将知识用谓词表示为:( x) (P(x)L(x,pragramming)L(x, compute
3、r)22.9 用谓词表示法求解机器人摞积木问题。设机器人有一只机械手,要处理的世界有一张桌子,桌上可堆放若干相同的方积木块。机械手有 4 个操作积木的典型动作:从桌上拣起一块积木;将手中的积木放到桌之上;在积木上再摞上一块积木;从积木上面拣起一块积木。积木世界的布局如下图所示。解:(1) 先定义描述状态的谓词CLEAR(x):积木 x 上面是空的。 ON(x, y):积木 x 在积木 y 的上面。ONTABLE(x):积木 x 在桌子上。HOLDING(x):机械手抓住 x。HANDEMPTY:机械手是空的。其中,x 和 y 的个体域都是A, B, C。问题的初始状态是:ONTABLE(A)O
4、NTABLE(B)ON(C, A)CLEAR(B)CLEAR(C)HANDEMPTY问题的目标状态是:ONTABLE(C)ON(B, C)ON(A, B)CLEAR(A) HANDEMPTY(2) 再定义描述操作的谓词在本问题中,机械手的操作需要定义以下 4 个谓词: Pickup(x):从桌面上拣起一块积木 x。 Putdown(x):将手中的积木放到桌面上。Stack(x, y):在积木 x 上面再摞上一块积木 y。Upstack(x, y):从积木 x 上面拣起一块积木 y。其中,每一个操作都可分为条件和动作两部分,具体描述如下: Pickup(x)条件:ONTABLE(x),HANDE
5、MPTY,CLEAR(x)图 机器人摞积木问题CA BABC3动作:删除表:ONTABLE(x),HANDEMPTY添加表:HANDEMPTY(x)Putdown(x)条件:HANDEMPTY(x)动作:删除表:HANDEMPTY(x)添加表:ONTABLE(x),CLEAR(x) ,HANDEMPTYStack(x, y)条件:HANDEMPTY(x),CLEAR(y)动作:删除表:HANDEMPTY(x),CLEAR(y)添加表:HANDEMPTY,ON(x, y) ,CLEAR(x)Upstack(x, y)条件:HANDEMPTY,CLEAR(y) ,ON(y,x)动作:删除表:HAN
6、DEMPTY,ON(y, x)添加表:HOLDING(y),CLEAR(x)(3) 问题求解过程利用上述谓词和操作,其求解过程为:2.10 用谓词表示法求解农夫、狼、山羊、白菜问题。农夫、狼、山羊、白菜全部放在一条河的左岸,现在要把他们全部送到河的右岸去,农夫有一条船,过河时,除农夫外船上至多能载狼、山羊、白菜中的一种。狼要吃山羊,山羊要吃白菜,除非农夫在那里。似规划出一个确保全部安全过河的计划。请写出所用谓词的定义,并给出每个谓词的功能及变量的个体域。解:(1) 先定义描述状态的谓词要描述这个问题,需要能够说明农夫、狼、羊、白菜和船在什么位置,为简化问题表示,取消船在河中行驶的状态,只描述左
7、岸和右岸的状态。并且,由于左岸和右岸的状态互补,因此可仅对左岸或右岸的状态做直接描述。本题选择对左岸进行直接描述的方法,即定义谓词如下:AL(x):x 在左岸ONTABLE(A) ONTABLE(B)ON(C, A)CLEAR(B)CLEAR(C) HANDEMPTYUpstack(A,C)ONTABLE(A)ONTABLE(B) HOLDING(C)CLEAR(A)CLEAR(B)CLEAR(C)Putdown(C)ONTABLE(A)ONTABLE(B)ONTABLE(C)CLEAR(A)CLEAR(B)CLEAR(C)HANDEMPTYPickup(A)ONTABLE(A)ONTABLE
8、(C)HOLDING(B)CLEAR(A)CLEAR(B)CLEAR(C)Stack(C,B)ONTABLE(A)ONTABLE(C)ON(B,C)CLEAR(A)CLEAR(B)HANDEMPTYONTABLE(C)ON(B,C)CLEAR(A)CLEAR(B)HOLDING(A)Stack(B,A)ONTABLE(C)ON(B,C)ON(A,B)CLEAR(A)HANDEMPTPickup(B)4其中,x 的个体域是农夫,船,狼,羊,白菜 。对应地,AL(x)表示 x 在右岸。问题的初始状态:AL(农夫)AL(船)AL(狼)AL(羊)AL(白菜)问题的目标状态:AL(农夫)AL(船)AL(
9、狼)AL(羊)AL(白菜)(2) 再定义描述操作的谓词本题需要以下 4 个描述操作的谓词:L-R:农夫自己划船从左岸到右岸L-R(x):农夫带着 x 划船从左岸到右岸R-L:农夫自己划船从右岸到左岸R-L(x) :农夫带着 x 划船从右岸到左岸其中,x 的个体域是狼,羊,白菜 。对上述每个操作,都包括条件和动作两部分。它们对应的条件和动作如下:L-R:农夫划船从左岸到右岸条件:AL(船) ,AL(农夫),AL(狼) AL( 羊) ,AL( 羊) AL(白菜)动作:删除表:AL(船) ,AL(农夫)添加表:AL(船) ,AL(农夫)L-R(狼):农夫带着狼划船从左岸到右岸条件:AL(船) ,AL
10、(农夫),AL(狼) ,AL( 羊)动作:删除表:AL(船) ,AL(农夫),AL(狼)添加表:AL(船) ,AL(农夫),AL(狼)L-R(羊):农夫带着羊划船从左岸到右岸条件:AL(船) ,AL(农夫),AL(羊) , AL(狼) ,AL( 白菜)或:AL(船) ,AL(农夫),AL(羊) ,AL( 狼) ,AL( 白菜)动作:删除表:AL(船) ,AL(农夫),AL(羊)添加表:AL(船) ,AL(农夫),AL(羊)L-R(白菜 ):农夫带着白菜划船从左岸到右岸条件:AL(船) ,AL(农夫),AL(白菜) ,AL( 狼) 动作:删除表:AL(船) ,AL(农夫),AL(白菜)添加表:A
11、L(船) ,AL(农夫),AL(白菜)R-L:农夫划船从右岸到左岸条件:AL(船) ,AL(农夫),AL(狼) AL( 羊) ,AL( 羊) AL(白菜)5或:AL(船) ,AL(农夫) ,AL(狼) ,AL( 白菜) ,AL( 羊)动作:删除表:AL(船) ,AL(农夫)添加表:AL(船) ,AL(农夫)R-L(羊) :农夫带着羊划船从右岸到左岸条件:AL(船) ,AL(农夫),AL(羊) ,AL( 狼) ,AL( 羊) , AL(白菜)动作:删除表:AL(船) ,AL(农夫),AL(羊)添加表:AL(船) ,AL(农夫),AL(羊)(3) 问题求解过程AL(农夫)AL(船)AL(狼)AL(
12、羊)AL(白菜)2.11 用谓词表示法求解修道士和野人问题。在河的北岸有三个修道士、三个野人和一条船,修道士们想用这条船将所有的人都运过河去,但要受到以下条件限制:(1) 修道士和野人都会划船,但船一次只能装运两个人。(2) 在任何岸边,野人数不能超过修道士,否则修道士会被野人吃掉。假定野人愿意服从任何一种过河安排,请规划出一种确保修道士安全的过河方案。要求写出所用谓词的定义、功能及变量的个体域。解:(1)定义谓词先定义修道士和野人人数关系的谓词:G(x,y,S): 在状态 S 下 x 大于 yGE(x,y,S):在状态 S 下 x 大于或等于 y其中,x,y 分别代表修道士人数和野人数,他们
13、的个体域均为0,1,2,3。再定义船所在岸的谓词和修道士不在该岸上的谓词:Boat(z,S):状态 S 下船在 z 岸EZ(x,S): 状态 S 下 x 等于 0,即修道士不在该岸上其中,z 的个体域是 L,R,L 表示左岸,R 表示右岸。再定义安全性谓词:Safety(z,x,y,S)(G(x,0,S) GE(x,y,S)(EZ(x,S)其中,z,x,y 的含义同上。该谓词的含义是:状态 S 下,在 z 岸,保证修道士安全,当且仅当修道士不在该岸上,或者修道士在该岸上,但人数超过野人数。该谓词同时也描述了相应的状态。再定义描述过河方案的谓词:L-R(x, x1, y, y1,S):x1 个修
14、道士和 y1 个野人渡船从河的左岸到河的右岸L-R(羊)AL(狼)AL(白菜)AL(农夫)AL(船)AL(羊)R-L AL(农夫)AL(船)AL(狼)AL(白菜)AL(羊)AL(农夫)AL(船)AL(羊)AL(白菜)AL(狼)L-R(狼) R-L(羊) AL(白菜)AL(农夫)AL(船)AL(狼)AL(羊)L-R(白菜)AL(羊)AL(农夫)AL(船)AL(白菜)AL(狼)R-L AL(农夫)AL(船)AL(羊)AL(白菜)AL(狼)L-R(羊) AL(农夫)AL(船)AL(羊)AL(白菜)AL(狼)6条件:Safety(L,x-x1,y-y1,S)Safety(R,3-x+x1,3-y+y1
15、,S)Boat(L,S)动作:Safety(L,x-x1,y-y1,S)Safety(R,3-x+x1,3-y+y1,S)Boat(R,S)R-L (x, x1, y, y1,S):x2 个修道士和 y2 个野人渡船从河的左岸到河的右岸条件:Safety(R,3-x-x2,3-y-y2,S) Safety(L,x+x2,y+y2,S)Boat(R,S)动作:Safety(R,3-x-x2,3-y-y2,S) Safety(L,x+x2,y+y2,S)Boat(L,S)(2) 过河方案Safety(L,3,3,S0)Safety(R,0,0,S0)Boat(L,S0)L-R(3, 1, 3, 1
16、,S0) L-R(3, 0, 3, 2,S0)Safety(L,2,2,S1)Safety(R,1,1,S1)Boat(R,S1)Safety(L,3,1,S1)Safety(R,0,2,S1)Boat(R,S1)R-L (2, 1, 2, 0,S1) R-L (3,0, 1, 1,S1)Safety(L,3,2,S2)Safety(R,0,1,S2)Boat(L,S2)L-R(3, 0, 2, 2,S2)Safety(L,3,0,S3)Safety(R,0,3,S3)Boat(R,S3)R-L (3, 0, 0, 1,S3)Safety(L,3,1,S4)Safety(R,0,2,S1)Bo
17、at(L,S4)L-R(3, 2, 1, 0,S4)Safety(L,1,1,S5)Safety(R,2,2,S5)Boat(R,S5)R-L (1, 1, 1, 1,S5)Safety(L,2,2,S6)Safety(R,1,1,S6)Boat(L,S6)L-R(2, 2, 2, 0,S6)Safety(L,0,2,S7)Safety(R,3,1,S7)Boat(R,S7)R-L (0, 0, 2, 1,S7)Safety(L,0,3,S8)Safety(R,3,0,S8)Boat(L,S8)L-R(0, 0, 3, 2,S8)Safety(L,0,1,S9)Safety(R,3,2,S9)
18、Boat(R,S9)R-L (0, 1, 1, 0,S9)Safety(L,1,1,S10)Safety(R,2,2,S10) Boat(L,S10)L-R(1, 1, 1, 1,S10)Safety(L,0,0,S11)Safety(R,3,3,S11) Boat(R,S11)2.18 请对下列命题分别写出它们的语义网络:(1) 每个学生都有一台计算机。解:GSg s o c学生 占有权 计算机Owner OwnsFgISA ISAAKO7(2) 高老师从 3 月到 7 月给计算机系学生讲计算机网络课。解:(3) 学习班的学员有男、有女、有研究生、有本科生。解:参例 2.14(4) 创新公司
19、在科海大街 56 号,刘洋是该公司的经理,他 32 岁、硕士学位。解:参例 2.10(5) 红队与蓝队进行足球比赛,最后以 3:2 的比分结束。解:2.19 请把下列命题用一个语义网络表示出来:(1) 树和草都是植物;解:(2) 树和草都有叶和根;解:ISA讲课事件高老师老师 Subject 计算机系学生Object7 月 8 月Start End讲课 计算机网络Action Caurse足球赛比赛AKO红队蓝队3:22Participants1Participants 2Outcome植物草树AKO AKO草树是一种 是一种植物叶 根Have Have8(3) 水草是草,且生长在水中;解:(
20、4) 果树是树,且会结果;解:(5) 梨树是果树中的一种,它会结梨。解:2.25 假设有以下一段天气预报:“北京地区今天白天晴,偏北风 3 级,最高气温 12,最低气温-2,降水概率 15%。 ”请用框架表示这一知识。解:Frame地域:北京时段:今天白天天气:晴风向:偏北风力:3 级气温:最高:12 度最低:-2 度降水概率:15%2.26 按“师生框架” 、 “教师框架” 、 “学生框架”的形式写出一个框架系统的描述。解:师生框架Frame Name:Unit(Last-name ,First-name)Sex:Area(male,female)Default:maleAge:Unit(Y
21、ears)Telephone:Home Unit(Number)Mobile Unit(Number )草 水草 水中AKO Live植物AKO树 果树 结果AKO Can植物AKO果树 梨树 结梨AKO Can树AKO9教师框架Frame AKOMajor:Unit (Major-Name)Lectures:Unit(Course-Name)Field:Unit(Field-Name)Project :Area (National ,Provincial,Other )Default:ProvincialPaper:Area(SCI ,EI ,Core ,General )Default:C
22、ore 学生框架Frame AKOMajor:Unit (Major-Name)Classes:Unit(Classes-Name)Degree:Area(doctor ,mastor, bachelor)Default:bachelor第 3 章确定性推理部分参考答案3.8 判断下列公式是否为可合一,若可合一,则求出其最一般合一。(1) P(a, b), P(x, y)(2) P(f(x), b), P(y, z)(3) P(f(x), y), P(y, f(b)(4) P(f(y), y, x), P(x, f(a), f(b)(5) P(x, y), P(y, x)解:(1) 可合一,其
23、最一般和一为:=a/x, b/y。(2) 可合一,其最一般和一为:=y/f(x), b/z。(3) 可合一,其最一般和一为:= f(b)/y, b/x。(4) 不可合一。(5) 可合一,其最一般和一为:= y/x 。3.11 把下列谓词公式化成子句集:(1) ( x)( y)(P(x, y)Q(x, y)(2) ( x)( y)(P(x, y)Q(x, y)(3) ( x)( y)(P(x, y)(Q(x, y)R(x, y)(4) ( x) ( y) ( z)(P(x, y)Q(x, y) R(x, z)解:(1) 由于( x)( y)(P(x, y)Q(x, y)已经是 Skolem 标准
24、型,且 P(x, y)Q(x, y)已经是合取范式,10所以可直接消去全称量词、合取词,得 P(x, y), Q(x, y)再进行变元换名得子句集:S= P(x, y), Q(u, v)(2) 对谓词公式( x)( y)(P(x, y)Q(x, y),先消去连接词“”得:( x)( y)(P(x, y)Q(x, y)此公式已为 Skolem 标准型。再消去全称量词得子句集:S=P(x, y)Q(x, y)(3) 对谓词公式( x)( y)(P(x, y)(Q(x, y) R(x, y),先消去连接词“”得:( x)( y)(P(x, y)(Q(x, y) R(x, y)此公式已为前束范式。再消
25、去存在量词,即用 Skolem 函数 f(x)替换 y 得:( x)(P(x, f(x) Q(x, f(x)R(x, f(x)此公式已为 Skolem 标准型。最后消去全称量词得子句集:S=P(x, f(x)Q(x, f(x)R(x, f(x)(4) 对谓词( x) ( y) ( z)(P(x, y)Q(x, y)R(x, z),先消去连接词“”得:( x) ( y) ( z)(P(x, y)Q(x, y)R(x, z)再消去存在量词,即用 Skolem 函数 f(x)替换 y 得:( x) ( y) (P(x, y)Q(x, y) R(x, f(x,y)此公式已为 Skolem 标准型。最后
26、消去全称量词得子句集:S=P(x, y)Q(x, y) R(x, f(x,y)3-13 判断下列子句集中哪些是不可满足的:(1) PQ, Q, P, P(2) PQ , PQ, PQ, PQ (3) P(y)Q(y) , P(f(x)R(a)(4) P(x)Q(x) , P(y)R(y), P(a), S(a), S(z)R(z)(5) P(x)Q(f(x),a) , P(h(y) Q(f(h(y), a)P(z)(6) P(x)Q(x) R(x) , P(y)R(y), Q(a), R(b)解:(1) 不可满足,其归结过程为:PQ QP PNIL11(2) 不可满足,其归结过程为:(3) 不
27、是不可满足的,原因是不能由它导出空子句。(4) 不可满足,其归结过程略(5) 不是不可满足的,原因是不能由它导出空子句。(6) 不可满足,其归结过程略3.14 对下列各题分别证明 G 是否为 F1,F2,Fn 的逻辑结论:(1) F: ( x)( y)(P(x, y)G: ( y)( x)(P(x, y)(2) F: ( x)(P(x)(Q(a)Q(b)G: ( x) (P(x)Q(x)(3) F: ( x)( y)(P(f(x)(Q(f(y)G: P(f(a)P(y)Q(y)(4) F1: ( x)(P(x)( y)(Q(y) L(x.y)F2: ( x) (P(x)( y)(R(y)L(x
28、.y)G: ( x)(R(x) Q(x)(5) F1: ( x)(P(x)(Q(x)R(x)F2: ( x) (P(x)S(x)G: ( x) (S(x)R(x)解:(1) 先将 F 和G 化成子句集:S=P(a,b), P(x,b)再对 S 进行归结:a/x所以,G 是 F 的逻辑结论(2) 先将 F 和G 化成子句集由 F 得: S1=P(x),(Q(a)Q(b)由于G 为: ( x) (P(x)Q(x),即( x) ( P(x) Q(x) ,可得: S2= P(x) Q(x) 因此,扩充的子句集为:S= P(x),(Q(a)Q(b), P(x) Q(x)再对 S 进行归结:a/bPQ P
29、QQPQ PQQNILP(a,b) P(x,b)NILQ(a)Q(b)Q(a) P(x) Q(x)12a/xa/x所以,G 是 F 的逻辑结论同理可求得(3)、(4) 和(5),其求解过程略。 3.15 设已知:(1) 如果 x 是 y 的父亲,y 是 z 的父亲,则 x 是 z 的祖父;(2) 每个人都有一个父亲。使用归结演绎推理证明:对于某人 u,一定存在一个人 v,v 是 u 的祖父。解:先定义谓词F(x,y):x 是 y 的父亲GF(x,z):x 是 z 的祖父P(x):x 是一个人再用谓词把问题描述出来:已知 F1:( x) ( y) ( z)( F(x,y)F(y,z)GF(x,z
30、)F2:( y)(P(x)F(x,y) 求证结论 G:( u) ( v)( P(u)GF(v,u) 然后再将 F1,F2 和G 化成子句集: F(x,y)F(y,z)GF(x,z) P(r)F(s,r) P(u) GF(v,u)对上述扩充的子句集,其归结推理过程如下:x/v,z/ux/s,y/ry/s,z/ry/z P(a) P(x)NILF(x,y)F(y,z) GF(x,z)GF(v,u)F(x,y)F(y,z)P(r) F(s,r)F(y,z)P(y)P(r) F(s,r)P(y)P(z)P(y)P(u)NIL13y/u由于导出了空子句,故结论得证。3.16 假设张被盗,公安局派出 5
31、个人去调查。案情分析时,贞察员 A 说:“赵与钱中至少有一个人作案” ,贞察员 B 说:“钱与孙中至少有一个人作案 ”,贞察员 C 说: “孙与李中至少有一个人作案” ,贞察员 D 说:“赵与孙中至少有一个人与此案无关” ,贞察员 E 说:“ 钱与李中至少有一个人与此案无关” 。如果这 5 个侦察员的话都是可信的,使用归结演绎推理求出谁是盗窃犯。解:(1) 先定义谓词和常量设 C(x)表示 x 作案,Z 表示赵,Q 表示钱,S 表示孙,L 表示李(2) 将已知事实用谓词公式表示出来赵与钱中至少有一个人作案:C(Z)C(Q)钱与孙中至少有一个人作案:C(Q)C(S)孙与李中至少有一个人作案:C(
32、S)C(L)赵与孙中至少有一个人与此案无关: (C (Z)C(S),即 C (Z) C(S)钱与李中至少有一个人与此案无关: (C (Q)C(L) ,即 C (Q) C(L)(3) 将所要求的问题用谓词公式表示出来,并与其否定取析取。设作案者为 u,则要求的结论是 C(u)。将其与其否) 取析取,得: C(u) C(u)(4) 对上述扩充的子句集,按归结原理进行归结,其修改的证明树如下:Q/u 因此,钱是盗窃犯。实际上,本案的盗窃犯不止一人。根据归结原理还可以得出:C(Z)C(Q) C (Z) C(S)C(Q)C(S) C(Q)C(S)C(Q) C(u)C(u)C(Q)C(S)C(L) C (
33、Q) C(L)C(S)C(Q) C(Q)C(S)C(S) C(u)C(u)C(S)14S/u 因此,孙也是盗窃犯。3.18 设有子句集:P(x)Q(a, b), P(a) Q(a, b), Q(a, f(a), P(x)Q(x, b)分别用各种归结策略求出其归结式。解:支持集策略不可用,原因是没有指明哪个子句是由目标公式的否定化简来的。删除策略不可用,原因是子句集中没有没有重言式和具有包孕关系的子句。单文字子句策略的归结过程如下:b/f(a)a/xb/f(a)用线性输入策略(同时满足祖先过滤策略)的归结过程如下:a/xa/xb/f(a)3.19 设已知:(1) 能阅读的人是识字的;(2) 海豚
34、不识字;(3) 有些海豚是很聪明的。请用归结演绎推理证明:有些很聪明的人并不识字。解:第一步,先定义谓词, 设 R(x)表示 x 是能阅读的;C(S)P(x)Q(a, b) P(a) Q(a, b)P(a) P(x)Q(x, b)Q(a,b) Q(a, f(a)NILP(x)Q(a, b) Q(a, f(a)P(a) P(x)Q(x, b)Q(a, b) Q(a, f(a)Q(a, b)15K(y)表示 y 是识字的;W(z) 表示 z 是很聪明的;第二步,将已知事实和目标用谓词公式表示出来能阅读的人是识字的:( x)(R(x)K(x)海豚不识字:( y)(K (y)有些海豚是很聪明的:( z
35、) W(z)有些很聪明的人并不识字:( x)( W(z)K(x) )第三步,将上述已知事实和目标的否定化成子句集:R(x)K(x)K (y)W(z)W(z)K(x) )第四步,用归结演绎推理进行证明3.20 对子句集:PQ, QR, RW, R P, W Q, Q R 用线性输入策略是否可证明该子句集的不可满足性?解:用线性输入策略不能证明子句集PQ, QR, RW, R P, W Q, Q R 的不可满足性。原因是按线性输入策略,不存在从该子句集到空子句地归结过程。3.21 对线性输入策略和单文字子句策略分别给出一个反例,以说明它们是不完备的。3.22 分别说明正向、逆向、双向与/或形演绎推
36、理的基本思想。3.23 设已知事实为(PQ)R) (S(TU)F 规则为S(XY)Z试用正向演绎推理推出所有可能的子目标。解:先给出已知事实的与/或树,再利用 F 规则进行推理,其规则演绎系统如下图所示。由该图可以直接写出所有可能的目标子句如下:P Q W(z)K(x) W(z)K(z) W(z)NIL16P Q P QYRTU RXZRYZ 3.24 设有如下一段知识:“张、王和李都属于高山协会。该协会的每个成员不是滑雪运动员,就是登山运动员,其中不喜欢雨的运动员是登山运动员,不喜欢雪的运动员不是滑雪运动员。王不喜欢张所喜欢的一切东西,而喜欢张所不喜欢的一切东西。张喜欢雨和雪。 ”试用谓词公
37、式集合表示这段知识,这些谓词公式要适合一个逆向的基于规则的演绎系统。试说明这样一个系统怎样才能回答问题:“高山俱乐部中有没有一个成员,他是一个登山运动员,但不是一个滑雪运动员?”解:(1) 先定义谓词A(x) 表示 x 是高山协会会员S(x) 表示 x 是滑雪运动员C(x) 表示 x 是登山运动员L(x,y) 表示 x 喜欢 y (PQ) R) (S(T U)(PQ) R) (S(T U)(PQ) RP QS TUT USXY ZX YP Q R X Y Z T U已知事实所有目标所有目标所有目标F规则 已知事实所有子目标17(2) 将问题用谓词表示出来“张、王和李都属于高山协会A(Zhang
38、)A(Wang)A(Li)高山协会的每个成员不是滑雪运动员,就是登山运动员( x)(A(x)S(x)C(x)高山协会中不喜欢雨的运动员是登山运动员( x)(L(x, Rain)C(x) )高山协会中不喜欢雪的运动员不是滑雪运动员( x)(L(x, Snow) S(x)王不喜欢张所喜欢的一切东西( y)( L(Zhang, y) L(Wang ,y)王喜欢张所不喜欢的一切东西( y)( L(Zhang, y)L(Wang, y)张喜欢雨和雪L(Zhang , Rain) L(Zhang , Snow)(3) 将问题要求的答案用谓词表示出来高山俱乐部中有没有一个成员,他是一个登山运动员,但不是一个
39、滑雪运动员?( x)( A(x)C(x) S(x)(4) 为了进行推理,把问题划分为已知事实和规则两大部分。假设,划分如下:已知事实:A(Zhang)A(Wang)A(Li)L(Zhang , Rain) L(Zhang , Snow)规则:( x)(A(x)S(x)C(x)( x)(L(x, Rain)C(x) )( x)(L(x, Snow) S(x)( y)( L(Zhang, y) L(Wang ,y)( y)( L(Zhang, y)L(Wang, y)(5) 把已知事实、规则和目标化成推理所需要的形式事实已经是文字的合取形式:f1: A(Zhang)A(Wang)A(Li)f2:
40、L (Zhang , Rain)L(Zhang , Snow)将规则转化为后件为单文字的形式:r1: A(x) S(x)C(x)r2: L(x, Rain)C(x)r3: L(x, Snow) S(x)r4: L(Zhang, y) L(Wang ,y)r5: L(Zhang, y)L(Wang , y)将目标公式转换为与/或形式 A(x)(C(x) S(x)18(6) 进行逆向推理逆向推理的关键是要能够推出 L(Zhang , Rain)L(Zhang , Snow),其逆向演绎过程如下图所示。第 4 章 搜索策略部分参考答案4.5 有一农夫带一条狼,一只羊和一框青菜与从河的左岸乘船倒右岸,
41、但受到下列条件的限制:(1) 船太小,农夫每次只能带一样东西过河;(2) 如果没有农夫看管,则狼要吃羊,羊要吃菜。请设计一个过河方案,使得农夫、浪、羊都能不受损失的过河,画出相应的状态空间图。题示:(1) 用四元组(农夫,狼,羊,菜)表示状态,其中每个元素都为 0 或 1,用 0 表示在左岸,用1 表示在右岸。(2) 把每次过河的一种安排作为一种操作,每次过河都必须有农夫,因为只有他可以划船。解:第一步,定义问题的描述形式用四元组 S=(f ,w,s,v)表示问题状态,其中,f,w,s 和 v 分别表示农夫,狼,羊和青菜是否在左岸,它们都可以取 1 或 0,取 1 表示在左岸,取 0 表示在右
42、岸。第二步,用所定义的问题状态表示方式,把所有可能的问题状态表示出来,包括问题的初始状态和目标状态。由于状态变量有 4 个,每个状态变量都有 2 种取值,因此有以下 16 种可能的状态:S0=(1,1,1,1),S 1=(1,1,1,0),S 2=(1,1,0,1),S 3=(1,1,0,0)S4=(1,0,1,1),S 5=(1,0,1,0),S 6=(1,0,0,1),S 7=(1,0,0,0)S8=(0,1,1,1),S 9=(0,1,1,0),S 10=(0,1,0,1),S 11=(0,1,0,0)S12=(0,0,1,1),S 13=(0,0,1,0),S 14=(0,0,0,1)
43、,S 15=(0,0,0,0) A(x)(C(x) S(x) A(x) C(x) S(x)C(x) S(x)L(x, Rain) L(x, Snow)r2 r34L(Wang, y)L(Wang, y)Wang/x, y/Rainr4L(Zhang, y)L(Zhang, Rain)Rain/yWang /x, y/SnowL(Zhang, y)r4L(Zhang, Snow)Snow/y19其中,状态 S3, S6,S 7,S 8,S 9,S 12 是不合法状态,S 0 和 S15 分别是初始状态和目标状态。第三步,定义操作,即用于状态变换的算符组 F由于每次过河船上都必须有农夫,且除农夫外
44、船上只能载狼,羊和菜中的一种,故算符定义如下:L(i)表示农夫从左岸将第 i 样东西送到右岸(i=1 表示狼,i=2 表示羊, i=3 表示菜,i=0 表示船上除农夫外不载任何东西) 。由于农夫必须在船上,故对农夫的表示省略。R (i)表示农夫从右岸将第 i 样东西带到左岸( i=1 表示狼,i=2 表示羊,i=3 表示菜,i=0 表示船上除农夫外不载任何东西) 。同样,对农夫的表示省略。这样,所定义的算符组 F 可以有以下 8 种算符:L (0),L (1),L (2),L (3)R(0),R(1),R (2),R (3)第四步,根据上述定义的状态和操作进行求解。该问题求解过程的状态空间图如
45、下:4.7 圆盘问题。设有大小不等的三个圆盘 A、B 、C 套在一根轴上,每个盘上都标有数字 1、2、3、4,并且每个圆盘都可以独立的绕轴做逆时针转动,每次转动 90,其初始状态 S0 和目标状态 Sg 如图 4-31 所示,请用广度优先搜索和深度优先搜索,求出从 S0 到 Sg 的路径。初始状态 S0 目标状态 Sg 图 4-31 圆盘问题(1,1,l,1)L(2)(0,1,0,1)(1,1,0,1)R(0)(0,0,0,1)L(1)(0,1,0,0)L(3)(1,0,1,1)R(2) (1,1,1,0)R(2)(0,0,1,0)L(3) L(2)(1,0,1,0)R(0)(0,0,0,0)
46、L(2)1 1 122244433 34213 1 4132432CBA ABC20解:设用 qA,q B 和 qC 分别表示把 A 盘,B 盘和 C 盘绕轴逆时针转动 90,这些操作(算符)的排列顺序是 qA,q B,q C。应用广度优先搜索,可得到如下搜索树。在该搜索树中,重复出现的状态不再划出,节点旁边的标识Si,i=0,1,2,,为按节点被扩展的顺序给出的该节点的状态标识。由该图可以看出,从初始状态 S0 到目标状态 Sg 的路径是S0 2513(S g)22 1 1 133344423 3 1323141223443 2 3 1 4 12124342 3 3 1 1 4242413A
47、BCqAqBqC3 3 1 3 1 1224244qA3 2 2 4 4 1311324qBqC4 134123 3233412333 1 3 1 3 12442241234 412341231 3 324112244qC33 4 213 1 12244qA31 42 41231234qB132 3 1 4242413qC4.7 题的广度优先搜索树S0S1 S2S4 S5 S6 S7S8S9S10 S11 S12 即 SgS3其深度优先搜索略。4.8 图 4-32 是 5 个城市的交通图,城市之间的连线旁边的数字是城市之间路程的费用。要求从 A 城出321发,经过其它各城市一次且仅一次,最后回到 A 城,请找出一条最优线路。解:这个问题又称为旅行商问题(travelling salesman problem, TSP)或货郎担问题,是一个较有普遍性的实际应用问题。根据数学理论,对 n 个城市的旅行商问题,其封闭路径的排列总数为:(n!)/n=(n-1)!