状态空间表示法
例:设N个传教士带领N个野人划船渡河,且为安全起见,渡河需遵循两个约束:(1)船上的人数不得超过载重限量,设为K个人;(2)为预防野人攻击,任何时刻(包括两岸、船上)野人数目不得超过传教士数目。应如何规划渡河方案?
为便于理解状态空间表示法,可简化该问题到一个特例:N=3,K=2。
解:首先选取描述问题状态的方法。在这个问题中,需要考虑两岸的修道士人数和野人数,还需要考虑船在左岸还是在右岸。从而可用一个三元组来表示状态 S=(m, c, b)
其中,m表示左岸的修道士人数,c表示左岸的野人数,b表示左岸的船数。 右岸的状态可由下式确定: 右岸修道士数 m'=3-m 右岸野人数 c'=3-c 右岸船数 b'=1-b
在这种表示方式下,m和c都可取0、1、2、3中之一,b可取0和1中之一。因此,共有4×4×2=32种状态。
这32种状态并非全有意义,除去不合法状态和修道士被野人吃掉的状态,有意义的状态只有16种:
S0=(3, 3, 1) S1=(3, 2, 1) S2=(3, 1, 1) S3=(2, 2, 1) S4=(1, 1, 1) S5=(0, 3, 1) S6=(0, 2, 1) S7=(0, 1, 1) S8=(3, 2, 0) S9=(3, 1, 0) S10=(3, 0, 0) S11=(2, 2, 0) S12=(1, 1,0) S13=(0, 2, 0) S14=(0, 1, 0) S15=(0, 0, 0) 有了这些状态,还需要考虑可进行的操作。
操作是指用船把修道士或野人从河的左岸运到右岸,或从河的右岸运到左岸。 每个操作都应当满足如下条件:
一是船至少有一个人(m或c)操作,离开岸边的m和c的减少数目应该等于到达岸边的m和c的增加数目;
二是每次操作船上人数不得超过2个; 三是操作应保证不产生非法状态。 因此,操作应由条件部分和动作部分: 条件:只有当其条件具备时才能使用
动作:刻划了应用此操作所产生的结果。 操作的表示:
用符号Pij表示从左岸到右岸的运人操作 用符号Qij表示从右岸到左岸的操作 其中:
i表示船上的修道士人数 j表示船上的野人数 操作集
本问题有10种操作可供选择:
F={P01, P10, P11, P02, P20,Q01, Q10, Q11, Q02, Q20}
1
下面以P01和Q01为例来说明这些操作的条件和动作。
操作符号 条件 动作 P01 b=1, m=0或3, c≥1 b=0, c=c-1 Q01 b=0, m=0或3,c≤2 b=1, c=c+1 于是,从初始状态出发,可画出该问题的状态空间有向图,见图1.1。
二阶梵塔问题
? 设用Sk=(Sk0,Sk1)表示问题的状态,Sk0表示金片A所在钢针号,Sk1表示金片B所在
钢针号,全部可能的状态有九种:
S0=(1,1), S1=(1,2), S2=(1,3) S3=(2,1),S4=(2,2), S5=(2,3) S6=(3,1), S7=(3,2),S8=(3,3) 问题的初始状态集合为S={S0}
目标状态集合为G={S4, S8} 初始状态S0和目标状态S4、S8如图所示
操作分别用A(i, j)和B(i, j)表示
A(i, j)表示把金片A从第i号钢针移到j号钢针上;
B(i, j)表示把金片B从第i号钢针一到第j号钢针上。共有12种操作,它们分别是:
A(1, 2) A(1, 3) A(2, 1) A(2, 3) A(3, 1) A(3, 2)
2
B(1, 2) B(1, 3) B(2, 1) B(2, 3) B(3, 1) B(3, 2) 根据上述9种可能的状态和12种操作,可构成二阶梵塔问题的状态空间图,如下图所示。
? s---指示初始状态节点;G---指示搜索图; ? OPEN---用于存放待扩展节点的表; ? CLOSE---用于存放已扩展节点的表;
? FIRST(OPEN)---指示取OPEN表首的节点作为当前要被扩展的节点n; ? REMOVE(n,OPEN)---将节点n从OPEN表中删去; ? ADD(n,CLOSE)---把节点n加入到CLOSE表中; ? EXPAND(n)---扩展节点n。
深度优先
3
宽度优先
在3×3的方格棋盘上,分别放置了表有数字1、2、3、4、5、6、7、8的八张牌,初始状态S0,目标状态Sg,如下图所示。可以使用的操作有 空格左移,空格上移,空格右移,空格下移
即只允许把位于空格左、上、右、下方的牌移入空格。要求应用宽度优先和深度优先搜索策略寻找从初始状态到目标状态的解路径。
4
评价函数的格式: f(n)=g(n) + h(n) f(n): 评价函数 h(n): 启发函数
? g*(n): 从初始结点s到结点n的最短路径的耗散值; ? h*(n): 从结点n到目标结点g的最短路径的耗散值;
? f*(n)=g*(n)+h*(n): 从初始结点s经过结点n到目标结点g的最短路径的耗散值; ? g(n)、h(n)、f(n)分别是g*(n)、h*(n)、f*(n)的估计值。
5
在A算法中,如果满足条件: h(n)≤h*(n)
则A算法称为A*算法。
6
解树的耗散值可按如下规则计算:
(1)若n为终止节点,则其代价h(n)=0;
(2)若n为或节点,且子节点为n1, n2, … ,nk,则n的代价为: 其中,c(n, ni)是节点n到其子节点ni的边代价。
(3)若n为与节点,且子节点为n1, n2, … ,nk,则n的代价可用和代价法或最大代价法。 若用和代价法,则其计算公式为: 若用最大代价法,则其计算公式为:
(4)若n是端节点,但又不是终止节点,则n不可扩展,其代价定义为h(n)=∝。
(5)根节点的代价即为解树的代价。
7
8
9
10
11
12
13
知识表示方法部分参考答案
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))
14
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表示右岸。 再定义安全性谓词:
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)
15
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 请对下列命题分别写出它们的语义网络: (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
16
(4) 创新公司在科海大街56号,刘洋是该公司的经理,他32岁、硕士学位。 解:参例2.10
(5) 红队与蓝队进行足球比赛,最后以3:2的比分结束。 解: 比赛
AKO Participants1 Outcome 3:2 足球赛 红队 Participants 2
蓝队
2.19 请把下列命题用一个语义网络表示出来: (1) 树和草都是植物; 解:
植物
AKO AKO
树 草
(2) 树和草都有叶和根; 解:
叶 根
Have Have
植物 是一种 是一种
树 草
(3) 水草是草,且生长在水中; 解: AKO Live AKO 水草 草 水中 植物
(4) 果树是树,且会结果; 解:
17
AKO 植物 树 AKO 果树 Can 结果 (5) 梨树是果树中的一种,它会结梨。 解: AKO AKO Can 梨树 果树 结梨 树
2.25 假设有以下一段天气预报:“北京地区今天白天晴,偏北风3级,最高气温12o,最低气温-2o,降水概率15%。”请用框架表示这一知识。
解:
Frame<天气预报> 地域:北京 时段:今天白天 天气:晴 风向:偏北 风力: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
Project :Area(National,Provincial,Other)
18
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
第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
19
由于每次过河船上都必须有农夫,且除农夫外船上只能载狼,羊和菜中的一种,故算符定义如下:
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)
第四步,根据上述定义的状态和操作进行求解。 该问题求解过程的状态空间图如下:
(1,1,l,1)
L(2)
(0,1,0,1) R(0) (1,1,0,1)
L(1) L(3)
(0,0,0,1) (0,1,0,0)
R(2) R(2)
(1,0,1,1) (1,1,1,0)
L(2) L(3)
(0,0,1,0) R(0)
(1,0,1,0) L(2) (0,0,0,0)
4.7 圆盘问题。设有大小不等的三个圆盘A、B、C套在一根轴上,每个盘上都标有数字1、2、3、4,并且每个圆盘都可以独立的绕轴做逆时针转动,每次转动90°,其初始状态S0和目标状态Sg如图4-31所示,请用广度优先搜索和深度优先搜索,求出从S0到Sg的路径。
20
2 C B 2 A 2 3 3 3 1 1 1 4 4 4 1 C 2 B 4 A 2 3 1 3 1 4 2 4 3 初始状态S0 目标状态Sg
图 4-31 圆盘问题
解:设用qA,qB和qC分别表示把A盘,B盘和C盘绕轴逆时针转动90o,这些操作(算符)的排列顺序是qA,qB,qC。
应用广度优先搜索,可得到如下搜索树。在该搜索树中,重复出现的状态不再划出,节点旁边的标识Si,i=0,1,2,…,为按节点被扩展的顺序给出的该节点的状态标识。
由该图可以看出,从初始状态S0到目标状态Sg的路径是 S0→2→5→13(Sg)
21
qA 2 S1 2 1 3 3 24 11 3 4 4 qB 2 S0 C 2 B 2 A 1 1 1 3 3 3 4 4 4 2 1 2 4 3 4 qB S6 qC S3 1 2 2 2 3 3 1 1 4 4 4 3 S2 3 2 3 qC 1 4 1 qA 2 1 S4 S5 2 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城,请找出一条最优线路。
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年
22
的时间。因此,对这类问题只能用搜索的方法来解决。
下图是对图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 9 6 8 3 8 9 23 31 29 25 22 16 19 20 20 C 25 D B 32 C C E 16 B E D D B E
22
21 24 14 26 B 24 27 D E 26 20 27 C D 25 B 17 E C 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 31 E 33 E D D B E 26 B 28 B D
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表示空格。游戏的规定走法是:
(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
23
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的与/或/树,请分别按和代价法及最大代价法求解树的代价。
A 5 6 B C 2 1 7 2 D 2 t1
E 3 t2
解:若按和代价法,则该解树的代价为: 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
24
t3 t4 图4.34 习题4.14的与/或树
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的博弈树
解:各节点的倒推值和剪枝情况如下图所示:
≥4 S0
A ≤0 B ≤4
≥0 C ≥4 D ≥3 E ≥6 F
≤0 ≤-3 H ≤3 I J ≤4 K ≤-3 L ≤6 G M N
0 5 -3 3 3 3 6 6 -2 3 5 4 -3 0 6 8 9 -3
习题4.15的倒推值和剪枝情况
25
三、简答与应用题
2.α-β剪枝的条件是什么? (6分)
2、回答: α剪枝:若任一极小值层节点的β值小于或等于它任一先辈极大值节点的α值,即α(先辈层)≥β(后继层),则可中止该极小值层中这个MIN节点以下的搜索过程。这个MIN节点最终的倒推值就确定为这个β值。 β剪枝:若任一极大值层节点的α值大于或等于它任一先辈极小值层节点的β值,即α(后继层)≥β(先辈层),则可以中止该极大值层中这个MAX节点以下的搜索过程。这个MAX节点的最终倒推值就确定为这个α值。
7. 给1~9九个数字排一个序列,使得该序列的前n(n=1,...,9) 个数字组成的整数能被n整除。 (1)、讨论哪些知识可以帮助该问题的求解。 (2)、用产生式系统描述该问题. (15分)
26
7、如下的知识可以帮助求解该问题:
(1)序列中,偶数在偶数位置,奇数在奇数位置; (2)第五个数为5。 综合数据库:
用一个1到9的序列表示:N = {x},其中x为1到9的数字之一。 规则集:
r1: IF len(N)=4 THEN {x}∪{5}
r2: IF len(N)为偶数and n=In(1, 3, 7, 9) THEN {x}∪{n} r3: IF len(N)为奇数and n=In(2, 4, 6, 8) THEN {x}∪{n}
其中len(N)为求序列的长度,In(a, b, c, d)为取a、b、c、d之一。 初始状态:{}
结束条件:得到的序列N前i个数组成的整数能被i整除
四、应用题(共30分)
1、用语义网络表示下列信息:
(1)胡途是思源公司的经理,他35岁,住在飞天胡同68号
(2)清华大学与北京大学进行蓝球比赛,最后以89:102的比分结束。 答:
27
2、图示博弈树,其中末一行的数字为假设的估值,请利用α-β剪枝技术剪去不必要的分枝。(在节点及边上直接加注释)
1、将命题:“某个学生读过三国演义”分别用谓词公式和语义网络表示 答: 四、1、答:谓词公式表示: ?x(student(x)∧read(x,三国演义)) 语义网络表示如图:
28
1 设有如下问题:
(1)有五个相互可直达且距离已知的城市A、B、C、D、E,如图所示; (2)某人从A地出发,去其它四个城市各参观一次后回到A; (3)找一条最短的旅行路线 请用产生式规则表示旅行过程。 解:①综合数据库(x)
(x)中x可以是一个字母,也可以是一个字符串。 ②初始状态(A)
③目标状态(Ax1x2x3x4A) ④规则集:
r1: IF L(S)=5 THEN GOTO(A) r2: IF L(S)<5 THEN GOTO(B) r3: IF L(S)<5 THEN GOTO(C) r4: IF L(S)<5 THEN GOTO(D) r5: IF L(S)<5 THEN GOTO(E)
其中L(S)为走过的城市数,GOTO(x)为走向城市x ⑤路线如下图所示:
起始 7
( AB ) 7
( A CB) 5 ( AC ) 6 ( A CD) 10
( A CDB)
8
( ACDE ) 10 ( ACDEB ) 7
9
( ACE ) ( A ) 10
( AD )
10
( AE ) ( ACDEBA)
目标
最短旅行路线为:A->C->D->E->B->A
29
总距离为5+6+8+10+7=36
2 神州大学和东方大学两校篮球队在东方大学进行一场比赛,结局的比分是85:89,用语义网络表示。
30
广度优先搜索 深度优先搜索 盲目搜索 状态空间 搜索策略 有界深度优先搜索 代价树的广度优先搜索 代价树的深度优先搜索 局部择优搜索 启发式搜索 搜索策略 A*算法 广度优先搜索 盲目搜索 与/或树 搜索策略 有序搜索 特殊情况 提高搜索效率的方法 全局择优搜索 深度及有界深度优先搜索 博弈问题 α-β剪枝技术
博弈问题:
极大极小分析法:计算出端节点的估值,再推算出父节点的得分。
推算的方法是:对“或”节点,选其子节点中一个最大的得分作为父节点的得分,这是为了使自己在可供选择的方案中选一个对自己最有利的方案;对“与”节点,选其子节点中一个最小的得分作为父节点的得分,这是为了立足于最坏的情况。这样计算出的父节点的得分称为倒推值。
α-β剪枝技术:
对于一个“与”节点来说,它取当前子节点中的最小倒推值作为它倒推值的上界,称此值为 β值。对于一个“或”节点来说,它取当前子节点中的最大倒推值作为它倒推值的下界,称此值为α值。
其一般规律为:(1)任何“或”节点x的α值如果不能降低其父节点的β值,则对节点x以下的分枝可停止搜索,并使x的倒推值为α。这种剪枝成为β剪枝。
(2)任何“与”节点x的β值如果不能升高其父节点的α值,则对节点x以下的分枝可停止搜索,并使x的倒推值为β。这种剪枝成为α剪枝。
31
1 图4-1是五城市间的交通路线图,A城市是出发地,E城市是目的地,两城市间的交通费用
(代价)如图中数字所示。求从A到E的最小费用交通路线。
图4-1
解:先将交通图转换为代价树,如图4-2所示。
若用g(x)表示从初始节点s0到节点x的代价,用c(x1,x2)表示从父节点x1到子节点x2的代价,则有:
g(x2)=g(x1)+c(x1,x2)
A
3 4
C1 B1 2 4 5 D1D2 E1 3 4 2 3
B2 C2 E3 E2
5
E4
图4-2
方法一:代价树的广度优先搜索
(扩展节点n,将其子节点放入open表中,计算各子节点的代价,并按各节点的代价对open表中全部节点按从小到大的顺序进行排序(队列))
32
步骤如下:
图4-3-1
图4-3-2
图4-3-3
33
图4-3-4
图4-3-5
所以,最优路径为A->C->D->E
34
方法二:代价树的深度优先搜索(不一定是最优解)
(扩展节点n,将其子节点按代价从小到大的顺序放到open表的首部(栈)) 步骤如下:
A C1 3 B1 4 图4-4-1
A C1 3 B1 4 2 D1 5 图4-4-2 A C3 B4 D1 5 3 4 EB8 9 图4-4-3
E
虽然D1的代价大于B1的代价,但按照代价树的深度优先搜索策略,要对D1进行扩展,放入closed表中(若按代价树的广度优先搜索,要对B1、D1排序,先扩展B1)
E为目标节点,E2->D1->C1->A所以路径为A->C->D->
35
注:该题代价树的深度优先搜索与代价树的广度优先搜索的结果相同,但这只是巧合。一般情况下,这两种方法得到的结果不一定相同。另外,由于代价树的深度优先搜索有可能进入无穷分支的路径,因此它是不完备的。
2 如下图4-5所示,分别用代价树的广度优先搜索策略和代价树的深度优先搜索策略,
求A到E的最短费用路径。
A 6 B 5 图4-5
解:先将其化成代价树,如图4-6:
A 6 B1 5 D1 7 C2 8 E4 图4-6
(1)代价树的广度优先搜索,步骤如下: A
6 B1 C1 7
36
7 7 C 8 D 6 E 7 C1 7 D2 6 E2 5 B2 6 E3 8 E1 图4-7-1
A 6 B1 C1 7 5 D1 11 图4-7-2 A 6 B1 C1 7 7 8 5 D1 D2 E1 11 14 15
图4-7-3 E为目标节点,路径为A->C->E,代价为15。
(2)代价树的深度优先搜索,步骤如下:
A
6 B1 C1
7
5
D1 11 图4-8-1
A 6 B1 C1 7 5 D1 11 7 6 C2 E2 18 17 37
图4-8-2
虽然C1代价低于D1,但按照代价树的深度优先搜索策略,对D1进行扩展,放入closed表中,因为B1扩展的节点为D1,而C1是A节点扩展得到的。E出栈,为目标节点,结束。故解路径为A->B->D->E,代价为17,不是最优解。
注:深度优先搜索是不完备的,即使问题有解,也不一定能求得解。得到的解也不一定是最优解(因为是局部优先搜索)。
3 下图是五城市间的交通费用图,若从西安出发,要求把每个城市都访问一遍,最后到达广州,请找一条最优路线。边上的数字是两城市间的交通费用。
北京B 80 170 75 西安 120 160 A上海D S0 150 130 95 70 昆明C 90 广州E Sg 图4-9 解:先画出代价树:
38
A 80 95 120 150 B1 170 75 160 170 C1 90 130 75 D1 70 130 E1 C2 130 90 130 D2 70 E2 75 B2 160 75 D3 70 E3 B3 C3 E4 D4 E5 C4 90 E6 D5 E7 B4 E8 C5 E9 B5 E10 E11 E12 E13 E14 E15 E16 图4-10
按代价树的广度优先搜索即可得出最优路线,步骤如下:
A B1 80 95 C1 120 D1 E1 150 图4-11-1
39
A 80 B1 95 C1 120 D1 E1 150 C2 250 D2 155 E2 240 图4-11-2
C2 250
A 80 B1 95 C1 120 D1 E1 150 D2 155 E2 240 B2 265 D3 225 E3 185 图4-11-3
A 80 B1 95 C1 120 D1 E1 150 C2 250 D2 155 E2 240 B2 265 D3 225 E3 185 B3 195 C3 250 E4 190 图4-11-4
40
A 80 B1 95 C1 120 D1 E1 150 C2 250 155 D2 E2 240 B2 265 D3 225 E3 185 B3 195 C3 250 E4 190 D4 380 E5 340 C4 285 E6 225 D5 340 E7 425 B4 300 E8 295 C5 365 E9 355 B5 420 E10 340 E12 375 图4-11-5
故由此得出最优路线为A->B1->D2->C4->E12 即A->B->D->C->E,交通费用为375。
4 设有如图所示的一棵与/或树,请分别用与/或树的广度优先搜索及与/或树的深度优先搜索求出解树。
A B D t1 t2 t5 C t3 t4
解:(1)与/或树的广度优先搜索
先扩展节点A,得到节点B和C,再扩展节点B,得节点t1、t2,因为t1、t2为可解节点,故节
41
点B可解,从而可节点A可解。 所以求得解树为: A
B
t1 t2
(2)与/或树的深度优先搜索
先扩展节点A, 得到节点B和C,再扩展节点C, 得节点D和t5,t5为可解节点,再扩展节D,得节点t3、t4,因为t3、t4为可解节点,故节点D可解,因为节点D和t5可解,故节点C可解,从而可节点A可解。 所以求得解树为:
A
C
D
t5
t3 t4
5 设有如图所示的与/或树,请分别按和代价法及最大代价法求解树代价。
5 7 B 2 D 2 t1 3 t2
(1) 按和代价法:h(B)=7,h(C)=3,h(A)=7+3+5+6=21 (2) 按最大代价法:h(B)=5,h(C)=2,h(A)=5+5=10
42
A 6 2 C 1 t4 t3