第四章 状态空间搜索

79
artment of Computer Science & Technology, Nanjing University Artificial Intelligence Artificial Intelligence Spring 第第第 第第第第第第 第第第第第第第第第 第第第第 第第第第第第第第第 第第第第第第第第第第 第第第第第第第第 / / 第第第第第第第 第第第第第第第 第第第第第第第

Upload: belita

Post on 19-Mar-2016

91 views

Category:

Documents


4 download

DESCRIPTION

第四章 状态空间搜索. 用搜索法对问题求解 问题实例 状态空间搜索的结构 问题的状态空间表示法 状态空间搜索策略 与 / 或树的盲目搜索 基于递归的搜索. 4.1 用搜索法对问题求解. 一个问题可以形式化地定义为四个组成部分: 初始状态 可能行动的描述 目标测试 路径耗散. 问题的解就是从初始状态到目标状态的路径. 寻找解的过程就是搜索. 4.1 用搜索法对问题求解. 要成功地设计和实现搜索算法 : 问题求解器是否一定能找到一个解 ? 问题求解器是否能终止运行 , 或是否会陷入一个死循环 ? - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第四章 状态空间搜索

Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

第四章 状态空间搜索 用搜索法对问题求解问题实例状态空间搜索的结构问题的状态空间表示法状态空间搜索策略与与 // 或树的盲目搜索或树的盲目搜索基于递归的搜索

Page 2: 第四章 状态空间搜索

2Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.1 用搜索法对问题求解一个问题可以形式化地定义为四个组成部分:初始状态可能行动的描述目标测试路径耗散问题的解就是从初始状态到目标状态的路径寻找解的过程就是搜索

Page 3: 第四章 状态空间搜索

3Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

要成功地设计和实现搜索算法 :问题求解器是否一定能找到一个解 ? 问题求解器是否能终止运行 , 或是否会陷入一个死循环 ?当问题求解器找到解时 , 找到的是否是最好的解 ?搜索过程的时间与空间复杂性如何 ? 怎样才能最有效地降低搜索的复杂性 ?怎样设计才能最有效地利用描述语言 ?

4.1 用搜索法对问题求解

Page 4: 第四章 状态空间搜索

4Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

状态空间的理论是我们用来回答这些疑问最主要的工具。4.1 用搜索法对问题求解

图由结点集和连接结点对的弧或边的集合组成。 结点:问题求解中的不同状态(棋局 / 推理结果) 弧:状态之间的转换(一步走棋 / 一条规则运用)

Page 5: 第四章 状态空间搜索

5Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

1. 二阶梵塔问题设有三根钢针,它们的编号分别是 1 号、 2 号和 3 号。在初始情况下, 1 号钢针上穿有 A 、 B 两个金片, A 比 B 小, A 位于 B 的上面。要求把这两个金片全部移到另一根钢针上,而且规定每次只能移动一个金片,任何时刻都不能使大的位于小的上面。 解:全部可能的问题状态共有以下 9 种: 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)

4.2 问题实例

Page 6: 第四章 状态空间搜索

6Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

  

问题的初始状态集合 :

目标状态集合 :

AB

AB

AB

1 2 3 1 2 3 1 2 3

二阶梵塔问题的初始状态和目标状态

初始状态 S0 和目标状态 S4 、 S8 如图所示

S0=(1, 1) S4=(2, 2) S8=(3, 3)

S={S0} =(1, 1)

G={S4, S5}={(2,2),(3,3)}

Page 7: 第四章 状态空间搜索

7Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

操作分别用 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) B(1, 2) B(1, 3) B(2, 1) B(2, 3) B(3, 1) B(3, 2)

一个问题可以形式化地定义为四个组成部分:初始状态可能行动的描述目标测试路径耗散AB

AB

AB

1 2 3 1 2 3 1 2 3

二阶梵塔问题的初始状态和目标状态S0=(1, 1) S4=(2, 2) S8=(3, 3)

Page 8: 第四章 状态空间搜索

8Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

(3,3) (1,3) (1,2) (2,2)

从初始节点 (1, 1) 到目标节点 (2, 2) 及 (3, 3) 的任何一条路径都是问题的一个解。最短的路径长度是 ?

A(1,2)

B(1,3)

A(2,3)

(1,1)

(3,1)

(3,2)

(2,1)

(2,3)

A(1,3)

B(1,2)

A(3,2)

AB

AB

AB

1 2 3 1 2 3 1 2 3

S0=(1, 1) S4=(2, 2) S8=(3, 3)

Page 9: 第四章 状态空间搜索

9Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

a bc

2 猴子摘香蕉问题

解: 4 元组 ( w, x, y, z)

其中: w 表示猴子的水平位置; x 表示箱子的水平位置; y 表示猴子是否在箱子上,当猴子在箱子上时, y 取 1 ,否则y 取 0 ; z 表示猴子是否拿到香蕉,当拿到香蕉时 z 取 1 ,否则 z 取 0。

Page 10: 第四章 状态空间搜索

10Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

初始状态 :

a bc

S0: (a, b, 0, 0)

S1: (b, b, 0, 0)

S2: (c, c, 0, 0)

S3: (c, c, 1, 0)S4: (c, c, 1, 1) 目标状态

允许的操作为 : Goto(u) :猴子走到位置 u ,即 (w, x, 0, 0)→(u, x, 0, 0) Pushbox(v): 猴子推着箱子到水平位置 v ,即 (x, x, 0, 0)→(v, v, 0, 0) Climbbox: 猴子爬上箱子,即 (x, x, 0, 0)→(x, x, 1, 0) Grasp ;猴子拿到香蕉,即 (c, c, 1, 0 )→(c, c, 1, 1)

Page 11: 第四章 状态空间搜索

11Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

猴子摘香蕉问题的解(a,b,0,0)

(b,b,0,0)

(c,c,0,0) (b ,b,1,0)

(c,c,1,0) (a,a,0,0)

(c,c,1,1)

初始状态Goto(b)

Goto(b)

Pushbox(c)

Grasp

目标状态 猴子摘香蕉问题的状态空间图

解序列为: {Goto(b), Pushbox(c), Climbbox, Grasp}

Pushbox(c) Climbbox

ClimbboxPushbox(c)

Pushbox(a)

Pushbox(a)

a bc

Page 12: 第四章 状态空间搜索

12Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

3. 八数码问题

7 2 4

5 6

8 3 1 876

543

21

Page 13: 第四章 状态空间搜索

13Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

状态:状态描述了 8 个棋子中的每一个以及空位在棋盘的9 个方格上的分布。初始状态:任何状态都可以被指定为初始状态。注意要到达任何一个给定的目标,可能的初始状态中恰好只有一半可以作为开始。后继函数:用来产生通过四个行动(把空位向 Left , Right , Up 或 Down 移动)能够达到的合法状态。目标测试:用来检测状态是否能匹配所要求的目标格局。路径耗散:每一步的耗散值为 1 ,因此整个路径的耗散值为路径中的步数。

八数码问题

Page 14: 第四章 状态空间搜索

14Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

2 8 31 47 6 5

2 8 3 1 47 6 5

2 31 8 47 6 5

2 8 31 47 6 5

2 8 31 6 47 5

8 32 1 47 6 5

2 8 37 1 4 6 5

2 31 8 47 6 5

2 31 8 47 6 5

2 8 1 4 37 6 5

2 8 31 4 57 6

2 8 31 6 4 7 5

2 8 31 6 47 5

8 32 1 47 6 5

2 8 37 1 46 5

8 3 2 1 47 6 5

8 1 32 47 6 5

2 8 37 46 1 5

2 8 37 1 46 5

1 2 38 47 6 5

1 2 37 8 4 6 5

1 2 3 8 47 6 5

2 3 41 8 7 6 5

2 81 4 37 6 5

2 8 31 4 57 6

2 8 3 6 41 7 5

2 8 31 6 7 5 4

S0 1

2 3 4 5

6 7 8 9 10 11 12 13

14 15 16 17 18 19 20 21

22 23 24 25 26 27

Sg

Page 15: 第四章 状态空间搜索

15Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4. 八皇后问题*

**

**

**

*

Page 16: 第四章 状态空间搜索

16Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4. 八皇后问题状态:把 8 个皇后摆放在棋盘上的任何安排都是一个状态。初始状态:棋盘上没有皇后。后继状态:把一个皇后添加到棋盘上的任何空格。目标测试: 8 个皇后都在棋盘上,并且互相攻击不到。

Page 17: 第四章 状态空间搜索

17Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

图是结点及连接它们的边的集合。如果图中每个结点都有一个或多个描述符 ( 标记 ) 使之与其他结点区别开来 , 这样的图称为标记图。有方向性的弧连接的图是有向图。 图中的弧也可以做上标记,用来给关系取名或表示权值。当一对结点间有多条弧相连时,这种方法可以使之区别。

4.3 状态空间搜索的结构

Page 18: 第四章 状态空间搜索

18Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

结点集 ={A, B, C, D, E}

弧集 ={(A,B), (A,D), (B,C), (C,B), (C,D), (D,A),(D,E), (E,C), (E,D)}

有向图

E

AB

D

C

Page 19: 第四章 状态空间搜索

19Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

有根树 , 一个家庭关系的例子

A

C

FE G H I J

DB

4.3 状态空间搜索的结构有根图具有唯一一个称为根的结点 , 从根结点出发到图中任何结点都存在相应路径。

Page 20: 第四章 状态空间搜索

20Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

用来描述结点之间关系:祖先、后裔、父母、子女、兄弟 4.3 状态空间搜索的结构

E

AB

D

C

Page 21: 第四章 状态空间搜索

21Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.4 问题的状态空间表示法图的结点和弧分别表示问题求解过程中解题状态和解题步骤。初始状态对应于实际问题的已知信息 , 是图中的根结点。目标就是实际问题的解。状态空间搜索将问题求解过程表现为从初始状态到目标状

态寻找这个路径的过程。

Page 22: 第四章 状态空间搜索

22Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

[ 定义 ] 状态空间搜索状态空间是一个四元组 [N,A,S,GD]:N 是图中状态结点集 ,代表问题求解过程中的各种状态。A 是结点间弧 ( 或链 ) 的集合 ,代表问题求解过程的各个步骤。S 是 N 的非空子集 ,包含问题的初始状态。GD 是 N 的非空子集 ,包含问题的目标状态。GD 中的状态可用两种方式中的任一种来描述:搜索中遇到了目标状态的可检测的性质;欲搜索的路径的性质。图中从 S 中结点到 GD 中结点的路径称为求解路径。搜索算法的任务是在问题空间里找到一条求解路径。它包含了一系列使问题得到解决的操作 ( 算子 ) 。

4.4 问题的状态空间表示法

Page 23: 第四章 状态空间搜索

23Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

例: 旅行推销员问题假设一个推销员要到 5个城市去访问 ,然后回家。问题是要找到一条最短的路径 , 使得推销员访问过每个城市后回到出发地。假定推销员在 A城 , 他最后要返回原地。

4.4 问题的状态空间表示法

BA

C

D

E

100

100

100

50125

125

12575

75

50

Page 24: 第四章 状态空间搜索

24Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

图 旅行推销员问题的一个例子 [A,D,C,B,E,A]:

BA

C

D

E

100

100

100

50125

125

12575

75

50

4.4 问题的状态空间表示法

开销为 450

目标要求的是有最小开销的完整回路。

Page 25: 第四章 状态空间搜索

25Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

多种可能解题路径的方法。目标是开销最小的路径。遍历搜索旅行推销员问题的复杂度为 (N-1)!

4.4 问题的状态空间表示法

减少搜索的复杂性

Page 26: 第四章 状态空间搜索

26Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

减少搜索的复杂性4.4 问题的状态空间表示法

有限分枝法 回路的开销作为界限,以检验以后的侯选路径。每次加入一条路径,如果发现扩展它的最好结果的开销比界限值大,就不在沿着这条路径的方向继续搜索。“最近邻居”法 “按照去最近的、未到达的城市”规则构筑路径

Page 27: 第四章 状态空间搜索

27Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

图 旅行推销员问题的一例

BA

C

D

E

100

100

100

50125

125

30075

75

50

4.4 问题的状态空间表示法

Page 28: 第四章 状态空间搜索

28Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.5 状态空间搜索策略 4.5.1 数据驱动和目标驱动的搜索状态空间可以从两个方向进行搜索:从实际问题的给定数据向目标搜索或者从目标到数据进行搜索数据驱动推理是运用问题给出的条件及规则或合法移动, 产生新的条件 , 向目标靠近 ;目标驱动推理着眼于目标, 寻找产生目标的规则 , 通过反向连续的规则和子目标进行反向推理直至找到问题给出的条件。采用哪种方式取决于求解问题的结构。

Page 29: 第四章 状态空间搜索

29Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

目标驱动搜索可用于下列情况 :

——问题的说明中给出了目标或假设 , 或者很容易用公式来表示它们。 ——有大量的规则适用于问题的条件 , 因而可以推出许多结论和结果 , 较早地选好目标可剪掉空间中许多分枝 , 使目标驱动搜索的效率更高。 ——问题没有给出数据 ,必须在求解中获取。

4.5.1 数据驱动和目标驱动的搜索

Page 30: 第四章 状态空间搜索

30Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

数据驱动搜索可用于下列情况 :

——问题的初始说明给出了全部或大部分数据。 ——存在大量可能的目标 ,但对实际问题的条件及给定的信息加以运用的方法很少 。 ——难以形成一个目标或假设。

4.5.1 数据驱动和目标驱动的搜索

Page 31: 第四章 状态空间搜索

31Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.5.2 图搜索的实现 状态空间搜索的基本思想 :• 先把问题的初始状态作为当前扩展节点对其进行扩展,生成一组子节点• 然后检查问题的目标状态是否出现在这些子节点中。• 若出现,则搜索成功,找到了问题的解;若没出现,则再按照某种搜索策略从已生成的子节点中选择一个节点作为当前扩展节点。• 重复上述过程,直到目标状态出现在子节点中或者没有可供操作的节点为止。

“扩展”是指对该节点用某个可用操作进行作用,生成该节点的一组子节点

Page 32: 第四章 状态空间搜索

32Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.5.2 图搜索的实现 应用回溯算法

J

DC

GF

IH

E

B

A

754

3

2

110

6

8

9

图一个假想状态空间的深度优先回溯搜索

goal

Page 33: 第四章 状态空间搜索

33Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.5.2 图搜索的实现定义一个回溯搜索的算法。设 :SL 为状态表 , 列出了当前路径上的状态。NSL 为新状态表 , 包含了等待评估的结点 , 其后裔结点还未被扩展。DE 为不可解节点集。CS 为当前正在检测的状态 , 即当前状态。

Page 34: 第四章 状态空间搜索

34Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.5.2 图搜索的实现function backtrack ; begin

SL:=[Start];NSL:=[Start] ; DE=[ ] ; CS:=Start ; % 初始化 while NSL≠[ ] % 还有未检查的状态 do begin if CS= 目标 ( 或符合目标的要求 ) then return(SL) ; % 成功 ,返回路径中状态的表 if CS 没有子状态 ( 不包括 DE 、 SL 和 NSL 中已有的状态 ) then begin while((SL非空 )and(CS=SL 中第一个元素 ))

Page 35: 第四章 状态空间搜索

35Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

do begin 将CS加入 DE;% 标明此状态不可解 从 SL中删除第一个元素;% 回溯 从 NSL中删去第一个元素; CS:=NSL中第一个元素;end;将CS加入 SL;end else begin 将CS子状态 (不包括DE、 SL、 NSL中已有的 ) 加入NSL; CS:=NSL中第一个元素; 将CS加入 SL; endend return FAIL; % 整个空间搜索完end.

4.5.2 图搜索的实现

Page 36: 第四章 状态空间搜索

36Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

J

DC

GF

IH

E

B

A

754

3

2

1

10

6

8

9goal

CS SL NSL DEA [A] [A] [ ]B [BA] [BCDA] [ ]E [EBA] [EFBCDA] [ ]H [HEBA] [HIEFBCDA] [ ]I [IEBA] [IEFBCDA] [H]F [FBA] [FBCDA] [EIH]J [JFBA] [JFBCDA] [EIH]C [CA] [CDA] [BFJEIH]G [GCA] [GCDA] [BFJEIH]

初值: SL=[A] ; NSL=[A] ; DE=[ ] ; CS=A ;

Page 37: 第四章 状态空间搜索

37Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.5.2 图搜索的实现 用未处理状态表 (NSL)使算法能返回 (回溯 )到其中任一个状态。 有一张 "坏 "状态表 (DE) 避免算法重新搜索无解的路径。 有当前解题路径状态表 (SL), 当满足目标时可以将它〈作为结果〉返回。 为避免陷入死循环必须是显式地对新状态进行检查, 看它是否在三张表中。

Page 38: 第四章 状态空间搜索

38Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

Backtrack 是状态空间搜索的一个基本算法 , 后面所讲的图搜索算法 ,包括深度优先 ,广度优先 , 最好优先搜索 , 都有回溯中的思想。 基本思想是用表来保存搜索空间中状态轨迹的搜索算法。

Page 39: 第四章 状态空间搜索

39Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

度量问题求解的性能完备性最优性时间复杂度空间复杂度

当问题有解时,这个算法是否能够保证找到一个解

这个搜索策略是否能够找到最优解

找到一个解需要花费多长时间

在执行搜索的过程中需要多少内存

Page 40: 第四章 状态空间搜索

40Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.5.3 深度和广度优先搜索

广度优先的基本思想: 从初始节点 S0 开始逐层向下扩展,在第 n层节点还没有全部搜索完之前,不进入第 n+1层节点的搜索。 Open 表中的节点总是按进入的先后排序,先进入的节点排在前面,后进入的节点排在后面。

深度优先的基本思想: 从初始节点 S0 开始,在其子节点中选择一个最新生成的节点进行考察,如果该子节点不是目标节点且可以扩展,则扩展该子节点,然后再在此子节点的子节点中选择一个最新生成的节点进行考察,依此向下搜索,直到某个子节点既不是目标节点,又不能继续扩展时,才选择其兄弟节点进行考察。

Page 41: 第四章 状态空间搜索

41Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

J

DC

GF

IH

E

B

A

754

3

2

1

10

6

8

9goal

4.5.3 深度和广度优先搜索

Page 42: 第四章 状态空间搜索

42Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

在深度优先搜索中,当查到某一个状态时,它所有的子状态以及子状态的后裔结点必须先于该状态的兄弟状态被查找。尽量往深处走,只有再也找不出其后裔时才考虑兄弟。广度优先搜索是一层一层地搜索空间,仅当某一层的状态全部搜索完毕,它才转入下一层搜索。

4.5.3 深度和广度优先搜索

Page 43: 第四章 状态空间搜索

43Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.5.3 深度和广度优先搜索

图 用于广度及深度优先搜索的例图

A

C

FE G H I J

DB

U

ML

S

K N O P RQ

T

Page 44: 第四章 状态空间搜索

44Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.5.3 深度和广度优先搜索广度优先搜索关于实现:为了保存状态空间搜索的轨迹 , 用到了 : open表和 closed表open表:列出了已经产生出来但子状态未被查找的状态。closed表:记录了已检查过的状态。

Page 45: 第四章 状态空间搜索

45Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

procedure breadth_first_search lnitialize:open=[start];closed=[ ]; while open≠[ ] do begin 从 open表中删除最左边的状态 X; if X 是目标 ,then 返回 (success); 生成 X 所有的子状态 ; 将 X 放入 closed 表中 ; 从 X 的子状态中删除已经在 open或 closed表中的状态; 将其余子状态按生成的次序放入 open表的右边。end

广度优先搜索

Page 46: 第四章 状态空间搜索

46Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

A

C

FE G H I J

DB

U

ML

S

K N O P RQ

T

目标状态

1.open=[A]; closed=[ ];2.open=[B,C,D]; closed=[A];3.open=[C,D,E,F]; closed=[B,A]4.open=[D,E,F,G,H]; closed=[C,B,A]5.open=[E,F,G,H,I,J]; closed=[D,C,B,A]6.open=[F,G,H,I,J,K,L]; closed=[E,D,C,B,A]7.open=[G,H,I,J,K,L,M]; closed=[F,E,D,C,B,A]8.open=[H,I,J,K,L,M,N]; closed=[G,F,E,D,C,B,A]如此重复直到 U 或 open=[ ]

Page 47: 第四章 状态空间搜索

47Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

是完备的所需的时间和内存:

广度优先搜索

指数级复杂度深度 节点数 时间 内存

2 1100 0.11秒 IMB

4 111 , 100 11秒 106MB

6 107 19 分钟 10GB

8 10931 小时 1TB 10 1011 129天 101TB

Page 48: 第四章 状态空间搜索

48Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.5.3 深度和广度优先搜索深度优先搜索 ——如果已知解题路径很长 ,深度优先搜索就不会在图中大量的“浅层”状态上浪费时间。 ——但深度优先搜索会在图的深处“迷失方向” , 找不到目标的更短路径或陷入到一个不通往目标的无限长的路径中。 ——深度优先搜索耗费的空间量是路径长度值的线性函数。 ——深度优先搜索不是最优的,不是完备的。

Page 49: 第四章 状态空间搜索

49Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.5.4 有界深度优先搜索 无边界的搜索树问题可以通过对深度优先搜索提供一个预先设定的深度限制来解决。一旦搜索路径进入某一层时,深度限制便强迫该路径上的搜索失败。解决了无穷路径问题。又是造成不完备的原因。深度优先搜索可以看作是有界深度优先搜索的一种特殊情况。

Page 50: 第四章 状态空间搜索

50Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

例:八数码问题。在 3×3 的方格棋盘上,分别放置了表有数字 1 、 2 、 3 、 4 、 5 、 6 、 7 、 8 的八张牌,初始状态 S0 ,目标状态 Sg ,如下图所示。可以使用的操作有: 空格左移,空格上移,空格右移,空格下移即只允许把位于空格左、上、右、下方的牌移入空格。

2 8 3

1 4

7 6 5

1 2 3

8 4

7 6 5

S0 Sg

•广度优先搜索策略•深度优先搜索策略

Page 51: 第四章 状态空间搜索

51Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

2 8 31 47 6 5

2 8 3 1 47 6 5

2 31 8 47 6 5

2 8 31 47 6 5

2 8 31 6 47 5

8 32 1 47 6 5

2 8 37 1 4 6 5

2 31 8 47 6 5

2 31 8 47 6 5

2 8 1 4 37 6 5

2 8 31 4 57 6

2 8 31 6 4 7 5

2 8 31 6 47 5

8 32 1 47 6 5

2 8 37 1 46 5

8 3 2 1 47 6 5

8 1 32 47 6 5

2 8 37 46 1 5

2 8 37 1 46 5

1 2 38 47 6 5

1 2 37 8 4 6 5

1 2 3 8 47 6 5

2 3 41 8 7 6 5

2 81 4 37 6 5

2 8 31 4 57 6

2 8 3 6 41 7 5

2 8 31 6 7 5 4

S0 1

2 3 4 5

6 7 8 9 10 11 12 13

14 15 16 17 18 19 20 21

22 23 24 25 26 27

Sg

广度优先搜索:

Page 52: 第四章 状态空间搜索

52Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

2 8 31 47 6 5

2 8 3 1 47 6 5

2 31 8 47 6 5

2 8 31 47 6 5

2 8 31 6 47 5

2 8 31 6 4 7 5

2 8 31 6 47 5

2 8 31 6 7 5 4

2 8 31 67 5 4

2 8 1 6 37 5 4

2 81 6 37 5 4

S0 1

2 3 4 5 6深度优先搜索:

Page 53: 第四章 状态空间搜索

53Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

•基本思想 当一问题较复杂时,可通过分解或变换,将其转化为一系列较简单的子问题,然后通过对这些子问题的求解来实现对原问题的求解。 •分解 如果一个问题 P 可以归约为一组子问题 P1,P2,…,Pn ,并且只有当所有子问题 Pi 都有解时原问题 P 才有解,任何一个子问题 Pi无解都会导致原问题 P无解,则称此种归约为问题的分解。 即分解所得到的子问题的“与”与原问题 P等价。•等价变换 如果一个问题 P 可以归约为一组子问题 P1,P2,…,Pn ,并且子问题Pi 中只要有一个有解则原问题 P 就有解,只有当所有子问题 Pi 都无解时原问题 P 才无解,称此种归约为问题的等价变换,简称变换。 即变换所得到的子问题的“或”与原问题 P等价。

4.6 与或树4.6.1 问题的分解与等价变换

Page 54: 第四章 状态空间搜索

54Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

P

P1 P2 P3

与树

(1) 与树 分解

P1 P2 P3

或树

P(2) 或树 等价变换

P

P1 P2 P3

P12 P12 P31 P32 P33

与 / 或树

(3) 与 / 或树

4.6 与或树4.6.2 与或树表示法

Page 55: 第四章 状态空间搜索

55Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

关于与或树表示法P

P1 P2 P3

P12 P12 P31 P32 P33

与 / 或树

与 / 或树

•终止节点一定是端节点•但端节点却不一定是终止节点

端节点与终止节点

Page 56: 第四章 状态空间搜索

56Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

可解节点:在与 / 或树中,满足以下三个条件之一:• 任何终止节点都是可解节点。• 对“或”节点,当其子节点中至少有一个为可解节点时,则该或节点就是可解节点。• 对“与”节点,只有当其子节点全部为可解节点时,该与节点才是可解节点。

P

P1 P2 P3

P12 P12 P31 P32 P33

与 / 或树

Page 57: 第四章 状态空间搜索

57Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

可用类似的方法定义: • 不为终止节点的端节点是不可解节点。• 对“或”节点,若其全部子节点都为不可解节点,则该或节点是不可解节点。• 对“与”节点,只要其子节点中有一个为不可解节点,则该与节点是不可解节点。

不可解节点: P

P1 P2 P3

P12 P12 P31 P32 P33

与 / 或树

Page 58: 第四章 状态空间搜索

58Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

P

t

t t

解树

解树:由可解节点构成,并且由这些可解节点可以推出初始节点(它对应着原始问题)为可解节点的子树为解树。在解树中一定包含初始节点。问题归约求解过程 : 生成解树,即证明原始节点是可解节点的过程这一过程涉及到与 / 或树的搜索

Page 59: 第四章 状态空间搜索

59Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

例 4.4 三阶梵塔问题。要求把 1 号钢针上的 3 个金片全部移到 3 号钢针上,

1 2 3 1 2 3

4.6.3 与 / 或树表示的例子

ABC

解:用三元组 (i, j, k)表示问题在任一时刻的状态,用“→”表示状态的转换。上述三元组中 i :金片 C 所在的钢针号 j :金片 B 所在的钢针号 k :金片 A 所在的钢针号

Page 60: 第四章 状态空间搜索

60Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

利用问题归约方法,原问题可分解为以下三个子问题:( 1 )把金片 A 及 B 移到 2 号钢针上的双金片移动问题。 即 (1, 1, 1)→(1, 2, 2)( 2 )把金片 C 移到 3 号钢针上的单金片移动问题。 即 (1, 2, 2)→(3, 2, 2)( 3 )把金片 A 及 B 移到 3 号钢针的双金片移动问题。 即 (3, 2, 2)→( (3, 3, 3)

1 2 3 1 2 3

ABC

Page 61: 第四章 状态空间搜索

61Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

三阶梵塔问题的分解过程可用如下图与 / 或树来表示 (1,1,1)→(3,3,3)

(1,1,1)→(1,2,2) (1,2,2)→(3,2,2) (3,2,2)→(3,3,3)

(1,1,1)→(1,1,3) (1,1,3)→(1,2,3) (1,2,3)→(1,2,2) (3,2,2)→(3,2,1) (3,2,1)→(3,3,1) (3,3,1)→(3,3,3)

在该与 / 或树中,有 7 个终止节点,它们分别对应着 7 个原本问题。如果把这些原本问题从左至右排列起来, (1, 1, 1)→(1, 3, 3) (1, 3, 3)→(1, 2, 3) (1, 2, 3)→(1, 2, 2) (1, 2, 2)→(3, 2, 2) → (3, 2, 2)→(3, 2, 1) (3, 2, 1)→(3, 3, 1) (3, 3, 1)→(3, 3, 3)

即得到了原始问题的解

Page 62: 第四章 状态空间搜索

62Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

•是一个不断寻找解树的过程。•一般搜索过程如下:(1)把原始问题作为初始节点 S0,并把它作为当前节点; (2) 应用分解或等价变换操作对当前节点进行扩展; (3)为每个子节点设置指向父节点的指针; (4) 选择合适的子节点作为当前节点,反复执行第 (2)步和第 (3)步,在此期间需要多次调用可解标记过程或不可解标记过程,直到初始节点被标记为可解节点或不可解节点为止。

4.6.4 与 / 或树的一般搜索1

2 3

A 4 t1 5

t2 B t3 C

搜索树

Page 63: 第四章 状态空间搜索

63Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

广度优先搜索与状态空间的主要差别 :需要在搜索过程中需要多次调用可解标识过程或不可解标识过程。

4.6.4 与 / 或树的广度优先和深度优先搜索

1

2 3

A 4 t1 5

Page 64: 第四章 状态空间搜索

64Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

搜索算法: (1) 把初始节点 S0放入 Open 表中; (2) 把 Open 表的第一个节点取出放入 Closed 表,并记该节点为 n ; (3) 如果节点 n 可扩展,则做下列工作: ① 扩展节点 n ,将其子节点放入 Open 表的尾部,并为每一个子节点设置指向父节点的指针; ② 考察这些子节点中有否终止节点。若有,则标记这些终止节点为可解节点,并用可解标记过程对其父节点及先辈节点中的可解解节点进行标记。如果初始解节点 S0 能够被标记为可解节点,就得到了解树,搜索成功,退出搜索过程;如果不能确定 S0 为可解节点,则从 Open 表中删去具有可解先辈的节点。 ③ 转第 (2) 步。 (4) 如果节点 n 不可扩展,则作下列工作: ① 标记节点 n 为不可解节点; ② 应用不可解标记过程对节点 n 的先辈中不可解解的节点进行标记。如果初始解节点 S0也被标记为不可解节点,则搜索失败,表明原始问题无解,退出搜索过程;如果不能确定 S0 为不可解节点,则从 Open 表中删去具有不可解先辈的节点。 ③ 转第 (2) 步。

Page 65: 第四章 状态空间搜索

65Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

例 4.13:

设有下图所示的与 / 或树,节点按标注顺序进行扩展,其中表有 t1 、 t

2 、 t3 的节点是终止节点, A 、 B 、 C 为不可解的端节点。 1

2 3

A 4 t1 5

t2 B t3 C与 / 或树的广度优先搜索

Page 66: 第四章 状态空间搜索

66Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

1

2 3

A 4 t1 5

t2 B t3 C与 / 或树的广度优先搜索

搜索过程为: (1) 先扩展 1 号节点,生成 2 号节点和 3 号节点。 (2) 扩展 2 号节点,生成 A 节点和 4 号节点。 (3) 扩展 3 号节点,生成 t1 节点和 5 号节点。由于 t1 为终止节点,则标记它为可解节点,并应用可解标记过程,不能确定 3 号节点是否可节。

(6) 扩展 5 号节点,生成 t3 节点和 C 节点。由于t3 为终止节点,则标记它为可解节点,并应用可解标记过程,可标记 1 号节点为可解节点。

(4) 扩展节点 A ,由于 A 是端节点,因此不可扩展。调用不可解标记过程…。 (5) 扩展 4 号节点,生成 t2 节点和 B 节点。由于 t2 为终止节点,则标记它为可解节点,并应用可解标记过程,可标记 2 号节点为可解,但不能标记 1 号节点为可解。

(7) 搜索成功,得到由 1 、 2、 3 、 4 、 5 号节点即 t1 、 t2 、t3 节点构成的解树。

Page 67: 第四章 状态空间搜索

67Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

与 / 或树的深度优先搜索和与 / 或树的广度优先搜索过程基本相同 .其主要区别在于 Open 表中节点的排列顺序不同。在扩展节点时,与 / 或树的深度优先搜索过程总是把刚生成的节点放在 Open 表的首部。

深度优先搜索

1

2 3

A 4 t1 5

t2 B t3 C与 / 或树的深度优先搜索

Page 68: 第四章 状态空间搜索

68Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

与 / 或树的深度优先搜索也可以带有深度限制 dm 搜索算法如下: (1) 把初始节点 S0放入 Open 表中; (2) 把 Open 表第一个节点取出放入 Closed 表,并记该节点为 n ; (3) 如果节点 n 的深度等于 dm ,则转第 (5) 步的第①点; (4) 如果节点 n 可扩展,则做下列工作: ① 扩展节点 n ,将其子节点放入 Open 表的首部,并为每一个子节点设置指向父节点的指针; ②考察这些子节点中是否有终止节点。若有,则标记这些终止节点为可解节点,并用可解标记过程对其父节点及先辈节点中的可解解节点进行标记。如果初始解节点 S0 能够被标记为可解节点,就得到了解树,搜索成功,退出搜索过程;如果不能确定 S0 为可解节点,则从 Open 表中删去具有可解先辈的节点。 ③ 转第 (2) 步。 (5) 如果节点 n 不可扩展,则作下列工作: ① 标记节点 n 为不可解节点; ② 应用不可解标记过程对节点 n 的先辈中不可解解的节点进行标记。如果初始解节点 S0也被标记为不可解节点,则搜索失败,表明原始问题无解,退出搜索过程;如果不能确定 S0 为不可解节点,则从 Open 表中删去具有不可解先辈的节点。 ③ 转第 (2) 步。

Page 69: 第四章 状态空间搜索

69Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

例:若按有界深度优先,且设 dm=4,则其节点扩展顺序为?

1

2 3

A 4 t1 5

t2 B t3 C

与 / 或树的有界深度优先搜索

1, 3, 5, 2, 4

Page 70: 第四章 状态空间搜索

70Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

搜索过程为: (1) 先扩展 1 号节点,生成 2 号节点和 3 号节点。 (2)扩展 3 号节点,生成 t1 节点和 5号节点。由于 t1 为终止节点,则标记它为可解节点,并应用可解标记过程,不能确定 3 号节点是否可解。 (6) 搜索成功,得到由 1 、

3 、 5 、 2 、 4号节点即 t1 、 t2、 t3 节点构成的解树。 (4) 扩展 2 号节点,生成 A 节点和 4 号节点。

(5) 扩展 4 号节点,生成 t2节点和 B 节点。由于 t2 为终止节点,则标记它为可解节点,并应用可解标记过程,可标记2 号节点为可解,再往上又可标记 1 号节点为可解。

(3)扩展 5 号节点,生成 t3 节点和 C 节点。由于 t3 为终止节点,则标记它为可解节点,并应用可解标记过程,可标记3 号节点为可解节点,但不能标记 1 号为可解。

1

2 3

A 4 t1 5

t2 B t3 C

与 / 或树的有界深度优先搜索

Page 71: 第四章 状态空间搜索

71Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

谓词演算推理的与或树表示法

命题演算中一个蕴含集

q => pr => pv => q s => rt => rs => u s t

p

q

s

u

tv

r

假设有下面的断言集 :

Page 72: 第四章 状态空间搜索

72Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

与 / 或树P

RQ

图 表达式 Q R=>∨P

P

RQ

图 表达式Q R=>P∧

Page 73: 第四章 状态空间搜索

73Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

a bc a∧b=>da∧c=>e b∧d=>ff=>g a∧e=>h

g

de

h f

bc a

图 一个命题演算表达式集合的与 /或树

h 为真吗?b 不再为真时 h还会为真吗?为了证明 X 为真,最短的推理序列是什么?

Page 74: 第四章 状态空间搜索

74Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

例子:这是谓词演算的例子 ,阐述的是一个目标驱动的图搜索。要证明为真的目标是一含变量的谓词演算表达式。断言集是对一只狗 Fred和它的主人 Sam之间关系的逻辑描述。该例中的事实和规则如下 :1.Fred 是一只长毛大牧羊犬。 collie (fred).2.Sam 是 Fred 的主人。 master (fred,sam). 3.今天是星期六。 day (saturday).4.星期六天气很冷。 ~(warm (saturday)).

Page 75: 第四章 状态空间搜索

75Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

深入讨论5.Fred 是一只训练过的狗。 trained (fred).6.长毛垂耳犬或训练过的长毛大牧羊犬是好狗。 X[spaniel(X)∨(collie(X)∧trained(X))=>gooddog(X)]7. 若好狗有主人 , 则狗会和主人在一起。 X,Y,Z[gooddog(X)∧master(X,Y)∧location(Y,Z)=>location(X,Z)]8. 若今天是星期六并且天气暖和 , 则 Sam 就在公园里。 day(saturday)∧ warm(saturday)=> location(sam,park).9. 若今天是星期六并且天气不暖和 , 则 Sam 就在展览馆中。 day(saturday)∧~ warm(saturday) =>location(sam,museum).

目标是 : X location(fred,X)也就是 :"Fred在哪 ?"

Page 76: 第四章 状态空间搜索

76Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

深入讨论

表示 FRED在展览馆的与 /或树

LOCATION(X,Z)

GOODDOG(X)

NOT WARM(SATURDAY)

DAY(SATRDAY)

MASTER(FRED,SAM)

TRAINED(X)

COLLIE(X)

LOCATION(Y,Z)

MASTER(X,Y)

TRAINED(FRED)

COLLIE(FRED) SUBSTITUTIONS={FRED/X, SAM/Y, MUSEUM/Z}

Page 77: 第四章 状态空间搜索

77Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.7 基于递归的搜索4.7.1 递归

一个递归过程包括 :1.过程调用自身重复一串动作的递归步骤。2.防止过程无穷递归的终止条件。

对所有递归定义和递归算法都是必要的。递归是为大小不定的数据结构,如广义表、树、图构造的一个自然的控制,特别适合状态空间搜索。

Page 78: 第四章 状态空间搜索

78Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.7 基于递归的搜索procedure member (item, list); begin if list is empty then return (fail) % terminating condition #1 else if item = first element of list then return (success) % terminating condition #2 else begin tail:= list with its first item removed; member (item, tail) % recursive call  endend

测试一元素是否是表成员的过程可递归定义如下 :

Page 79: 第四章 状态空间搜索

79Department of Computer Science & Technology, Nanjing University Artificial IntelligenceArtificial Intelligence Spring

4.7.2 递归搜索 深度优先搜索算法直接变为递归 :Function depthsearch; begin if open is empty then return (fail); current_state:= the first element of open; if current_state is a goal state then return (success) else begin open:= the tail of open; closed:= closed with current_state added for each child of current_state not in open or closed add the child to the fro

nt of open end; depthsearch % recursive callend.