人工智能经典试题及答案 下载本文

第2章 知识表示方法部分参考答案

2.8 设有如下语句,请用相应的谓词公式分别把他们表示出来:s

(1) 有的人喜欢梅花,有的人喜欢菊花,有的人既喜欢梅花又喜欢菊花 。 解:定义谓词d 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是下午

将知识用谓词表示为:a

(?x )(?y) (A(y)→B(x)∧P(x))

(3) 新型计算机速度又快,存储容量又大。 解:定义谓词

NC(x):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, computer))

1

2.9 用谓词表示法求解机器人摞积木问题。设机器人有一只机械手,要处理的世界有一张桌子,桌上可堆放若干相同的方积木块。机械手有4个操作积木的典型动作:从桌上拣起一块积木;将手中的积木放到桌之上;在积木上再摞上一块积木;从积木上面拣起一块积木。积木世界的布局如下图所示。

A B C B C A

图 机器人摞积木问题

解:(1) 先定义描述状态的谓词

CLEAR(x):积木x上面是空的。 ON(x, y):积木x在积木y的上面。 ONTABLE(x):积木x在桌子上。 HOLDING(x):机械手抓住x。

HANDEMPTY:机械手是空的。

其中,x和y的个体域都是{A, B, C}。

问题的初始状态是:

ONTABLE(A) ONTABLE(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。

其中,每一个操作都可分为条件和动作两部分,具体描述如下:

2

Pickup(x)

条件:ONTABLE(x),HANDEMPTY,CLEAR(x) 动作:删除表:ONTABLE(x),HANDEMPTY 添加表:HANDEMPTY(x) Putdown(x)

条件:HANDEMPTY(x)

动作:删除表:HANDEMPTY(x)

添加表:ONTABLE(x),CLEAR(x) ,HANDEMPTY Stack(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) 动作:删除表:HANDEMPTY,ON(y, x) 添加表:HOLDING(y),CLEAR(x) (3) 问题求解过程

利用上述谓词和操作,其求解过程为: ONTABLE(A) ONTABLE(A) ONTABLE(A) ONTABLE(B) ONTABLE(B) Upstack(A,C) ONTABLE(B) Putdown(C) ONTABLE(C) Pickup(B)

ON(C, A) HOLDING(C) CLEAR(A) CLEAR(B) CLEAR(A) CLEAR(B) CLEAR(C) CLEAR(B) CLEAR(C) HANDEMPTY CLEAR(C) HANDEMPTY ONTABLE(A) ONTABLE(A) ONTABLE(C) ONTABLE(C) ONTABLE(C) ONTABLE(C) Stack(C,B) Pickup(A) ON(B,C) Stack(B,A) ON(B,C) ON(B,C) HOLDING(B) ON(A,B) CLEAR(A) CLEAR(A) CLEAR(A) CLEAR(A) CLEAR(B) CLEAR(B) CLEAR(B) HANDEMPT HOLDING(A) HANDEMPT CLEAR(C) Y

2.10 用谓词表示法求解农夫、狼、山羊、白菜问题。农夫、狼、山羊、白菜全部放在一条河的左岸,现在要把他们全部送到河的右岸去,农夫有一条船,过河时,除农夫外船上至多能载狼、山羊、白菜中的一种。狼要吃山羊,山羊要吃白菜,除非农夫在那里。似规划出一个确保全部安全过河的计划。请写出所用谓词的定义,并给出每个谓词的功能及变量的个体域。

解:(1) 先定义描述状态的谓词

要描述这个问题,需要能够说明农夫、狼、羊、白菜和船在什么位置,为简化问题表示,

3

取消船在河中行驶的状态,只描述左岸和右岸的状态。并且,由于左岸和右岸的状态互补,因此可仅对左岸或右岸的状态做直接描述。本题选择对左岸进行直接描述的方法,即定义谓词如下:

AL(x):x在左岸

其中,x的个体域是{农夫,船,狼,羊,白菜}。对应地,?AL(x)表示x在右岸。 问题的初始状态:

AL(农夫) AL(船) AL(狼) AL(羊) AL(白菜)

问题的目标状态:

?AL(农夫) ?AL(船) ?AL(狼) ?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(农夫),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(狼)

4

动作:删除表:AL(船),AL(农夫),AL(白菜) 添加表:?AL(船),?AL(农夫),?AL(白菜) R-L:农夫划船从右岸到左岸

条件:?AL(船),?AL(农夫),AL(狼)∨AL(羊),AL(羊)∨AL(白菜) 或:?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(白菜) AL(船) AL(白菜) R-L AL(船) L-R(羊) L-R(狼) ?AL(农夫) R-L(羊) AL(狼) ?AL(农夫) AL(狼) ?AL(船) AL(羊) ?AL(船) AL(白菜) ?AL(狼) AL(白菜) ?AL(羊) ?AL(羊) ?AL(羊) AL(AL(农夫) AL(羊) 农夫) ?AL(农夫) L-R(羊) AL(船) R-L L-R(白菜) AL(船) ?AL(农夫) ?AL(船) AL(羊) AL(羊) ?AL(船) ?AL(羊) AL(白菜) ?AL(白菜) ?AL(白菜) ?AL(白菜) ?AL(狼) ?AL(狼) ?AL(狼) ?AL(狼) 2.11 用谓词表示法求解修道士和野人问题。在河的北岸有三个修道士、三个野人和一条船,修道士们想用这条船将所有的人都运过河去,但要受到以下条件限制:

(1) 修道士和野人都会划船,但船一次只能装运两个人。

(2) 在任何岸边,野人数不能超过修道士,否则修道士会被野人吃掉。

假定野人愿意服从任何一种过河安排,请规划出一种确保修道士安全的过河方案。要求写出所用谓词的定义、功能及变量的个体域。

解:(1)定义谓词

先定义修道士和野人人数关系的谓词: G(x,y,S): 在状态S下x大于y

GE(x,y,S):在状态S下x大于或等于y

其中,x,y分别代表修道士人数和野人数,他们的个体域均为{0,1,2,3}。

再定义船所在岸的谓词和修道士不在该岸上的谓词: Boat(z,S):状态S下船在z岸

EZ(x,S): 状态S下x等于0,即修道士不在该岸上 其中,z的个体域是{L,R},L表示左岸,R表示右岸。 再定义安全性谓词:

5

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个修道士和y1个野人渡船从河的左岸到河的右岸

条件:Safety(L,x-x1,y-y1,S’)∧Safety(R,3-x+x1,3-y+y1,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,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)∧Boat(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)∧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 请对下列命题分别写出它们的语义网络:

6

(1) 每个学生都有一台计算机。 解:

GS

学生 占有权 计算机

AKO ISA ISA g F Owner Owns c g s o ?

(2) 高老师从3月到7月给计算机系学生讲《计算机网络》课。 解: 7月 8月

End Start

ISA 老师 高老师 Action 讲课 Subject 讲课事件 Object Caurse 计算机网络 计算机系学生 (3) 学习班的学员有男、有女、有研究生、有本科生。 解:参例2.14

(4) 创新公司在科海大街56号,刘洋是该公司的经理,他32岁、硕士学位。 解:参例2.10

(5) 红队与蓝队进行足球比赛,最后以3:2的比分结束。 解: 比赛

AKO Participants1 Outcome 3:2 足球赛 红队 Participants 2

蓝队

2.19 请把下列命题用一个语义网络表示出来:

7

(1) 树和草都是植物; 解:

植物

AKO AKO

树 草

(2) 树和草都有叶和根; 解:

叶 根

Have Have

植物 是一种 是一种

树 草

(3) 水草是草,且生长在水中; 解: AKO Live AKO 水草 草 水中 植物

(4) 果树是树,且会结果; 解:

AKO AKO Can 果树 树 结果 植物

(5) 梨树是果树中的一种,它会结梨。 解: AKO AKO Can 梨树 果树 结梨 树

2.25 假设有以下一段天气预报:“北京地区今天白天晴,偏北风3级,最高气温12o,最低气温-2o,降水概率15%。”请用框架表示这一知识。

解:

Frame<天气预报> 地域:北京 时段:今天白天 天气:晴

8

风向:偏北 风力:3级

气温:最高:12度 最低:-2度 降水概率:15%

2.26 按“师生框架”、“教师框架”、“学生框架”的形式写出一个框架系统的描述。 解:师生框架

Frame

Name:Unit(Last-name,First-name) Sex:Area(male,female) Default:male Age:Unit(Years)

Telephone:Home Unit(Number)

Mobile Unit(Number)

教师框架

Frame

AKO Major:Unit(Major-Name) Lectures:Unit(Course-Name) Field:Unit(Field-Name)

Project :Area(National,Provincial,Other) Default:Provincial

Paper:Area(SCI,EI,Core,General) Default:Core

学生框架

Frame

AKO< Teachers-Students > Major:Unit(Major-Name) Classes:Unit(Classes-Name)

Degree:Area(doctor,mastor, bachelor) Default:bachelor

9

第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) 可合一,其最一般和一为:σ={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标准型,且P(x, y)∧Q(x, y)已经是合取范式,所以可直接消去全称量词、合取词,得 { 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)))

此公式已为前束范式。

再消去存在量词,即用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))

10

再消去存在量词,即用Skolem函数f(x)替换y得:

(?x) (?y) (?P(x, y)∨Q(x, y)∨R(x, f(x,y)))

此公式已为Skolem标准型。

最后消去全称量词得子句集:

S={?P(x, y)∨Q(x, y)∨R(x, f(x,y))}

3-13 判断下列子句集中哪些是不可满足的:

(1) {?P∨Q, ?Q, P, ?P}

(2) { P∨Q , ?P∨Q, P∨?Q, ?P∨?Q } (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) 不可满足,其归结过程为:

?P∨Q ?Q

?P P

NIL

(2) 不可满足,其归结过程为:

P∨Q ?P∨Q P∨?Q ?P∨?Q

?Q Q

NIL

(3) 不是不可满足的,原因是不能由它导出空子句。 (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))

11

(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.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进行归结:

P(a,b) ?P(x,b)

{a/x} NIL

所以,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进行归结:

Q(a)∨Q(b)

{a/b}

? P(x)∨? Q(x) Q(a)

{a/x}

P(x) ? P(a)

{a/x} NIL

所以,G是F的逻辑结论

同理可求得(3)、(4)和(5),其求解过程略。

3.15 设已知:

12

(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)) 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))

对上述扩充的子句集,其归结推理过程如下:

?F(x,y)∨?F(y,z)∨GF(x,z) ?GF(v,u)

{x/v,z/u}

?F(x,y)∨?F(y,z) ?P(r)∨F(s,r)

{x/s,y/r} ?F(y,z)∨?P(y) ?P(r)∨F(s,r)

{y/s,z/r} ?P(y)∨?P(z)

{y/z}

P(u) ?P(y)

{y/u} NIL 由于导出了空子句,故结论得证。

3.16 假设张被盗,公安局派出5个人去调查。案情分析时,贞察员A说:“赵与钱中至少有一个人作案”,贞察员B说:“钱与孙中至少有一个人作案”,贞察员C说:“孙与李中至少有一个人作案”,贞察员D说:“赵与孙中至少有一个人与此案无关”,贞察员E说:“钱与李中至少有一个人与此案无关”。如果这5个侦察员的话都是可信的,使用归结演绎推理求出谁是盗窃犯。

13

解:(1) 先定义谓词和常量

设C(x)表示x作案,Z表示赵,Q表示钱,S表示孙,L表示李 (2) 将已知事实用谓词公式表示出来 赵与钱中至少有一个人作案:C(Z)∨C(Q) 钱与孙中至少有一个人作案:C(Q)∨C(S) 孙与李中至少有一个人作案:C(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) 对上述扩充的子句集,按归结原理进行归结,其修改的证明树如下:

C(Z)∨C(Q) ?C (Z) ∨?C(S)

C(Q)∨?C(S) C(Q)∨C(S)

?C(u)∨C(u) C(Q) {Q/u} C(Q)

因此,钱是盗窃犯。实际上,本案的盗窃犯不止一人。根据归结原理还可以得出:

C(S)∨C(L) ?C (Q) ∨?C(L)

C(S)∨?C(Q) C(Q)∨C(S)

C(S) {S/u} C(S)

因此,孙也是盗窃犯。

3.18 设有子句集:

?C(u)∨C(u) 14

{P(x)∨Q(a, b), P(a)∨?Q(a, b), ?Q(a, f(a)), ?P(x)∨Q(x, b)} 分别用各种归结策略求出其归结式。

解:

用线性输入策略(同时满足祖先过滤策略)的归结过程如下:

P(x)∨Q(a, b) P(a)∨?Q(a, b)

{a/x}

P(a) {a/x} ?P(x)∨Q(x, b) ?Q(a, f(a)) Q(a,b)

{b/f(a)} NIL

3.19 设已知:

(1) 能阅读的人是识字的; (2) 海豚不识字;

(3) 有些海豚是很聪明的。

请用归结演绎推理证明:有些很聪明的人并不识字。

解:第一步,先定义谓词, 设R(x)表示x是能阅读的; K(y)表示y是识字的; W(z) 表示z是很聪明的;

第二步,将已知事实和目标用谓词公式表示出来

能阅读的人是识字的:(?x)(R(x))→K(x)) 海豚不识字:(?y)(?K (y))

有些海豚是很聪明的:(?z) W(z)

有些很聪明的人并不识字:(?x)( W(z)∧?K(x))

第三步,将上述已知事实和目标的否定化成子句集: ?R(x))∨K(x)

?K (y) W(z)

?W(z)∨K(x))

第四步,用归结演绎推理进行证明

W(z) ?W(z)∨K(x))

K(z) W(z)

15

NIL 3.20 对子句集:

{P∨Q, Q∨R, R∨W, ?R∨?P, ?W∨?Q, ?Q∨?R } 用线性输入策略是否可证明该子句集的不可满足性? 解:用线性输入策略不能证明子句集

{P∨Q, Q∨R, R∨W, ?R∨?P, ?W∨?Q, ?Q∨?R }

的不可满足性。原因是按线性输入策略,不存在从该子句集到空子句地归结过程。

3.21 对线性输入策略和单文字子句策略分别给出一个反例,以说明它们是不完备的。

3.22 分别说明正向、逆向、双向与/或形演绎推理的基本思想。

3.23 设已知事实为

((P∨Q)∧R) ∨(S∧(T∨U)) F规则为

S→(X∧Y)∨Z

试用正向演绎推理推出所有可能的子目标。

解:先给出已知事实的与/或树,再利用F规则进行推理,其规则演绎系统如下图所示。 由该图可以直接写出所有可能的目标子句如下: P∨Q∨T∨U P∨Q∨X∨Z P∨Q∨Y∨Z

R∨T∨U R∨X∨Z R∨Y∨Z 所有子所有 P Q R X Y Z U T 目标 目标 X Y F 规 Z X∧Y 则 S

16 T U

P Q T U 已

R 知S (P∨Q) T∨U 事 实

(S∧(T∨U)) ((P∨Q)∧R) ((P∨Q)∧R) ∨(S∧(T∨U))

3.24 设有如下一段知识:

“张、王和李都属于高山协会。该协会的每个成员不是滑雪运动员,就是登山运动员,其中不喜欢雨的运动员是登山运动员,不喜欢雪的运动员不是滑雪运动员。王不喜欢张所喜欢的一切东西,而喜欢张所不喜欢的一切东西。张喜欢雨和雪。”

试用谓词公式集合表示这段知识,这些谓词公式要适合一个逆向的基于规则的演绎系统。试说明这样一个系统怎样才能回答问题:

“高山俱乐部中有没有一个成员,他是一个登山运动员,但不是一个滑雪运动员?” 解:(1) 先定义谓词

A(x) 表示x是高山协会会员 S(x) 表示x是滑雪运动员 C(x) 表示x是登山运动员 L(x,y) 表示x 喜欢y (2) 将问题用谓词表示出来 “张、王和李都属于高山协会

A(Zhang)∧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) 将问题要求的答案用谓词表示出来

17

高山俱乐部中有没有一个成员,他是一个登山运动员,但不是一个滑雪运动员? (?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: 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))

(6) 进行逆向推理

逆向推理的关键是要能够推出L(Zhang , Rain)∧L(Zhang , Snow),其逆向演绎过程如下图所示。

? A(x)∨(C(x)∧? S(x))

? A(x) C(x)∧? S(x)

C(x) ? S(x) r2 r3

?L(x, Rain) {Wang/x, y/Rain} ?L(Wang, y) r4 18

?L(x, Snow) {Wang /x, y/Snow} ?L(Wang, y) r4

L(Zhang, y) {Rain/y} L(Zhang, Rain) {Snow/y} L(Zhang, y) L(Zhang, Snow) 第4章 搜索策略部分参考答案

4.5 有一农夫带一条狼,一只羊和一框青菜与从河的左岸乘船倒右岸,但受到下列条件的限制:

(1) 船太小,农夫每次只能带一样东西过河;

(2) 如果没有农夫看管,则狼要吃羊,羊要吃菜。

请设计一个过河方案,使得农夫、浪、羊都能不受损失的过河,画出相应的状态空间图。 题示:(1) 用四元组(农夫,狼,羊,菜)表示状态,其中每个元素都为0或1,用0表示在左岸,用1表示在右岸。

(2) 把每次过河的一种安排作为一种操作,每次过河都必须有农夫,因为只有他可以划船。 解:第一步,定义问题的描述形式

用四元组S=(f,w,s,v)表示问题状态,其中,f,w,s和v分别表示农夫,狼,羊和青菜是否在左岸,它们都可以取1或0,取1表示在左岸,取0表示在右岸。

第二步,用所定义的问题状态表示方式,把所有可能的问题状态表示出来,包括问题的初始状态和目标状态。

由于状态变量有4个,每个状态变量都有2种取值,因此有以下16种可能的状态: S0=(1,1,1,1),S1=(1,1,1,0),S2=(1,1,0,1),S3=(1,1,0,0) S4=(1,0,1,1),S5=(1,0,1,0),S6=(1,0,0,1),S7=(1,0,0,0) S8=(0,1,1,1),S9=(0,1,1,0),S10=(0,1,0,1),S11=(0,1,0,0) S12=(0,0,1,1),S13=(0,0,1,0),S14=(0,0,0,1),S15=(0,0,0,0)

其中,状态S3,S6,S7,S8,S9,S12是不合法状态,S0和S15分别是初始状态和目标状态。

第三步,定义操作,即用于状态变换的算符组F

由于每次过河船上都必须有农夫,且除农夫外船上只能载狼,羊和菜中的一种,故算符定义如下:

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)

第四步,根据上述定义的状态和操作进行求解。 该问题求解过程的状态空间图如下:

19

(1,1,l,1) L(2) (0,1,0,1) R(0) (1,1,0,1) L(1) (0,0,0,1) R(2) (1,0,1,1) L(3)

(0,0,1,0) R(0)

(1,0,1,0) L(2) (0,0,0,0)

L(3) (0,1,0,0)

R(2) (1,1,1,0) L(2)

4.7 圆盘问题。设有大小不等的三个圆盘A、B、C套在一根轴上,每个盘上都标有数字1、2、3、4,并且每个圆盘都可以独立的绕轴做逆时针转动,每次转动90°,其初始状态S0和目标状态Sg如图4-31所示,请用广度优先搜索和深度优先搜索,求出从S0到Sg的路径。

2 1 C 2 C 2 B 4 B A A 2 2 3 3 1 4 1 3 3 3 1 1 1 2 4 4 4 3 4 初始状态S0 目标状态Sg

图 4-31 圆盘问题

解:设用qA,qB和qC分别表示把A盘,B盘和C盘绕轴逆时针转动90o,这些操作(算

20

符)的排列顺序是qA,qB,qC。

应用广度优先搜索,可得到如下搜索树。在该搜索树中,重复出现的状态不再划出,节点旁边的标识Si,i=0,1,2,…,为按节点被扩展的顺序给出的该节点的状态标识。

由该图可以看出,从初始状态S0到目标状态Sg的路径是 S0→2→5→13(Sg) 2 S0 C 2 B 2 A 3 3 1 1 1 3 4 4 qA 4 qC 2 S1 2 1 3 3 24 11 3 4 4 qB 2 1 2 4 3 4 S3 1 2 2 2 3 3 1 1 4 4 4 3 S2 3 2 3 qC 1 4 1 qA qB 2 1 S4 S5 2 S6 22 1 1 1 3 3 1 4 3 1 1 3 2 2 4 4 1 23 24 14 3 1 3 2 3 3 4 3 4 4 3 4 qA 2 2 3 qB S10 2 4 2 4 2 4 S7 1 3 1 2 2 3 1 1 2 4 3 3 S8 1 4 4 qC qC 2 1 4 S11 1 S12即Sg 2 4 3 3 4 2 1 1 3 2 1 3 1 4 3 4 1 2 3 1 1 2 2 4 4 3 3 4 4 4.7题的广度优先搜索树

S9 4 2 2 1 3 3 1 1 3 4 4 2 其深度优先搜索略。

4.8 图4-32是5个城市的交通图,城市之间的连线旁边的数字是城市之间路程的费用。要求从A城出发,经过其它各城市一次且仅一次,最后回到A城,请找出一条最优线路。

21

A 10 B 解:这个问题又称为旅行商问题(travelling salesman

2 8 problem, TSP)或货郎担问题,是一个较有普遍性的实

际应用问题。根据数学理论,对n个城市的旅行商问题, 9 C 11 6 3 12 8 其封闭路径的排列总数为:

D 9 E (n!)/n=(n-1)!

其计算量相当大。例如,当n=20时,要穷举其所有路4-32 交通费用图 径,即使用一个每秒一亿次的计算机来算也需要350年的时间。因此,对这类问题只能用搜索的方法来解决。

下图是对图4-32按最小代价搜索所得到的搜索树,树中的节点为城市名称,节点边上的数字为该节点的代价g。其计算公式为

g(ni+1)=g(ni)+c(ni, ni+1)

其中,c(ni,ni+1)为节点ni到ni+1节点的边代价。 0

A 10 2 11 9 11 B 10 C 2 D 9 E

8 12 6 8 3 8 12 3 9 6 8 9 18 16 20 C 18 D 22 E B 10 D 5 E 10 B 21 C 12 E C 19 D B 17

3 9 8 8 8 12 3 12 6 6 9 12 3 8 8 6 8 12 6 8 9 3 8 9 23 29 22 16 19 20 20 C 25 D B 32 C C 25 E 31 16 B E D D B E

22

24 25 14 26 B 24 27 21 26 17 D 20 27 C D B E C E C E B D 8 8 9 9 12 12 3 6 6

8 6 6 12 8 9 9 3 3 31 27 28 31 26 33 26 31 E E D D B E B B D 28

32 B 34 23 20 C E D 27 C 28 E B E 28 30 D 35

10 2

A 30 30 A

图4.32的最小代价搜索树

可以看出,其最短路经是 A-C-D-E-B-A 或

A-B-E-D-C-A

其实,它们是同一条路经。

4.11 设有如下结构的移动将牌游戏:

B B W W E 其中,B表示黑色将牌,W表是白色将牌,E表示空格。游戏的规定走法是:

22

(1) 任意一个将牌可移入相邻的空格,规定其代价为1;

(2) 任何一个将牌可相隔1个其它的将牌跳入空格,其代价为跳过将牌的数目加1。 游戏要达到的目标什是把所有W都移到B的左边。对这个问题,请定义一个启发函数h(n),并给出用这个启发函数产生的搜索树。你能否判别这个启发函数是否满足下解要求?再求出的搜索树中,对所有节点是否满足单调限制?

解:设h(x)=每个W左边的B的个数,f(x)=d(x)+3*h(x),其搜索树如下: f(x)=0+12=12 B B W W E f(x)=1+12=13 f(x)=1+12=13 B B E W W B B W E W f(x)=2+12=14 f(x)=2+9=11 B B E W W B E W B W f(x)=3+9=12 E B W B W f(x)=4+6=10 W B E B W f(x)=5+3=8 W B W B E f(x)=6+3=9 W B W E B f(x)=7+0=7 W B W E B

4.14 设有如图4-34的与/或/树,请分别按和代价法及最大代价法求解树的代价。

23

5 B 7 D 2 t1

2 E 3 t2

A 6 C 2 t3 1 t4 图4.34 习题4.14的与/或树

解:若按和代价法,则该解树的代价为: h(A)=2+3+2+5+2+1+6=21

若按最大代价法,则该解树的代价为:

h(A)=max{h(B)+5, h(C)+6} = max{(h(E)+2)+5, h(C)+6} = max{(max(2, 3)+2)+5, max(2, 1)+6}

=max((5+5, 2+6)=10

4.15 设有如图4-35所示的博弈树,其中最下面的数字是假设的估值,请对该博弈树作如下工作:

(1) 计算各节点的倒推值;

(2) 利用α-β剪枝技术剪去不必要的分枝。

S0

A B

C D E F H I J G K L M N 0 5 -3 3 3 6 6 -2 3 5 4 -3 0 6 8 9 -3

图4.35 习题4.15的博弈树

解:各节点的倒推值和剪枝情况如下图所示:

24

≥4 ≤0 A S0 B ≤4 ≥0 ≤0 G C ≤-3 H ≤3 ≥3 I D J ≤4 ≥4 E L ≤6 ≥6 M F K ≤-3 N 0 5 -3 3 3 3 6 6 -2 3 5 4 -3 0 6 8 9 -3

习题4.15的倒推值和剪枝情况

第5章 计算智能部分参考答案

5.15 对遗传法的选择操作:设种群规模为4,个体采用二进制编码,适应度函数为 f(x)=x2,初始种群情况如下表所示:

x 编号 个体串 适应值 百分比 累计百分比 选中次数 S01 S02 S03 S04 1010 0100 1100 0111 10 4 12 7 若规定选择概率为100%,选择算法为轮盘赌算法,且依次生成的4个随机数为0.42, 0.16, 0.89,

0.71,请填写上表中的全部内容,并求出经本次选择操作后所得到的新的种群。

解:表格的完整内容为: 编号 S01 S02 S03 S04 个体串 1010 0100 1100 0111 x 10 4 12 7 适应值 百分比 累计百分比 选中次数 100 16 144 49 32.36 5.18 44.60 15.86 32.36 37.54 84.14 100 1 0 2 1 本次选择后所得到的新的种群为: S01=1100 S02=1010

25

S03=0111 S04=1100

5.18 设某小组有5个同学,分别为S1,S2,S3,S4,S5。若对每个同学的“学习好”程度打分: S1:95 S2:85 S3:80 S4:70 S5:90

这样就确定了一个模糊集F,它表示该小组同学对“学习好”这一模糊概念的隶属程度,请写出该模糊集。

解:对模糊集为F,可表示为:

F=95/ S1+85/S2+80/ S3+70/S4+90/S5 或

F={95/ S1, 85/S2, 80/ S3, 70/S4, 90/S5}

5.19 设有论域

U={u1, u2, u3, u4, u5}

并设F、G是U上的两个模糊集,且有 F=0.9/u1+0.7/u2+0.5/u3+0.3/u4 G=0.6/u3+0.8/u4+1/u5 请分别计算 F∩G,F∪G,﹁F。

解:F∩G=(0.9∧0)/ u1+(0.7∧0)/ u2+(0.5∧0.6)/u3+(0.3∧0.8)/u4+(0∧1)/u5 =0/ u1+0/ u2+0.5/u3+0.3/u4+0/u5 =0.5/u3+0.3/u4

F∪G=(0.9∨0)/ u1+(0.7∨0)/ u2+(0.5∨0.6)/u3+(0.3∨0.8)/u4+(0∨1)/u5

=0.9/ u1+0.7/ u2+0.6/u3+0.8/u4+1/u5

﹁F=(1-0.9)/ u1+(1-0.7)/ u2+(1-0.5)/u3+(1-0.3)/u4+(1-0)/u5

=0.1/ u1+0.3/ u2+0.5/u3+0.7/u4+1/u5

5.21设有如下两个模糊关系:

?0.30.70.2?R1??100.4?????00.51???0.20.8?R2??0.60.4?????0.90.1??请写出R1与R2的合成R1οR2。

解:R(1,1)=(0.3∧0.2)∨(0.7∧0.6)∨(0.2∧0.9)= 0.2∨0.6∨0.2=0.6

R(1,2)=(0.3∧0.8)∨(0.7∧0.4)∨(0.2∧0.1)= 0.3∨0.4∨0.1=0.4 R(2,1)=(1∧0.2)∨(0∧0.6)∨(0.4∧0.9)= 0.2∨0∨0.4=0.4 R(2,2)=(1∧0.8)∨(0∧0.4)∨(0.4∧0.1)= 0.8∨0∨0.1=0.8 R(3,1)=(0∧0.2)∨(0.5∧0.6)∨(1∧0.9)= 0.2∨0.6∨0.9=0.9 R(3,2)=(0∧0.8)∨(0.5∧0.4)∨(1∧0.1)= 0∨0.4∨0.1=0.4

因此有

26

?0.60.4??

R1?R2??0.40.8????0.90.4??

5.22 设F是论域U上的模糊集,R是U×V上的模糊关系,F和R分别为:

F?{0.4,0.6,0.8}?0.10.30.5?R??0.40.60.8?????0.60.30??求模糊变换FοR。

解:

F?R?{0.4?0.1?0.6?0.4?0.8?0.6,0.4?0.3?0.6?0.6?0.8?0.3

0.4?0.5?0.6?0.8?0.8?0} ={0.1∨0.4∨0.6, 0.3∨0.6∨0.3,0.4∨0.6∨0 } ={0.6, 0.6, 0.6}

第6章 不确定性推理部分参考答案

6.8 设有如下一组推理规则: r1: IF E1 THEN E2 (0.6)

r2: IF E2 AND E3 THEN E4 (0.7) r3: IF E4 THEN H (0.8) r4: IF E5 THEN H (0.9)

且已知CF(E1)=0.5, CF(E3)=0.6, CF(E5)=0.7。求CF(H)=? 解:(1) 先由r1求CF(E2)

CF(E2)=0.6 × max{0,CF(E1)} =0.6 × max{0,0.5}=0.3

(2) 再由r2求CF(E4)

CF(E4)=0.7 × max{0, min{CF(E2 ), CF(E3 )}} =0.7 × max{0, min{0.3, 0.6}}=0.21

(3) 再由r3求CF1(H)

CF1(H)= 0.8 × max{0,CF(E4)}

=0.8 × max{0, 0.21)}=0.168 (4) 再由r4求CF2(H)

CF2(H)= 0.9 ×max{0,CF(E5)} =0.9 ×max{0, 0.7)}=0.63

27

(5) 最后对CF1(H )和CF2(H)进行合成,求出CF(H) CF(H)= CF1(H)+CF2(H)+ CF1(H) × CF2(H) =0.692

6.10 设有如下推理规则

r1: IF E1 THEN (2, 0.00001) H1 r2: IF E2 THEN (100, 0.0001) H1 r3: IF E3 THEN (200, 0.001) H2 r4: IF H1 THEN (50, 0.1) H2

且已知P(E1)= P(E2)= P(H3)=0.6, P(H1)=0.091, P(H2)=0.01, 又由用户告知: P(E1| S1)=0.84, P(E2|S2)=0.68, P(E3|S3)=0.36 请用主观Bayes方法求P(H2|S1, S2, S3)=? 解:(1) 由r1计算O(H1| S1)

先把H1的先验概率更新为在E1下的后验概率P(H1| E1) P(H1| E1)=(LS1 × P(H1)) / ((LS1-1) × P(H1)+1) =(2 × 0.091) / ((2 -1) × 0.091 +1) =0.16682

由于P(E1|S1)=0.84 > P(E1),使用P(H | S)公式的后半部分,得到在当前观察S1下的后验概率P(H1| S1)和后验几率O(H1| S1)

P(H1| S1) = P(H1) + ((P(H1| E1) – P(H1)) / (1 - P(E1))) × (P(E1| S1) – P(E1)) = 0.091 + (0.16682 –0.091) / (1 – 0.6)) × (0.84 – 0.6) =0.091 + 0.18955 × 0.24 = 0.136492 O(H1| S1) = P(H1| S1) / (1 - P(H1| S1)) = 0.15807 (2) 由r2计算O(H1| S2)

先把H1的先验概率更新为在E2下的后验概率P(H1| E2) P(H1| E2)=(LS2 × P(H1)) / ((LS2-1) × P(H1)+1) =(100 × 0.091) / ((100 -1) × 0.091 +1) =0.90918

由于P(E2|S2)=0.68 > P(E2),使用P(H | S)公式的后半部分,得到在当前观察S2下的后验概率P(H1| S2)和后验几率O(H1| S2)

P(H1| S2) = P(H1) + ((P(H1| E2) – P(H1)) / (1 - P(E2))) × (P(E2| S2) – P(E2)) = 0.091 + (0.90918 –0.091) / (1 – 0.6)) × (0.68 – 0.6) =0.25464

O(H1| S2) = P(H1| S2) / (1 - P(H1| S2)) =0.34163

(3) 计算O(H1| S1,S2)和P(H1| S1,S2) 先将H1的先验概率转换为先验几率

O(H1) = P(H1) / (1 - P(H1)) = 0.091/(1-0.091)=0.10011

再根据合成公式计算H1的后验几率

28

O(H1| S1,S2)= (O(H1| S1) / O(H1)) × (O(H1| S2) / O(H1)) × O(H1) = (0.15807 / 0.10011) × (0.34163) / 0.10011) × 0.10011 = 0.53942

再将该后验几率转换为后验概率

P(H1| S1,S2) = O(H1| S1,S2) / (1+ O(H1| S1,S2)) = 0.35040 (4) 由r3计算O(H2| S3)

先把H2的先验概率更新为在E3下的后验概率P(H2| E3) P(H2| E3)=(LS3 × P(H2)) / ((LS3-1) × P(H2)+1) =(200 × 0.01) / ((200 -1) × 0.01 +1) =0.09569

由于P(E3|S3)=0.36 < P(E3),使用P(H | S)公式的前半部分,得到在当前观察S3下的后验概率P(H2| S3)和后验几率O(H2| S3)

P(H2| S3) = P(H2 | ? E3) + (P(H2) – P(H2| ?E3)) / P(E3)) × P(E3| S3) 由当E3肯定不存在时有

P(H2 | ? E3) = LN3 × P(H2) / ((LN3-1) × P(H2) +1) = 0.001 × 0.01 / ((0.001 - 1) × 0.01 + 1) = 0.00001 因此有

P(H2| S3) = P(H2 | ? E3) + (P(H2) – P(H2| ?E3)) / P(E3)) × P(E3| S3) =0.00001+((0.01-0.00001) / 0.6) × 0.36 =0.00600

O(H2| S3) = P(H2| S3) / (1 - P(H2| S3))

=0.00604

(5) 由r4计算O(H2| H1)

先把H2的先验概率更新为在H1下的后验概率P(H2| H1) P(H2| H1)=(LS4 × P(H2)) / ((LS4-1) × P(H2)+1) =(50 × 0.01) / ((50 -1) × 0.01 +1) =0.33557

由于P(H1| S1,S2)=0.35040 > P(H1),使用P(H | S)公式的后半部分,得到在当前观察S1,S2下H2的后验概率P(H2| S1,S2)和后验几率O(H2| S1,S2)

P(H2| S1,S2) = P(H2) + ((P(H2| H1) – P(H2)) / (1 - P(H1))) × (P(H1| S1,S2) – P(H1)) = 0.01 + (0.33557 –0.01) / (1 – 0.091)) × (0.35040 – 0.091) =0.10291

O(H2| S1,S2) = P(H2| S1, S2) / (1 - P(H2| S1, S2)) =0.10291/ (1 - 0.10291) = 0.11472 (6) 计算O(H2| S1,S2,S3)和P(H2| S1,S2,S3) 先将H2的先验概率转换为先验几率

O(H2) = P(H2) / (1 - P(H2) )= 0.01 / (1-0.01)=0.01010

再根据合成公式计算H1的后验几率

29

O(H2| S1,S2,S3)= (O(H2| S1,S2) / O(H2)) × (O(H2| S3) / O(H2)) ×O(H2) = (0.11472 / 0.01010) × (0.00604) / 0.01010) × 0.01010 =0.06832

再将该后验几率转换为后验概率

P(H2| S1,S2,S3) = O(H1| S1,S2,S3) / (1+ O(H1| S1,S2,S3)) = 0.06832 / (1+ 0.06832) = 0.06395

可见,H2原来的概率是0.01,经过上述推理后得到的后验概率是0.06395,它相当于先验概率的6倍多。

6.11设有如下推理规则

r1: IF E1 THEN (100, 0.1) H1 r2: IF E2 THEN (50, 0.5) H2 r3: IF E3 THEN (5, 0.05) H3

且已知P(H1)=0.02, P(H2)=0.2, P(H3)=0.4,请计算当证据E1,E2,E3存在或不存在时P(Hi | Ei)或P(Hi |﹁Ei)的值各是多少(i=1, 2, 3)?

解:(1) 当E1、E2、E3肯定存在时,根据r1、r2、r3有

P(H1 | E1) = (LS1 × P(H1)) / ((LS1-1) × P(H1)+1)

= (100 × 0.02) / ((100 -1) × 0.02 +1) =0.671

P(H2 | E2) = (LS2 × P(H2)) / ((LS2-1) × P(H2)+1)

= (50 × 0.2) / ((50 -1) × 0.2 +1)

=0.9921

P(H3 | E3) = (LS3 × P(H3)) / ((LS3-1) × P(H3)+1)

= (5 × 0.4) / ((5 -1) × 0.4 +1)

=0.769

(2) 当E1、E2、E3肯定存在时,根据r1、r2、r3有

P(H1 | ?E1) = (LN1 × P(H1)) / ((LN1-1) × P(H1)+1)

= (0.1 × 0.02) / ((0.1 -1) × 0.02 +1) =0.002

P(H2 | ?E2) = (LN2 × P(H2)) / ((LN2-1) × P(H2)+1)

= (0.5 × 0.2) / ((0.5 -1) × 0.2 +1) =0.111

P(H3 | ?E3) = (LN3 × P(H3)) / ((LN3-1) × P(H3)+1)

= (0.05 × 0.4) / ((0.05 -1) × 0.4 +1) =0.032

6.13 设有如下一组推理规则:

r1: IF E1 AND E2 THEN A={a} (CF={0.9})

r2: IF E2 AND (E3 OR E4) THEN B={b1, b2} (CF={0.8, 0.7}) r3: IF A THEN H={h1, h2, h3} (CF={0.6, 0.5, 0.4})

30

r4: IF B THEN H={h1, h2, h3} (CF={0.3, 0.2, 0.1}) 且已知初始证据的确定性分别为:

CER(E1)=0.6, CER(E2)=0.7, CER(E3)=0.8, CER(E4)=0.9。

假设|Ω|=10,求CER(H)。 解:其推理过程参考例6.9 具体过程略

6.15 设

U=V={1,2,3,4}

且有如下推理规则:

IF x is 少 THEN y is 多 其中,“少”与“多”分别是U与V上的模糊集,设 少=0.9/1+0.7/2+0.4/3 多=0.3/2+0.7/3+0.9/4 已知事实为

x is 较少 “较少”的模糊集为

较少=0.8/1+0.5/2+0.2/3 请用模糊关系Rm求出模糊结论。 解:先用模糊关系Rm求出规则

IF x is 少 THEN y is 多 所包含的模糊关系Rm

Rm (1,1)=(0.9∧0)∨(1-0.9)=0.1 Rm (1,2)=(0.9∧0.3)∨(1-0.9)=0.3 Rm (1,3)=(0.9∧0.7)∨(1-0.9)=0.7 Rm (1,4)=(0.9∧0.9)∨(1-0.9)=0.7 Rm (2,1)=(0.7∧0)∨(1-0.7)=0.3 Rm (2,2)=(0.7∧0.3)∨(1-0.7)=0.3 Rm (2,3)=(0.7∧0.7)∨(1-0.7)=0.7 Rm (2,4)=(0.7∧0.9)∨(1-0.7)=0.7 Rm (3,1)=(0.4∧0)∨(1-0.4)=0.6 Rm (3,2)=(0.4∧0.3)∨(1-0.4)=0.6 Rm (3,3)=(0.4∧0.7)∨(1-0.4)=0.6 Rm (3,4)=(0.4∧0.9)∨(1-0.4)=0.6 Rm (4,1)=(0∧0)∨(1-0)=1 Rm (4,2)=(0∧0.3)∨(1-0)=1 Rm (4,3)=(0∧0.7)∨(1-0)=1 Rm (3,4)=(0∧0.9)∨(1-0)=1 即:

31

?0.10.30.70.9??0.30.30.70.7?? Rm???0.60.60.60.6???1111??因此有

?0.10.30.70.9??0.30.30.70.7?'?Y??0.8,0.5,0.2,0????0.60.60.60.6? ??111??1??0.3,0.3.0.7,0.8?即,模糊结论为

Y’={0.3, 0.3, 0.7, 0.8}

6.16 设

U=V=W={1,2,3,4} 且设有如下规则:

r1:IF x is F THEN y is G r2:IF y is G THEN z is H r3:IF x is F THEN z is H 其中,F、G、H的模糊集分别为: F=1/1+0.8/2+0.5/3+0.4/4 G=0.1/2+0.2/3+0.4/4 H=0.2/2+0.5/3+0.8/4

请分别对各种模糊关系验证满足模糊三段论的情况。

解:本题的解题思路是:

由模糊集F和G求出r1所表示的模糊关系R1m, R1c, R1g 再由模糊集G和H求出r2所表示的模糊关系R2m, R2c, R2g 再由模糊集F和H求出r3所表示的模糊关系R3m, R3c, R3g

然后再将R1m, R1c, R1g分别与R2m, R2c, R2g合成得R12 m, R12c, R12g 最后将R12 m, R12c, R12g分别与R3m, R3c, R3g比较

第7章 机器学习参考答案

7-6 设训练例子集如下表所示:

32

序号 1 2 3 4 5 6 属性 x1 T T T F F F x2 T T F F T T 分类 + + - + _ _ 请用ID3算法完成其学习过程。

解:设根节点为S,尽管它包含了所有的训练例子,但却没有包含任何分类信息,因此具有最大的信息熵。即:

H(S)= - (P(+)log2 P(+) + P(-)log2 P(-))

式中

P(+)=3/6,P(-)=3/6

分别是决策方案为“+”或“-”时的概率。因此有

H(S)= - ((3/6)log2(3/6) + (3/6)log2(3/6)) =1

按照ID3算法,需要选择一个能使S的期望熵为最小的一个属性对根节点进行扩展,因此我们需要先计算S关于每个属性的条件熵:

H(S|xi)= ( |ST| / |S|)* H(ST) + ( |SF| / |S|)* H(SF)

其中,T和F为属性xi的属性值,ST和SF分别为xi=T或xi=F时的例子集,|S|、| ST|和|SF|分别为例子集S、ST和SF 的大小。

下面先计算S关于属性x1的条件熵: 在本题中,当x1=T时,有: ST={1,2,3} 当x1=F时,有:

SF={4,5,6}

其中,ST 和SF中的数字均为例子集S中的各个例子的序号,且有|S|=6,| ST |=| SF |=3。

由ST可知,其决策方案为“+”或“-”的概率分别是: PST(+)=2/3

PST (-)=1/3

因此有:

H(ST)= - (PST (+)log2 PST (+) + PST (-)log2 PST (- ))

= - ((2/3)log2(2/3) + (1/3)log2(1/3)) =0.9183

再由SF可知,其决策方案为“+”或“-”的概率分别是: PSF (+)=1/3

PSF (-)=2/3

33

则有:

H (SF)= - (PSF (+)log2 PSF (+) + PSF (-)log2 PSF (- ))

= - ((1/3)log2(1/3)+ (2/3)log2(2/3))

=0.9183

将H(ST)和H (SF)代入条件熵公式,有:

H(S|x1)=(|ST|/|S|)H(ST)+ (|SF|/|S|)H(SF) =(3/6)﹡0.9183 + (3/6)﹡0.9183

=0.9183

下面再计算S关于属性x2的条件熵: 在本题中,当x2=T时,有: ST={1,2,5,6} 当x2=F时,有:

SF={3,4}

其中,ST 和SF中的数字均为例子集S中的各个例子的序号,且有|S|=6,| ST |=4,| SF |=2。

由ST可知: PST (+) = 2/4

P ST (-) = 2/4

则有:

H(ST)= - (P ST (+)log2 P ST (+) + P ST (-)log2 P ST (- ))

= - ((2/4)log2(2/4) + (2/4)log2(2/4)) =1

再由SF可知: P SF (+)=1/2

P SF (-)=1/2

则有:

H(SF)= - (P(+)log2 P(+) + P(-)log2 P(- ))

= - ((1/2)log2(1/2)+ (1/2)log2(1/2))

=1

将H(ST)和H (SF)代入条件熵公式,有:

H(S|x2)=(|ST|/|S|)H(ST)+ (|SF|/|S|)H(SF) =(4/6)﹡1 + (2/6)﹡1

=1

可见,应该选择属性x1对根节点进行扩展。用x1对S扩展后所得到的部分决策树如下图所示。

34

x1=T (+,+,-) S x1=F (+,-,-) 扩展x1后的部分决策树

在该决策树中,其2个叶节点均不是最终决策方案,因此还需要继续扩展。而要继续扩展,只有属性x2可选择,因此不需要再进行条件熵的计算,可直接对属性x2进行扩展。

对x2扩展后所得到的决策树如下图所示:

x1=T (+,+,-) x2=T (+,+) x2=F x2=T (-) (-,-) S x2=F (+,-,-) x2=F (+)

7-9假设w1(0)=0.2, w2(0)=0.4, θ(0)=0.3, η=0.4,请用单层感知器完成逻辑或运算的学习过程。

解:根据“或”运算的逻辑关系,可将问题转换为: 输入向量:X1=[0, 0, 1, 1] X2=[0, 1, 0, 1] 输出向量:Y=[0, 1, 1, 1]

由题意可知,初始连接权值、阈值,以及增益因子的取值分别为: w1(0)=0.2, w2(0)=0.4, θ(0)=0.3,η=0.4

即其输入向量X(0)和连接权值向量W(0)可分别表示为: X(0)=(-1, x1 (0), x2 (0))

W(0)=(θ(0), w1(0), w2 (0))

根据单层感知起学习算法,其学习过程如下:

设感知器的两个输入为x1(0)=0和x2(0)=0,其期望输出为d(0)=0,实际输出为:

y(0)=f(w1(0) x1(0)+ w2(0) x2(0)-θ(0)) =f(0.2*0+0.4*0-0.3)=f(-0.3)=0

实际输出与期望输出相同,不需要调节权值。

再取下一组输入:x1(0)=0和x2(0)=1,其期望输出为d(0)=1,实际输出为:

y(0)=f(w1(0) x1(0)+ w2(0) x2(0)-θ(0)) =f(0.2*0+0.4*1-0.3)=f(0.1)=1

实际输出与期望输出相同,不需要调节权值。

再取下一组输入:x1(0)=1和x2(0)=0,其期望输出为d(0)=1,实际输出为:

35

扩展x2后得到的完整决策树

y(0)=f(w1(0) x1(0)+ w2(0) x2(0)-θ(0)) =f(0.2*1+0.4*0-0.3)

=f(-0.1)=0

实际输出与期望输出不同,需要调节权值,其调整如下:

θ(1)=θ(0)+η(d(0)- y(0))*(-1)=0.3+0.4*(1-0)*(-1)= -0.1 w1(1)=w1(0)+η(d(0)- y(0))x1(0)=0.2+0.4*(1-0)*1=0.6 w2(1)=w2(0)+η(d(0)- y(0))x2(0)=0.4+0.4*(1-0)*0=0.4

再取下一组输入:x1(1)=1和x2(1)=1,其期望输出为d(1)=1,实际输出为:

y(1)=f(w1(1) x1(1)+ w2(1) x2(1)-θ(1)) =f(0.6*1+0.4*1+0.1)

=f(1.1)=1

实际输出与期望输出相同,不需要调节权值。

再取下一组输入:x1(1)=0和x2(1)=0,其期望输出为d(0)=0,实际输出为:

y(1)=f(w1(1) x1(1)+ w2(1) x2(1)-θ(1)) =f(0.6*0+0.4*0 + 0.1)=f(0.1)=1

实际输出与期望输出不同,需要调节权值,其调整如下:

θ(2)=θ(1)+η(d(1)- y(1))*(-1)= -0.1+0.4*(0-1)*(-1)= 0.3 w1(2)=w1(1)+η(d(1)- y(1))x1(1)=0.6+0.4*(0-1)*0=0.6 w2(2)=w2(1)+η(d(1)- y(1))x2(1)=0.4+0.4*(0-1)*0=0.4

再取下一组输入:x1(2)=0和x2(2)=1,其期望输出为d(2)=1,实际输出为:

y(2)=f(w1(2) x1(2)+ w2(2) x2(2)-θ(2)) =f(0.6*0+0.4*1 - 0.3)=f(0.1)=1 实际输出与期望输出相同,不需要调节权值。

再取下一组输入:x1(2)=1和x2(2)=0,其期望输出为d(2)=1,实际输出为:

y(2)=f(w1(2) x1(2)+ w2(2) x2(2)-θ(2)) =f(0.6*1+0.4*0 - 0.3)=f(0.3)=1 实际输出与期望输出相同,不需要调节权值。

再取下一组输入:x1(2)=1和x2(2)=1,其期望输出为d(2)=1,实际输出为:

y(2)=f(w1(2) x1(2)+ w2(2) x2(2)-θ(2)) =f(0.6*1+0.4*1 - 0.3)=f(0.7)=1 实际输出与期望输出相同,不需要调节权值。

至此,学习过程结束。最后的得到的阈值和连接权值分别为:

θ(2)= 0.3 w1(2)=0.6 w2(2)= 0.4 不仿验证如下: 对输入:“0 0”有y=f(0.6*0+0.4*0-0.3)=f(-0.3)=0 对输入:“0 1”有y=f(0.6*0+0.4*1-0.3)=f(0.1)=1 对输入:“1 0”有y=f(0.6*1+0.4*0-0.3)=f(0.3)=1 对输入:“1 1”有y=f(0.6*1+0.4*1-0.3)=f(0.7)=1

36

37