搜索与或图搜索实例算法
合集下载
AI03-2与或图搜索
E H 5 4
F I
G
反向更新代价 g(E)=5, g(D)=9, g(Q0)=10 g(I)=0, g(F)=1, g(D)=8, g(Q0)=9
3.3.3 启发式与或树搜索
例 3.18
A D Q0
B
C K L
E H 5 4
F I
J
G
反向更新代价 g(J)=0, g(K)=0, g(B)=2, g(A)=7, g(Q0)=8 g(L)=0, g(C)=1, g(A)=5, g(Q0)=6
Q21 Q22 Q23
Q’21 Q’22 Q’23
3.3.1 与或图
与或图/与或树
n0 n1 n2 n4 初始节点
n3
n5
n6
n8 目标 n7 目标
3.3.1 与或图
问题求解
状态图/或图
一个问题可以有几种求解方法 只要其中一种方法可以求解问题,则该问题被求解,方法之 间是"或"的关系
与图:
在用一种方法求解时,又可能需要求解几个子问题 这些子问题必须全部求解,才可能用该方法求解原始问题, 这些子问题之间是"与"的关系
3.3.3 启发式与或树搜索
例 3.18
A D Q0
B 3 3
C
E 3 2
F
左局部树: g(B)=3, g(C)=3, g(A)=8, g(Q0)=9 右局部树: g(E)=3, g(F)=2, g(D)=7, g(Q0)=8
希望树
3.3.3 启发式与或树搜索
例 3.18
A D Q0
B 3 3
C
3.3.3 启发式与或树搜索
例 3.18
A √ D √ √ K √ C √ L E H 5 4 F I Q0 √
人工智能第4章图搜索技术
OPEN表的首部,转步2。
例4.4 对于八数码问题,应用
深度优先搜索策略,可得如图4—
6所示的搜索树。
283
深度优先搜索亦称为纵向搜 1 4 765
索。由于一个有解的问题树可能
含有无穷分枝,深度优先搜索如
果误入无穷分枝(即深度无限,但
解不在该分支内),则不可能找到
目标节点。所以,深度优先搜索
策略是不完备的。另外,应用此
例4.6 设A城是出发地,E城是目的地,边上的数字代表 两城之间的交通费。试求从A到E最小费用的旅行路线。
B 4
6
A
3
4
A
E
C 3
D1
3
4
D2 23
E1 3
C
D
2
(a)
E2
B2 6
深度优先搜索算法:
步1 把初始节点S0放入OPEN表中; 步2 若OPEN表为空,则搜索失败,退出。
步3 取OPEN表头节点N放入CLOSED表中,并冠以顺序编号n;
步4 若目标节点Sg=N,则搜索成功,结束。 步5 若N不可扩展,则转步2; 步6 扩展N,将其所有子节点配上指向N的返回指针依次放入
2831 14 765
第4章 图搜索技术
2 283
14 765
6 83
214 765
7 283 714 65
14 83 214 765
15 283 714 65
22 83 214 765
23 813 24 765
3 23 184 765
8 23
1 84 7 65
9 23 184 765
16 1 23
第4章 图搜索技术
步1 把S0放入OPEN表中,置S0的深度d(S0)=0; 步2 若OPEN表为空,则失败,退出。 步3 取OPEN表头节点N,放入CLOSED表中,并 冠以顺序编号n; 步4 若目标节点Sg=N,则成功,结束。 步5 若N的深度d(N)=dm(深度限制值),或者若N无 子节点,则转步2; 步6 扩展N,将其所有子节点Ni配上指向N的返回 指针后依次放入OPEN表中前部,置d(Ni)=d(N)+1,转 步2。
例4.4 对于八数码问题,应用
深度优先搜索策略,可得如图4—
6所示的搜索树。
283
深度优先搜索亦称为纵向搜 1 4 765
索。由于一个有解的问题树可能
含有无穷分枝,深度优先搜索如
果误入无穷分枝(即深度无限,但
解不在该分支内),则不可能找到
目标节点。所以,深度优先搜索
策略是不完备的。另外,应用此
例4.6 设A城是出发地,E城是目的地,边上的数字代表 两城之间的交通费。试求从A到E最小费用的旅行路线。
B 4
6
A
3
4
A
E
C 3
D1
3
4
D2 23
E1 3
C
D
2
(a)
E2
B2 6
深度优先搜索算法:
步1 把初始节点S0放入OPEN表中; 步2 若OPEN表为空,则搜索失败,退出。
步3 取OPEN表头节点N放入CLOSED表中,并冠以顺序编号n;
步4 若目标节点Sg=N,则搜索成功,结束。 步5 若N不可扩展,则转步2; 步6 扩展N,将其所有子节点配上指向N的返回指针依次放入
2831 14 765
第4章 图搜索技术
2 283
14 765
6 83
214 765
7 283 714 65
14 83 214 765
15 283 714 65
22 83 214 765
23 813 24 765
3 23 184 765
8 23
1 84 7 65
9 23 184 765
16 1 23
第4章 图搜索技术
步1 把S0放入OPEN表中,置S0的深度d(S0)=0; 步2 若OPEN表为空,则失败,退出。 步3 取OPEN表头节点N,放入CLOSED表中,并 冠以顺序编号n; 步4 若目标节点Sg=N,则成功,结束。 步5 若N的深度d(N)=dm(深度限制值),或者若N无 子节点,则转步2; 步6 扩展N,将其所有子节点Ni配上指向N的返回 指针后依次放入OPEN表中前部,置d(Ni)=d(N)+1,转 步2。
第三章与或图搜索
例2
在边长为2的正方形内,任意放置5个点
,求证其中必存在两个点,它们之间的距
离不大于2。
.
问题可转化为:
.
在四个单位正方形内,
.
任意放置5个点,至少
.
.
有两个点在同一正方形内。
①I 1
III ③ 23 II
②
例3
假定我们已经会求 矩形的面积,现在要 求如图所示的五边形 的面积。
求解步骤:
求五边形面积
– 若干概念
终节点 可解节点 不可解节点 解图 耗散值 最佳解图 可解过程 不可解过程
与或图中某一个节点n到节点集N的一个解图类似于普 通图中的一条解路径。
解图的求法:从节点n开始,正确选择一个外向
连接符,在从该连接符所指的每一个后继节点出
发,继续选一个外向连接符,如此进行下去直到
由此产生的每一个后继节点成为集合N中的一个
MOVE(B,2,3) (3 3 1)
MtOVE(A,1
(2 2 2)
(2 1 3)
(3 1 1)
(3 3 2) (3 3 3)
(2 2 3)
(2 1 1)
(3 1 2)
采用归约法
– 要把所有圆盘移至柱3,必须先把C盘移至 柱3,而在移动C盘至柱3前,柱3必须为空。
– 只有把A、B移至柱2后,才能将C移到柱3。 – 在C移至柱3后,再解决将A、B移至柱3。
P6 BAD BCD DBA= DBC, BAAD, BCCD,
DB, BAD, BCD
DB=DB|T P2
P4 DBA= DBC
BAD= BCD| T
P1
BAD= 90°| BAAD, ... BCD= 90°| BCCD, ...
人工智能之与或图搜索问题
(3,1,1,1,1)
(2,2,1,1,1) 我方必胜
(2,1,1,1,1,1) 30
对于比较复杂的博弈问题,只能模拟人的思维 “向前看几步”,然后作出决策,选择最有利自 己的一步。即只能给出几层走法,然后按照一定 的估算办法,决定走一好招。
31
中国象棋
一盘棋平均走50步,总状态数约为10的161 次方。
(2,2,2,1,MAX)
(2,2,1,1,1,MIN)
(2,1,1,1,1,1,MAX)
注:如果MAX走红箭头的分法,必定获胜。 29
分钱币问题
对方先走
(7)
(6,1) (5,2)
(4,3)
(5,1,1) (4,2,1) (3,2,2)
(3,3,1)
(4,1,1,1) (3,2,1,1) (2,2,2,1)
6
普通图搜索的情况
s
n
f(n) = g(n) + h(n) 对n的评价实际是对从s到n这条路 径的评价
7
与或图: 对局部图的评价
初始节点
c
a b
目标
目标
8
两个过程
图生成过程,即扩展节点
从最优的局部途中选择一个节点扩展
计算耗散值的过程
对当前的局部图从新计算耗散值
9
n1 n3 n6
n7 目标
44
步2
Open为空,即已经扩展完节点
5、若CLOSED表为空,则转8;否则取出
CLOSED表中的第一个节点,记为 np;
45
6、若 np 属于MAX层,且对于它的属于MIN层
的子节点 nci 的 e ( nci )有值,则: e ( np ) =max { nci }
与或图
与或图的搜索 及应用
北京信息科技大学 孙骏 2014.05.13
与或图的搜索策略
1 与或图的一般搜索过程 2 与或图的广度优先搜索
3 与或图的深度优先搜索
4 与或图的有序搜索 5 博弈树的启发式搜索
1 与或图的一般搜索过程
与图: 把一个原问题分解为若干个子问题,P1,P2, P3,…可用“与图”表示;P1,P2,P3,…对应的子问
S0 2
A 6 t1 5 t2 E C 1 t3 2 F 3 1 2 B 2
D 1 G 1
t4 2 t5
解:左边解树, 按和代价:h(A)=11 h(S0)=13; 按最大代价:h(A)=6 h(S0)=8; 右边解树, 按和代价:h(G)=3, h(D)=4, h(B)=6, h(S0)=8; 按最大代价:h(G)=2, h(D)=3, h(B)=5, h(S0)=7
P
E
F
2
G
0 0 2 2 0 0
H
3
2
h(N)=2, h(P)=7, h(C)=3, h(A)=8 左子树h(S0)=9
3
2
2
2
三阶梵塔问题
1 2 3 1 2 3
A
A
B C
B C
初始配置
目标配置
问题描述: 采用三元组表示状态: S=(i,j,k) 其中,i, j, k分别表示金片C,B,A所在的钢针号。 初始状态(1,1,1),目标状态(3,3,3)
a
4-5=-1 b
5-4=1
5-5=0
5-5=0
6-6=0
程可用一个“与或图”来表示
P P1 P11 P12 P2 P31 P3 P32 P33
北京信息科技大学 孙骏 2014.05.13
与或图的搜索策略
1 与或图的一般搜索过程 2 与或图的广度优先搜索
3 与或图的深度优先搜索
4 与或图的有序搜索 5 博弈树的启发式搜索
1 与或图的一般搜索过程
与图: 把一个原问题分解为若干个子问题,P1,P2, P3,…可用“与图”表示;P1,P2,P3,…对应的子问
S0 2
A 6 t1 5 t2 E C 1 t3 2 F 3 1 2 B 2
D 1 G 1
t4 2 t5
解:左边解树, 按和代价:h(A)=11 h(S0)=13; 按最大代价:h(A)=6 h(S0)=8; 右边解树, 按和代价:h(G)=3, h(D)=4, h(B)=6, h(S0)=8; 按最大代价:h(G)=2, h(D)=3, h(B)=5, h(S0)=7
P
E
F
2
G
0 0 2 2 0 0
H
3
2
h(N)=2, h(P)=7, h(C)=3, h(A)=8 左子树h(S0)=9
3
2
2
2
三阶梵塔问题
1 2 3 1 2 3
A
A
B C
B C
初始配置
目标配置
问题描述: 采用三元组表示状态: S=(i,j,k) 其中,i, j, k分别表示金片C,B,A所在的钢针号。 初始状态(1,1,1),目标状态(3,3,3)
a
4-5=-1 b
5-4=1
5-5=0
5-5=0
6-6=0
程可用一个“与或图”来表示
P P1 P11 P12 P2 P31 P3 P32 P33
(搜索推理技术-与或树搜索)
7、无判断起始节点1可解
8、从OPEN中删除含有可解先辈节点的节点
删除
OPEN= { B, C, t1, 10, 11, 12, A, t2, t3 }
CLOSED= { 1, 2, 3, 4, 5, 6, 7, 8, 9 } OPEN= {t1, 10, 11, 12, t2, t3}
CLOSED= {1, 2, 3, 4, 5, 6, 7, 8, 9} 说明:对于OPEN表中的叶节点直接移到 CLOSED表,不作任何处理
OPEN= {9, B, C, t1, 10, 11, 12, A} CLOSED= {1, 2, 3, 4, 5, 6, 7, 8}
第九大循环(3、4、5、6、7、8步): 3、从OPEN表中取出节点9,并送到CLOSED表 4、扩展节点9,生成后继节点 t2、t3,并送到 OPEN表的末端 5、有叶节点 6、实现可解标志过程(可以判断节点9、4、2可解)
即OPEN是堆栈
注意
由于深度限制,深度优先搜索算法有可能找不 到解
例:
深度界限为4
√
2
1
√
√
6
√
3
Ⅹ A √ √
7 √
C
Ⅹ
4
5
8
t
√
Ⅹ B
t
t
t
t
√
√
√
√
注:后生成的节点画在左边
课堂练习:用宽度和深度优先搜索算法找出解树
提示:对于宽度优先搜索,先生成的节点画在左;
对于深度优先搜索,后生成的节点画在左
CLOSED= { 1, 2, 3, 4, 5, 6, 7, 8, 9, t1, 10 }
搜索过程演示
√
第二章与或图搜索问题
15
耗散值(代价值)的计算:示例
• 解树:S0, A, t1和t2。S0, B, D, G, t4和t5。
S0
2
2
• 由左边的解树可得: • 和代价:h(A)=11,h(S0)=13
A
6
5
1
• 最大代价: h(A)=6,h(S0)=8
t1
t2
C
• 由右边的解树可得: • 和代价:h(G)=3,h(D)=4,h(B)=6,h(S0)=8
3
2
2
2
H(G)=7, h(H)=6, h(E)=7, h(D)=11, S0的右
子树算出的h(S0)=12,而左子树的h(S0)=9,
因此左子树为希望树
22
与或树的有序搜索:示例
S0
A
D
B L
C 3
M
E
F
2
G
H
0
0
2
2
3
2
2
2
h(L)=2, h(M)=6, h(B)=3, h(A)=8, L、B均为可解节点。但节
• 1. 把初始节点S0放入OPEN表。
• 2. 把OPEN表中的第一个节点(记为节点n)取出放入CLOSED 表。
• 3. 如果节点n可扩展,则作下列工作: • 3.1 扩展节点n,将其子节点放入OPEN 表的尾部,并为每
个子节点配置指向父节点的指针,以备标识过程使用。
• 3.2 考察这些子节点中有否终止节点。若有,则标识这些终 止节点为可解节点,并应用可解标识过程对其父节点、祖父 节点等先辈节点中的可解节点进行标识。如果初始节点S0也被 标识为可解节点,就得到了解树,搜索成果,退出搜索过程; 如辈果的不节能点确。定S0为可解节点,则从OPEN表中删去具有可解先
人工智能中图搜索算法(PDF 159页)
图4—5 八数码问题的广度优先搜索
第9页
第4章 图搜索技术
以上两个问题都是在某个有向图中寻找目标或路径问 题,这种问题图搜索问题。把描述问题的有向图称为状态 空间图,简称状态图。图中的节点代表问题中的一种格局, 一般称为问题的一个状态,边表示两个状态之间的联系。 在状态图中,从初始节点到目标节点的一条路径或者所找 到的目标节点,就是问题的解(路径解)。
谓搜索,顾名思义,就是从初始节点出发,沿着与之相连 的边试探地前进,寻找目标节点的过程(也可以反向进行)。 搜索过程中经过的节点和边,按原图的连接关系,形成树 型的有向图,称为搜索树。搜索过程应当随时记录搜索痕 迹。
1.搜索方式 用计算机来实现状态图的搜索,有两种最基本的方式: 树式搜索和线式搜索。 所谓树式搜索,形象地讲就是以“画树”的方式进行 搜索。 即从树根(初始节点)出发一笔一笔地描出来的。
状态图实际上是一类问题的抽象表示。事实上,有许
多智力问题(如梵塔问题、旅行商问题、八皇后问题、农
夫过河问题等)和实际问题(如路径规划、定理证明、演
绎推理、机器人行动规划等)都可以归结为在某一状态图
中寻找目标或路径的问题。因此,研究状态图搜索具有普
遍意义。
第10页
第4章 图搜索技术
4.1.2 状态图搜索 在状态图中寻找目标或路径的基本方法就是搜索。所
第4章 图搜索技术
3. 搜索算法 由于搜索的目的是为了寻找初始节点到目标节点 的路径,所以在搜索过程中就得随时记录搜索轨迹。 为此,我们用一个称为CLOSED表的动态数据结构来 专门记录考查过的节点。显然,对于树式搜索来说, CLOSED表中存储的正是一棵不断成长的搜索树;而 对于线式搜索来说,CLOSED表中存储的是一条不断 伸长的折线,它可能本身就是所求的路径(如果能找到 目标节点的话)。
与或图搜索
8
• 解图:
初始节点
目标
目标
该解图的耗散值为: (1+(1+1))+(1+1)=5
9
局部解图的耗散值计算
如果我们也将局部图的耗散值记为k(n,N),则: ① 若n是局部图的一个叶节点,则
k(n,N)=h(n);
② 若n是一个外向连接符指向后继节点{n1,…, ni},并设该连接符的耗散值为Cn,则
1
与或图例子
2
2.1 基本概念
与或图是一个超图,节点间通过连接符连接。
超图是图的最一般的表达形式,无论什 么图,你都可以说它是超图,就像无论 整数,无理数,复数,反正都是数一样。
超图的定义由两个集合构成:一个点集A, 另一个是点集A中元素的子集的集合B(B 中所有元素的并集就是集合A)。A中的元 素叫节点;B中的元素就叫边,这样超图 H=(A,B)。
17
与或树的一般搜索过程(续)
• 由上述搜索过程所形成的节点和指针 结构称为搜索树。 • 与或树搜索的目标是寻找解树,从而 求得原始问题的解。如果在搜索的某一 时刻,通过可解标示过程可确定初始节 点是可解的,则由此初始节点及其下属 的可解节点就构成了解树。
18
与或树的一般搜索过程(续)
• 如果在某时刻被选为扩展的节点不可扩 展,并且它不是终止节点,则此节点就 是不可解节点。此时可应用不可解标示 过程确定初始节点是否为不可解节点,
如果可以确定初始节点是不可解的,则搜 索失败;否则继续扩展节点。
19
与或树的性质
• 可解与不可解标示过程都是自下而上进行 的,即由子节点的可解性确定父节点的可解性。
• 在与或树中搜索解树时,如果已确定某个 节点为可解节点,则其不可解的后裔节点就不 再有用,可从搜索树中删去;同样,如果已确 定某个节点是不可解节点,则其全部后裔节点 都不再有用,可从搜索树中删去,但当前这个 不可解节点还不能删去,因为在判断其先辈节 点的可解性时还要用到它。
• 解图:
初始节点
目标
目标
该解图的耗散值为: (1+(1+1))+(1+1)=5
9
局部解图的耗散值计算
如果我们也将局部图的耗散值记为k(n,N),则: ① 若n是局部图的一个叶节点,则
k(n,N)=h(n);
② 若n是一个外向连接符指向后继节点{n1,…, ni},并设该连接符的耗散值为Cn,则
1
与或图例子
2
2.1 基本概念
与或图是一个超图,节点间通过连接符连接。
超图是图的最一般的表达形式,无论什 么图,你都可以说它是超图,就像无论 整数,无理数,复数,反正都是数一样。
超图的定义由两个集合构成:一个点集A, 另一个是点集A中元素的子集的集合B(B 中所有元素的并集就是集合A)。A中的元 素叫节点;B中的元素就叫边,这样超图 H=(A,B)。
17
与或树的一般搜索过程(续)
• 由上述搜索过程所形成的节点和指针 结构称为搜索树。 • 与或树搜索的目标是寻找解树,从而 求得原始问题的解。如果在搜索的某一 时刻,通过可解标示过程可确定初始节 点是可解的,则由此初始节点及其下属 的可解节点就构成了解树。
18
与或树的一般搜索过程(续)
• 如果在某时刻被选为扩展的节点不可扩 展,并且它不是终止节点,则此节点就 是不可解节点。此时可应用不可解标示 过程确定初始节点是否为不可解节点,
如果可以确定初始节点是不可解的,则搜 索失败;否则继续扩展节点。
19
与或树的性质
• 可解与不可解标示过程都是自下而上进行 的,即由子节点的可解性确定父节点的可解性。
• 在与或树中搜索解树时,如果已确定某个 节点为可解节点,则其不可解的后裔节点就不 再有用,可从搜索树中删去;同样,如果已确 定某个节点是不可解节点,则其全部后裔节点 都不再有用,可从搜索树中删去,但当前这个 不可解节点还不能删去,因为在判断其先辈节 点的可解性时还要用到它。
人工智能-4 与或图搜索
对各个局面进行评估
评估的目的:对后面的状态提前进行考虑, 并且以各种状态的评估值为基础作出最好的 走棋选择。 评估的方法:用评价函数对棋局进行评估。 赢的评估值设为+∞,输的评估值设为-∞, 平局的评估值设为0。 评估的标准:由于下棋的双方是对立的,只 能选择其中一方为评估的标准方。
3.极小极大搜索过程
3.极小极大搜索过程
3.极小极大搜索过程
MAX MIN MAX
MIN
0
-3
3 3
-3 0
2
2
-3 0
-2
3 5 4 1
-3
0 6 8 9
-3
3.极小极大搜索过程
1 1 3 6
MAX MIN MAX
0 0
1
0
-3
3
-3
-3
-2
1
-3
6 -3
MIN
0
5
-3
3 3
-3 0
2
2
-3 0
-2
3 5 4 1
3.3 博弈树(Game tree)搜索
1.概述
20世纪60年代,研制出的西洋跳棋和国际象棋 的博弈程序达到了大师级的水平。 1958约翰•麦卡锡提出博弈树搜索算法 1997年,IBM公司研制的“深蓝”国际象棋 程序,采用博弈树搜索算法,该程序战胜了 国际象棋世界冠军卡斯帕罗夫。
1.概述
博弈问题特点: 双人对弈,轮流走步。 信息完备,双方所得到的信息是一样的。 零和,即对一方有利的棋,对另一方肯定 是不利的,不存在对双方均有利或无利的 棋。
1.概述
博弈的特性 ①两个棋手交替地走棋 ; ②比赛的最终结果,是赢、输和平局中的 一种; ③可用图搜索技术进行,但效率很低; ④博弈的过程,是寻找置对手于必败态的 过程; ⑤双方都无法干预对方的选择。
评估的目的:对后面的状态提前进行考虑, 并且以各种状态的评估值为基础作出最好的 走棋选择。 评估的方法:用评价函数对棋局进行评估。 赢的评估值设为+∞,输的评估值设为-∞, 平局的评估值设为0。 评估的标准:由于下棋的双方是对立的,只 能选择其中一方为评估的标准方。
3.极小极大搜索过程
3.极小极大搜索过程
3.极小极大搜索过程
MAX MIN MAX
MIN
0
-3
3 3
-3 0
2
2
-3 0
-2
3 5 4 1
-3
0 6 8 9
-3
3.极小极大搜索过程
1 1 3 6
MAX MIN MAX
0 0
1
0
-3
3
-3
-3
-2
1
-3
6 -3
MIN
0
5
-3
3 3
-3 0
2
2
-3 0
-2
3 5 4 1
3.3 博弈树(Game tree)搜索
1.概述
20世纪60年代,研制出的西洋跳棋和国际象棋 的博弈程序达到了大师级的水平。 1958约翰•麦卡锡提出博弈树搜索算法 1997年,IBM公司研制的“深蓝”国际象棋 程序,采用博弈树搜索算法,该程序战胜了 国际象棋世界冠军卡斯帕罗夫。
1.概述
博弈问题特点: 双人对弈,轮流走步。 信息完备,双方所得到的信息是一样的。 零和,即对一方有利的棋,对另一方肯定 是不利的,不存在对双方均有利或无利的 棋。
1.概述
博弈的特性 ①两个棋手交替地走棋 ; ②比赛的最终结果,是赢、输和平局中的 一种; ③可用图搜索技术进行,但效率很低; ④博弈的过程,是寻找置对手于必败态的 过程; ⑤双方都无法干预对方的选择。
《搜索与或图搜索》课件
3
搜索的原理
搜索原理是通过将问题分成更小的子问题,并从这些子问题中选择最优解决方案, 从而解决整个问题。
与或图的定义
与或图是什么?
与或图是一种用来表示集合之间 关系的图形。
与或图的表示方法
与或图可以使用布尔运算符来表 示,例如“与”运算符表示两个集 合中的共同元素,而“或”运算符 则表示两个集合的并集。
3 与或图搜索在实际应
用中的案例
与或图搜索经常应用于人 工智能、专家系统、自然 语言处理等领域。
总结
本次课程的学习内容回顾
在本次课程中,我们学习了搜索和与或图搜索的相关概念,以及这些概念在实际应用中的重 要性。
搜索与或图搜索的应用前景
作为计算机科学领域中的重要问ቤተ መጻሕፍቲ ባይዱ,搜索和与或图搜索的应用前景是非常广阔的。
搜索与或图搜索
在计算机科学领域,搜索和与或图搜索是非常重要的概念。在本次演示中, 我们将会深入探讨这两个主题。
搜索的定义
1
搜索是什么?
搜索是为了找到特定信息而从大量信息中进行查找和筛选的过程。搜索是人工智 能、信息检索及其他领域中重要的问题之一。
2
搜索的分类
搜索有两种主要分类:确定性搜索和非确定性搜索。确定性搜索是使用精确匹配 算法的搜索,而非确定性搜索则是使用模糊匹配算法的搜索。
与或图在电子学中的应用
与或图被广泛应用于电子学中的 逻辑电路设计,例如计算机内部 的运算电路。
与或图搜索
1 与或图搜索的定义
与或图搜索是指在一个由 与或图表示的问题空间中 搜索,以找到解决方案。
2 与或图搜索的算法
与或图搜索可以使用许多 不同的算法来完成搜索。 其中最常用的是A*算法、 BFS和DFS。
第3章图搜索与问题求解
入OPEN表的首部, 转步2。
第例33章.4 图对搜于索与八问数题码求问解题, 应用深度优先搜索策略, 可得 如图3-7所示的搜索树。
图 3-7 八数码问题的深度优先搜索
第 3 章 图搜索与问题求解
深度优先搜索亦称为纵向搜索。由于一个有解的问题树 可能含有无穷分枝, 深度优先搜索如果误入无穷分枝(即深度 无限), 则不可能找到目标节点。所以, 深度优先搜索策略是 不完备的。另外, 应用此策略得到的解不一定是最佳解(最短路 径)。
(1) 删除N的先辈节点(如果有的话)。
(2)对已存在于OPEN表的节点(如果有的话)也删除之;但 删除之前要比较其返回初始节点的新路径与原路径,如果新路 径“短”, 则修改这些节点在OPEN表中的原返回指针,使其沿 新路返回(如图3-5所示 )。
(3)对已存在于CLOSED表的节点(如果有的话), 做与(2)同 样的处理, 并且再将其移出CLOSED表, 放入OPEN表重新扩展 (为了重新计算代价)。
步1 把初始节点So放入OPEN表中。 步2 若OPEN表为空, 则搜索失败, 退出。 步3 移出OPEN表中第一个节点N放入CLOSED表中, 并冠 以顺序编号n。 步4 若目标节点Sg=N, 则搜索成功, 结束。 步5 若N不可扩展, 则转步2。
第 3 章 图搜索与问题求解 步6扩展N, 生成一组子节点, 对这组子节点做如下处理:
第 3 章 图搜索与问题求解 线式搜索算法: ·不回溯的线式搜索 步1 把初始节点So放入CLOSED表中。 步2 令N=So。 步3 若N是目标节点,则搜索成功,结束。
步4 若N不可扩展,则搜索失败,退出。
步5 扩展N,选取其一个未在CLOSED表中出现过的子节点 N1放入CLOSED表中, 令N=N1, 转步3。
第例33章.4 图对搜于索与八问数题码求问解题, 应用深度优先搜索策略, 可得 如图3-7所示的搜索树。
图 3-7 八数码问题的深度优先搜索
第 3 章 图搜索与问题求解
深度优先搜索亦称为纵向搜索。由于一个有解的问题树 可能含有无穷分枝, 深度优先搜索如果误入无穷分枝(即深度 无限), 则不可能找到目标节点。所以, 深度优先搜索策略是 不完备的。另外, 应用此策略得到的解不一定是最佳解(最短路 径)。
(1) 删除N的先辈节点(如果有的话)。
(2)对已存在于OPEN表的节点(如果有的话)也删除之;但 删除之前要比较其返回初始节点的新路径与原路径,如果新路 径“短”, 则修改这些节点在OPEN表中的原返回指针,使其沿 新路返回(如图3-5所示 )。
(3)对已存在于CLOSED表的节点(如果有的话), 做与(2)同 样的处理, 并且再将其移出CLOSED表, 放入OPEN表重新扩展 (为了重新计算代价)。
步1 把初始节点So放入OPEN表中。 步2 若OPEN表为空, 则搜索失败, 退出。 步3 移出OPEN表中第一个节点N放入CLOSED表中, 并冠 以顺序编号n。 步4 若目标节点Sg=N, 则搜索成功, 结束。 步5 若N不可扩展, 则转步2。
第 3 章 图搜索与问题求解 步6扩展N, 生成一组子节点, 对这组子节点做如下处理:
第 3 章 图搜索与问题求解 线式搜索算法: ·不回溯的线式搜索 步1 把初始节点So放入CLOSED表中。 步2 令N=So。 步3 若N是目标节点,则搜索成功,结束。
步4 若N不可扩展,则搜索失败,退出。
步5 扩展N,选取其一个未在CLOSED表中出现过的子节点 N1放入CLOSED表中, 令N=N1, 转步3。
与或图搜索策略
注意:终止节点一定是端节点,但端节点不一定是终 止节点。
10
可解节点: 6. 可解节点:节点须满足下列 条件之一: (1) 终止节点是可解节点; (2)一个与节点可解,当且仅当其子节点全都可解; (3)一个或节点可解,只要其子节点至少有一个可解; 7.不可解节点: 不可解节点: 不可解节点 关于可解节点的三个条件全部不满足的节点称为不可 解节点。 8.解树 解树: 解树 由可解节点所构成,并且由这些可解节点可推出初 始节点(它对应于原始问题)为可解节点的子树.
11
可解性判别
1 3 2 4 B 5 t1
t4
t3 t2 A
12
可解性判别
S0
A D
B C 3 G L M 3 0 0 2 2 2 E 2 H F
2
2
13
例题
三阶梵塔
C B A
(1,1,1)
三元组
(i, j, k)
i 代表金盘C所在的杆号;j代表金盘B所在的 杆号;k代表金盘A所在的标号。
14
1 3 2 4 5 t1
3) 4)
t4
t3 t2 A
5)
此时,closed 表就是由节点1,2,3,4,5和t1,t2,t3,t4构成的解树,如图中粗线所示。
22
与/或树的深度优先搜索算法
1、把初始节点S0放入OPEN表; 2、移出为OPEN表的第一个节点N放入CLOSED表,并冠以序号n; 3 、如果节点N 的深度大于等于深度界限,则转第5部的第(1); 4、若节点N可扩展,则做下列工作:
t5 G 2 1 t4 F t3 E 1 D 2 3 B 2 1 2 c S0 2 5 A 6 t1
目标 目标
9
其它几个概念与术语
第2章 与或图搜索
2.2 与或图的启发式搜索算法
• 以结点n为尾的红色箭头,标识结点n为根的最佳局部图。 • 在第4步得到的n0局部图中,叶结点都属于{n7, n8}。 • 解图: n0
5 n4 1
2
n5 n8 0 n7
0
当EXPAND(n)={}时,令q(n)=∞
2.2 与或图的启发式搜索算法
① G:={s},计算q(s)=h(s), 如果GOAL(s), THEN M(s, SOLVED) AO*算法 ② While (s还没加上SOLVED标记)do { a) G‘ = FIND(G) b) n:=G‘的任一个非终结点 生长,对新结点 c) EXPAND(n) →{nj}, 计算q(nj)=h(nj), 这里nj∈G 计算q d) G:=G∪{nj}; IF GOAL(nj), THEN M(nj, SOLVED) e) S := {n}
2.2 与或图的启发式搜索算法
• 第四次生长
n1 5 n2 n3 4 n6 2 n7 0 0 4 2 n5 n8 n6 n8 n0 5 5 n1 n4 1 1 n3 n2 n4 n0
n5
1)沿n0的最佳局部图,找到一个叶结点; n7 2)扩展此叶结点,计算以叶结点为根的局部图的耗散; 3)向上修改非终结点为根的局部图的耗散估计; 4)修改n0最佳局部图的标识。
2.2 与或图的启发式搜索算法
• 第二次生长
6 n1 2 n2 n3 4 1 1 n5 n6 n8 n0 4 3 n4 n3 n1 n2 n4 n0
5
4
n5
1)沿n0的最佳局部图,找到一个叶结点; n7 2)扩展此叶结点,计算以叶结点为根的局部图的耗散; 3)向上修改非终结点为根的局部图的耗散估计,表示最佳局部图; 4)修改n0最佳局部图的标识。
搜索和或图搜索实例AO算法
• 没有后裔旳非终节点是不能解节点。
• 若非终节点有“或”子节点,当且仅当全部子节点均不能解时,该非终节点才不 能解。
• 若非终节点有“与”子节点时,当至少有一种子节点不能解时,该非终节点才不 能解。
耗散值旳计算
1.若n是N旳一种元素, 则k(n, N) =0 2.若n是一种外向连接符指向后继结点{n1,..ni}
k(4, N)= min(1+k(5, N),
1+k(8,N))
目的n8
= min(3, 1)=1
N0= 2+1+2=5
解图(c)
同理可计算得: (a)旳解图耗散值为8 (b)旳解图耗散值为7
具有最小耗散值旳解图称为最佳解 图,其值也用h*(n)标识.上例中旳 h*(n)=5
一般图搜索旳情况
s
n
t f(n) = g(n) + h(n) 对n旳评价实际是对从s经过n到目旳地这条途径旳评价
设:K连接符 旳耗散值为K
AO*算法搜索例子
G中只有一种结点n0
第一种大循环(扩展结点),直到n0是SOLVED:
q=3 n0 初始节点
1. 找到待扩展旳局部图G’{n0} 2. n=G’中任意结点, 此时n=n0
3. 扩展结点n=n0, 生成后继结点集合{n1,n4,n5},
n1
连接符1
连接符2
与或图: 对局部图旳评价
初始节点
c
a b
目的
目的
与或图搜索:AO*算法
两个过程
• 图生成过程,即扩展节点
自顶向下, 从最优旳局部途中选择一种节点扩展
• 计算耗散值旳过程
自下向顶, 对目前旳局部图重新计算耗散值
与或图搜索
对于非终叶节点:
• 如果 n 有多个用 k=1 的连接符连接的或子节点,iff 这 些或子节点中至少有一个能解,节点 n 是能解节点; • 如果 n 有用 k>1 的连接符连接的与子节点。Iff 这些与 子节点全部能解,节点 n 是能解节点。
北京航空航天大学软件开发环境国家重点实验室
Slide 10
最好的局部解图;对该解图的一个非终叶节点进行扩展, 计算该节点各个K-连接符连接的后继节点解图的花费计值 ;如果可能,标记后继节点为能解节点。
第二阶段:自下而上地计算修正与或图花费估计值 -
确定最小花费连接符;如果必要,修改父节点的花费值; 或标记父节点为能解节点;此过程不断进行直到到达局部解 图的根节点为止。
K 〉1 的外向 k-连接符:与连接符。
仅由 K = 1 的外向 k-连接符构成的搜索空间:
普通有向图 与或图。
由 K 1 的外向 k-连接符构成的搜索空间:
无环与或图:与或图中,如果每一个后继节点不再是该节
北京航空航天大学软件开发环境国家重点实验室
Slide 5
点的祖先节点,这种与或图称为无环与或图。
上述过程周而复始,直到最底层的外向k连接符的每个后继
节点均属于 N 为止。
针对任意节点的外向K连接符的选择顺序不同, 对应的搜索策略可不同: 盲目搜索,启发式搜索。
北京航空航天大学软件开发环境国家重点实验室
Slide 9
与或解图及其能解标记与费用计算
定义:
标记能解节点(Solved):
终叶节点是能解节点;
Slide 14
基于问题空间的与或图搜索
与或图搜索有关概念
与或解图及其能解标记与费用计算
第2章 与或图搜索问题
1
与或图基本概念
“或”的关系
A 4 B 2 E 2 1 4
1 C 1 D
旅行商问题
4 B1
A
1 C1
传教士和野人问题
(3, 3, 1)
(2, 3, 0)
(1, 3, 0)
(2, 2, 0)
2
与或图基本概念
“与”的关系
世界杯决赛
华南师大
西班牙
荷兰
本部
南海
大学城
增城
火箭队首发阵容
霍华德
哈登
贝弗利
17
与或图: 对局部图的评价
初始结点
c
a b 目标 目标
18
AO*算法
两个阶段。
第一阶段: 图生成过程, 即扩展结点。 对于每一个已经扩展了的结点, 算法都有一个指针, 指向该结点的后继结点中, 耗散值小的那个连接符。 图生成过程, 就是从初始结点出发, 按照该指针向下 搜索, 一直到找到一个未扩展的结点为止。然后扩 展该结点。从下面的讨论可以知道, 这实际上扩展 的是一个耗散值最小的局部图。
21
10: REMOVE(m, S), mcS ; 这个m的子结点mc应不在S 中。 11: 修改m的耗散值q(m):
对m指向结点集{n1i, n2i, …, nki}的每一个连接符i分别计算qi: qi(m)=Ci+q(n1i)+…+q(nki), q(m): =min qi(m); 对m的i个连接符, 取计算结果最小的那个耗 散值为q(m)。 加指针到min qi(m)的连接符上, 或把指针修改到min qi(m)的连接符 上, 即原来指针与新确定的不一致时应删去。 IF M(nji, SOLVED) THEN M(m, SOLVED); 若该连接符的所有子 结点都是能解的, 则m也标上能解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
q=43 n0 初始节点
第二个大循环(扩展结点),直到n0是SOLVED: 1. 找到待扩展的局部图G’{n0,n1}
q=5 n1
连接符1
n2
连接符2
2. n=G’中非终结点, 此时n=n1
3. 扩展结点n=n1, 生成后继结点集合{n2,n3},
q(n2)=4, q(n3)=4, 都不是终结点,把结点加到
q(n4)=1, q(n5)=1, q(n1)=2, 都不是终结点, 把结点加到G中
n4
4. 小循环(修改结点耗散值),直到S为空: a. S={n=n0}
b. 保证n的后代不在S中
c. m=n0的连接符有两条,
n5
计算q1(m)=1+q(n1)=1+2=3
q2(m)=2+q(n5)+q(n4)=2+1+1=4
与或图: 对局部图的评价
初始节点
c
a b
目标
目标
与或图搜索:AO*算法
两个过程
• 图生成过程,即扩展节点
自顶向下, 从最优的局部途中选择一个节点扩展
• 计算耗散值的过程
自下向顶, 对当前的局部图重新计算耗散值
AO*算法搜索例子
n0 初始节点
n1
n2
n4
n3
n5
n6
n7 目标
n8
目标
其中: h(n0)=3 h(n1)=2 h(n2)=4 h(n3)=4 h(n4)=1 h(n5)=1 h(n6)=2 h(n7)=0 h(n8)=0
与或图搜索
与或图表示
弧线 与节 点
终结点
父பைடு நூலகம்点
或节
点
A
子节
点
N MH
BC D E FG
• 与或图是一个超图,节点间通过连 接符连接。
• K-连接符:
…... K个
与或图搜索问题
a 目标
初始节点s c
b 目标
n0→ {n7,n8}的3个解图
初始节 点n0
初始节 点n0
目标n7 (a)
目标n8
初始节 点n0
• 没有后裔的非终节点是不能解节点。
• 若非终节点有“或”子节点,当且仅当所有子节点均不能解时,该非终节点才不 能解。
• 若非终节点有“与”子节点时,当至少有一个子节点不能解时,该非终节点才不 能解。
耗散值的计算
1.若n是N的一个元素, 则k(n, N) =0 2.若n是一个外向连接符指向后继结点{n1,..ni}
…
AO*算法搜索例子
q=4q=5 n0
初始节点
q=5
n1
连接符1
连接符2
n2
n4
qq==12
n3
n5
n6 n8
n7
G={n0,n1,n2,n3,n4,n5} 第三个大循环(扩展结点),直到n0是SOLVED: 1. 找到待扩展的局部图G’{n0,n4,n5} 2. n=G’中非终结点, 此时n=n5 3. 扩展结点n=n5, 生成后继结点集合
目标n7
(c)
目标n8
目标n7
(b)
目标n8
无解节点
有解节点
终结点
t
t
t
t
t
t
能解节点(a) t
t t (b)
• 终节点是能解节点
• 若非终节点有“或”子节点时,当且仅当其子节点至少有一能解时,该非终节点 才能解。
• 若非终节点有“与”子节点时,当且仅当其子节点均能解时,该非终节点才能解。
不能解节点
{n6,n7,n8}, q(n6)=2, q(n7)=0, q(n8)=0 把结点加到G中 4. 小循环(修改结点耗散值),直到S为空: a. S={n=n5} b. 保证n的后代不在S中 c. m=n5的连接符有两条,
计算q1(m)=1+q(n6)=1+2=3 q2(m)=1+q(n7)+q(n8)=2+0+0=2
k(n, N) = Cn+k(n1, N)+…+k(ni, N) 其中:N为终节点集
Cn为连接符的耗散值
n
…...
n1 n2
ni
i个
目标n7
初始节 点n0
搜索解图耗散值的递归计算:
n0=2+k(4, N)+k(5, N)
n4
k(5, N)= min(2+k(7,N)+k(8,
n5
N),…)
=2
k(4, N)= min(1+k(5, N),
令q(m)=q(n0)=min(q1,q2)=3
d.修改指针到q1对应的连结符上去
e.如果n1为非SOLVED,则m=n0也为非
SOLVED
f.如果m=n0为SOLVED,或者q(m)被修改过,则
需要也对m的父结点进行修改, 即将m的父结点
加到S中
g.小循环结束
5.大循环结束
AO*算法搜索例子 G={n0,n1,n4,n5}
n4
G中 4. 小循环(修改结点耗散值),直到S为空:
a. S={n=n1}
n3
b. 保证n的后代不在S中
n5
c. m=n1的连接符有两条,
计算q1(m)=1+q(n3)=1+4=5
q2(m)=1+q(n2)=1+4=5
d继令.q修…cq1续.q改2(m(m小(指mm=)循)=针n)==环01到q1的+:(+qhn连2h(1n对接()n1=应符5)m=)的有+1inh+连两((q54结条=1),=符6,q计42上算)=去45.大fdeg行....循如令q修小修(环果q改循m改(结n指m环=,3束n即)结针非=1将到束)qS被O(mqn修L10=V对改)nE=应1D过m的,的则,i则n父连m(需q结结=1要点n,符q也1n2上也0对)=加去为m5到非的SS父中O结LV点ED进
令q(m)=q(n5)=min(q1,q2)=2 d.修改指针到q2对应的连结符上去 e.n7,n8为SOLVED,则m=n5也为SOLVED f. q(m=n5)被修改过,则需要也对m的父结点 进行修改, 即将m=n5的父结点n0加到S中 g.小循环结束 5.大循环结束
AO*算法搜索例子
q=5 n0
设:K连接符 的耗散值为K
AO*算法搜索例子
G中只有一个结点n0
第一个大循环(扩展结点),直到n0是SOLVED:
q=3 n0 初始节点
1. 找到待扩展的局部图G’{n0} 2. n=G’中任意结点, 此时n=n0
3. 扩展结点n=n0, 生成后继结点集合{n1,n4,n5},
n1
连接符1
连接符2
1+k(8,N))
目标n8
= min(3, 1)=1
N0= 2+1+2=5
(c)
(a)的解图耗散值为8
(b)的解图耗散值为7
具有最小耗散值的解图称为最佳解 图,其值也用h*(n)标记.上例中的 h*(n)=5
普通图搜索的情况
s
n f(n) = g(n) + h(n) 对n的评价实际是对从s经过n到目的地这条路径的评价
初始节点
q=5 n1
连接符1
n2
连接符2
q=1 n4
n3
q=2 n5
n6 n8