第二章 与或图搜索问题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
② 若n是一个外向连接符指向后继节点{n1,…,ni},并设 该连接符的耗散值为Cn,则
k(n, N) = Cn+k(n1, N)+…+k(ni, N)
其中:N为目标节点集
n
2020/3/5
…...
n1 n2
ni
i个
10
华北电力大学
例:k-连接符的耗散为k
K(n0,{n7,n8})=8
K(n0,{n7,n8})=7
2020/3/5
18
华北电力大学
AO*算法——两个过程1
▪ 图生成过程,即扩展节点
▪ 对于每一个已经扩展了的节点,AO*算法都有一个 指针,指向该节点的后继节点中,耗散值小的那个 连接符
▪ 从最优的局部图中选择一个节点扩展
▪ 图生成过程,就是从初始节点出发,按照该指针向 下搜索,一直到找到一个未扩展的节点为止。然后 扩展该节点。并对其后继节点赋估计耗散值和加能 解标记
的节点集
2020/3/5
…... K个
6
华北电力大学
基本概念
▪ 解图
▪ 与或图中某一个节点n到节点集N的一个解图类似于 普通图中的一条解路径
▪ 解图的求法:
▪ 从节点n开始,正确选择一个外向连接符,再从该连 接符所指的每一个后继节点出发,继续选一个外向 连接符,如此进行下去直到由此产生的每一个后继 节点成为集合N中的一个元素为止
▪ 一直到计算出根节点的值为止。获得根节点取值的那一分枝,即 为所选择的最佳走步
2020/3/5
33
华北电力大学
极小极大搜索过程——叶节点的评价函数
▪ 是一个静态估计函数f
▪ 对棋局的势态(节点)作出优劣估值 ▪ 可根据势态优劣特征来定义(主要用于对端节点的“价值”
进行度量)
▪ 一般规定:
▪ 有利于MAX的势态,f(p)取正值;有利于MIN的势态,f (p)取负值;势均力敌的势态,f(p)取0值
▪ 局部图的耗散值k(n,N),则:
① 若n是局部图的一个叶节点,则k(n,N)=h(n) ② 若n是一个外向连接符指向后继节点{n1,…,ni},并设
该连接符的耗散值为Cn,则 k(n,N)=Cn+ k(n1,N) + … + k(ni,N)
2020/3/5
12
华北电力大学
能解节点(Solved)
n8
目标
23
红色:4 黄色:6
华北电力大学
n1
n3 n6
n7目标
2020/3/5
AO*算法举例
n0
初始节点
n0
n2 n5
n1 5
n4 n2(4) n5(1)
n3(4) n6(2) n8
目标
n7(0)
24
初始节点
n4(1) 2
n8(0)
红色:5 黄色:6
华北电力大学
n1
n3 n6
n7目标
2020/3/5
▪ 每一步结束条件可根据时间限制、存储空间限制或 深度限制等因素加以确定
▪ 搜索策略可采用宽度、深度或启发式方法,一个阶 段搜索结束后,要从搜索树中提取一个优先考虑的 “最好的”走步,这就是实用策略的基本点
▪ 极小极大搜索策略就是其中的一种
2020/3/5
30
华北电力大学
极小极大搜索过程(1)
▪ 假定有一个评价函数可以对所有棋局评估:
▪ 若f(p)=+∞,则MAX赢,若f(p)=-∞,则MIN赢 ▪ 顶节点深度d=0,MAX代表程序方,MIN代表对手方,
▪ 图2.2给出n0→{n7,n8}的三个解图
2020/3/5
7
华北电力大学
基本概念
解图:
2020/3/5
8
华北电力大学
基本概念
▪ 解图的递归定义 ▪ 一个与或图G中,从节点n到节点集N的解图记为G’,
G’是G的子图
①若n是N的一个元素,则由单一节点组成 ②若n有一个指向节点{n1,…,nk}的外向连接符K,使得
层次 ▪ 可设计特殊的与/或图搜索算法,即博弈树搜索算法
2020/3/5
27
华北电力大学
分钱币问题(Grundy博弈)
对方先走
(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)
① 终节点是能解节点 ② 若非终节点有“或”子节点时,当且仅当其
子节点至少有一能解时,该非终节点才能解 ③ 若非终节点有“与”子节点时,当且仅当其
子节点均能解时,该非终节点才能解
2020/3/5
13
华北电力大学
不能解节点(Unsolved)
① 没有后裔的非终节点是不能解节点 ② 若非终节点有“或”子节点,当且仅当所有
▪ 评价函数值大于0,表示棋局对我方有利,对对方不 利
▪ 评价函数小于0时,表示棋局对我方不利,对对方有 利
▪ 评价函数值越大,表示对我方越有利。当评价函数 值等于正无穷大时,表示我方必胜
▪ 评价函数值越小,表示对我方越不利。当评价函数 值等于负无穷大时,表示对方必胜
2020/3/5
31
华北电力大学
子节点均不能解时,该非终节点才不能解 ③ 若非终节点有“与”子节点时,当至少有一
个子节点不能解时,该非终节点才不能解
2020/3/5
14
华北电力大学
普通图搜索的情况
s
n
f(n) = g(n) + h(n) 对n的评价实际是对通过n的这条路径的评价
2020/3/5
15
华北电力大学
与或图: 对局部图的评价
▪ 一个节点的后继节点之间是“或”的关系
▪ 与或图搜索问题
▪ 一个节点其部分或全部后继节点是“与”的 关系
▪ 博弈树的搜索
2020/3/5
4
华北电力大学
a
目标1
2020/3/5
简单的与或图例子
初始节点s b
•超图 •超弧线(连接符) •K-连接符:从父节点指向一组
K个后继节点的节点集(K>1
c 时注意小圆弧)
从每一个ni到N有一个解图(i=1,…,k),则由节点n, 连接符K,及{n1,…,nk}中的每一个节点到N的解图所 组成 ③否则n到N不存在解图
▪ 在搜索解图的过程中,还须要进行耗散值的计算
2020/3/5
9
华北电力大学
解图耗散值的计算
▪ 若解图的耗散值记为k(n,N),则可递归计算如下:
① 若n是N的一个元素,则k(n,N)=0
▪ ……
2020/3/5
19
华北电力大学
AO*算法——两个过程2
▪ 计算耗散值的过程
▪ 对当前的局部图重新计算耗散值,是逆向的计算过程 ▪ 计算出节点n相对于每一个外向连接符的耗散值,从中
选择一个最小值作为n的耗散值。并标记一个指针指向 产生最小耗散值的外向连接符 ▪ 对于n的父节点,进行同样的计算,重复这一过程,直 到初始节点s为止 ▪ 这时,从s出发,选择那些指针所指向的连接符得到的 局部图,为当前耗散值最小的局部图
2020/3/5
17
华北电力大学
AO及AO*搜索算法
▪ 利用结点的可解/不可解性质,能从搜索图中删去可解 结点的任何不可解结点的子结点;同样地,能删去不可 解结点的所有的子结点
▪ 搜索这些被删除的结点是没有意义的,而只会降低搜索效率
与普通图搜索算法相类似,与/或图搜索算法有盲目 搜索,如广度优先搜索法、深度优先搜索法等;也有启发 式搜索,如AO及AO*搜索法
▪ 算法仅适用于无环图的假设,否则耗散值递归计算不能收 敛,因而在算法中还必须检查新生成的节点已在图中时, 是否是正被扩展节点的先辈节点
▪ A算法有OPEN和CLOSED表,而AO*算法只用一个结构G, 它代表到目前为止已明显生成的部分搜索图,图中每一个 节点的h(n)值是估计最佳解图,而不是估计解路径
初始节点
a b
2020/3/5
目标
c
目标
16
华北电力大学
AO及AO*搜索算法
▪ 目的:在问题的完整的隐含图中扩展生成出包含初始 结点和目的结点集合的连通的明显子图
▪ 方法:必须对当前已生成出的与或图中的所有结点实施 是否为可解结点的标注过程,如果起始结点被标注为可 解的,则搜索过程可成功地结束;如果起始结点还不能 被标注为可解的,则应当继续扩展生成结点(尽可能地 记录,所有生成的结点中,哪些结点被标注了可解的, 以便减少下一次标注过程的工作量) 同样地,对不 可解结点也同样如此
• 中国象棋:一盘棋平均走50步,总状态数约为10的161 次方。假设1毫微秒走一步,约需10的145次方年→→不 可能穷举
• 即使用了强有力的启发式搜索技术,也不可能使分枝压 到很少
wenku.baidu.com
2020/3/5
29
华北电力大学
与或图搜索技术
▪ 解决:
▪ 实用策略:把目标确定为寻找一步好棋,等对手回 敬后再考虑寻找另一步好棋
2020/3/5
26
华北电力大学
2.3 博弈树搜索
▪ 博弈问题
▪ 双人,一人一步 ▪ 双方信息完备 ▪ 零和:即对一方有利的棋,对另一方肯定是不利的,不存在对双
方均有利、或均无利的棋。对弈的结果是一方赢,而另一方输, 或者双方和棋
▪ 用与或图表示
▪ 在决定自己走步时只需考虑对自己有利的一步——“或” ▪ 考察对方时,则应考虑对方所有可能的走步——“与” ▪ 两人严格地轮流走步,使博弈状态图呈现出严格的与和或的交替
极小极大搜索过程(2)
▪ 假设:
▪ 双方都是对弈高手 ▪ 在只看一步棋的情况下,我方一定走评价函数值最
大的一步棋 ▪ 对方一定走评价函数值最小的一步棋 ▪ 在只看一步的情况下最好的棋,从全局来说不一定
就好,还可能很不好 ▪ 为了走出好棋,必须多看几步,从多种可能状态中
选择一步好棋
2020/3/5
32
华北电力大学
n1 n3
AO*算法举例
n0
初始节点
n0
初始节点
n1(2)
n2
n4
n4(1)
n5
n5(1)
n6
n7目标
2020/3/5
n8
目标
22
红色:4 黄色:3
华北电力大学
n1 n3
AO*算法举例
n0
初始节点
n0
初始节点
n1 5
n2
n4
n2(4)
n4(1)
n5
n5(1)
n3(4)
n6
n7目标
2020/3/5
•根节点:没有任何父节点的节点 •端(叶)节点:没有任何后继节点
的节点
•S •两个连接符 •1-连接符指向a(或节点) •2-连接符指向{b、c}(与节点)
目标2•目标2
•b的与节点(2-连接符) •c的或节点(1-连接符)
5
华北电力大学
2.1 基本概念
▪ 与或图是一个超图,节点间通过连接符连接 ▪ K-连接符:从一个父节点指向一组k个后继节点
第二章 与或图搜索问题
华北电力大学 计算机系 刘丽
学习目标
▪ 了解一般的与或图搜索问题 ▪ 掌握与或图的启发式搜索算法AO* ▪ 了解博弈树搜索问题 ▪ 掌握博弈树搜索中的
▪ 极小极大方法 ▪ α-β剪枝搜索方法
2020/3/5
2
华北电力大学
知识点
2020/3/5
3
华北电力大学
与或图搜索问题
▪ 状态空间搜索问题
2020/3/5
20
华北电力大学
n1
n3 n6
n7 目标
2020/3/5
AO*算法举例
n0 初始节点
n2
n4
n5
n8
目标
21
其中: 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
设:K连接符 的耗散值为K
我方扩展的节点
(3,1,1,1,1)
(2,2,1,1,1) 我方必胜
对方扩展的节点
(2,1,1,1,1,1)
2020/3/5
28
华北电力大学
与或图搜索技术
▪ 问题
▪ 对简单的博弈或复杂博弈的残局,可以用类似于与或 图的搜索技术求出解图,解图代表了从开局到终局任 何阶段上的弈法
▪ 对许多博弈问题不可实现:
华北电力大学
极小极大搜索过程(3)
▪ 当轮到我方走棋时,首先按照一定的搜索深度生成出给定 深度d以内的所有状态,计算所有叶节点的评价函数值
▪ 然后从d-1层节点开始逆向计算:
▪ 对于我方要走的节点(用MAX标记,称为极大节点)取其子节点 中的最大值为该节点的值(因为我方总是选择对我方有利的棋)
▪ 对于对方要走的节点(用MIN标记,称为极小节点)取其子节点 中的最小值为该节点的值(对方总是选择对我方不利的棋)
K(n0,{n7,n8})=5
具有最小耗散值的解图称为最佳解图,其值也用h*(n)标记
上例中h*(n0)=5 h(n)表示节点n到目标节点集的最佳解图耗散值的估计
2020/3/5
11
华北电力大学
基本概念
▪ 局部图:
① 单一节点是一个局部图 ② 对于一个局部图的任意叶节点n,选择一个n的外向连
接符K,则该局部图、外向连接符K,以及K所连接的n 的后继节点一起组成的图,仍然组成一个局部图
AO*算法举例
n0
初始节点
n0
n2 n5
n1 5
n4 n2(4) n5(1)
n3(4) n6(2) n8
目标
n7(0)
25
初始节点
1 n4(1)
2
n8(0)
红色:5 黄色:6
华北电力大学
AO*与A的区别
▪ AO*算法不能像A算法那样,单纯靠评价某一个节点来评 价局部图
▪ 由于k-连接符连接的有关子节点,对父节点能解与否以及耗散值 都有影响,因而显然不能象A算法那样优先扩展其中具有最小耗散 值的节点