人工智能导论课件:第三章 与或图的搜索
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
耗 散
⑨ Begin ⑩ REMOVE(m, S),mc(S);这个m的子结点mc应不在S中。
值 ⑪ •修改m的耗散值q(m):
修 正
对m指向节点集(n1i,n2i,…nki)的每个连接符i分别计算qi, qi (m)=Ci+q(n1i)+…+q(nki),
q(m):= minqi(m);
的• 连加接指符针上到,m即in原qi来(m指)的针连与接对新m符确的上i定个,连的或接不把符一,指取致针计时修应改删到去mi.nqi(m)
的,不存在一方看到另一方看不到的情况) 零和(对一方有利的走棋,对另一方是不利
的,不存在对双方均有利或者均无利的棋)
Grundy博弈(分钱币游戏)
有一堆数目为N的钱币,有两个选手轮流分堆, 要求每个选手每次只把其中某一堆分成数目不 相等的两小堆(如果分的相等的话,输)
以7个钱币为例。
分钱币问题
具有最小耗散值的解图称为最佳解图。
• 解图:
初始节点s
目标
目标
能解节点(SOLVED)
终节点是能解节点 若非终节点有“或”子节点时,当且仅
当其子节点至少有一个能解时,该非终 节点才能解。 若非终节点有“与”子节点时,当且仅 当其子节点均能解时,该非终节点才能 解。
不能解节点(UNSOLVED)
若MAX所有子节点均有值,则该MAX取其极大值. ELSE IF(nd MIN) (f(nci MAX)有值) THEN f(nd):=min{f(nci)},REMOVE(nd,CLOSED), GO LOOP2; 若MIN所有子节点均有值,则该MIN取其极小值.
7. GO LOOP2; 8.LOOP3:IF f(s)≠NIL THEN EXIT(END M(Move,T)) ; s有值,或
红色:4 黄色:3
n1 n3 n6
n7目标
n0
初始节点
n2
n4
n5
n0
初始节点
n1 5
n3(4)
n2(4) n5(1)
n4(1)
n8
目标
2次循环之后
红色:4 蓝色:6
n1 n3 n6
n7目标
n0
初始节点
n0
n2 n5
n1 5
n4 n2(4) n5(1)
n3(4) n6(2) n8
目标
初始节点
n4(1) 2
2. LOOP1: IF OPEN =( ) THEN GO LOOP2; 3. n:=FIRST(OPEN),REMOVE(n,OPEN),ADD(n,CLOSED);将n放到
CLOSED表的前面, 4. IF n可直接判定为赢, 输或平局 THEN
f(n):= -0,GO LOOP1 ELSE EXPAND(n){ni}, ADD ({ni} ,T) IF d{ni} k THEN ADD({ni}, OPEN) ,GO LOOP1
对方先走 (6,1)
(7) (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)
(3,1,1,1,1)
(2,2,1,1,1) 我方必胜
(2,1,1,1,1,1)
分钱币问题状态空间图
中国象棋
一盘棋平均走50步,总状态数约为10的 161次方。
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
设:K连接符 的耗散值为K
n1 n3
n0
初始节点
n2
n4
n5
n1(2)
n0
初始节点
n4(1) n5(1)
n6
n7目标
n8
目标
1次循环之后
解图的求法是:从节点n开始,正确选择一个外向连接 符,再从该连接符所指的每一个后继结点出发,继续 选一个外向连接符,如此进行下去直到由此产生的每 一个后继节点成为集合N中的一个元素为止。
具有最小耗散值的解图称为最佳解图。 能解节点 不能解节点
与或图的启发式搜索算法AO*
启发式与或图搜索过程和普通图类似, 也是通过评价函数f(n)来引导搜索过程。
与或图的搜索
a
根结点:没有任何父 结点的结点。
初始节点s 与的关系(超弧
线,连接符)
c
b
目标
端结点:没有任何 后继结点的结点。
目标
3.1 基本概念
与或图是一个超图,节点间通过连接符 连接。(其特例是普通图)
K-连接符:
…...
K个
是从一个父结点指向一组k个后继结点的 结点集。
耗散值的计算
k(n, N) = Cn+k(n1, N)+…+k(ni, N) 其中:N为终节点集
对于与或图,由于局部图有多个叶结点, 不能象普通图那样,通过对某一个结点 的评价来实现对整个局部图的评价。
对于与或图搜索,是通过对局部图的评 价来选择待扩展的节点。
普通图的情况
s
n
f(n) = g(n) + h(n) 表面上是对结点n的评价,实际上是对从s 到目标结点(通过n)的这条路径的评价。
所有先辈节点ma,添加到S
中. (修正向上传递)
AO*算法说明
算法划分成两个阶段:
1)是一个自上而下的图生长过程,先通过 有标记的连接符,找到目前为止最好的一个 局部解图,
2)是一个自下而上的耗散值修正计算,连 接符的标记以及结点的能解标记。
AO*算法举例
n0 初始节点
n1
n2
n4
n3
n5
n8(0)
n7(0)
3次循环之后
红色:5 蓝色:6
n1 n3 n6
n7目标
n0
初始节点
n0
n2 n5
n1 5
n4 n2(4) n5(1)
n3(4) n6(2) n8
目标
初始节点
1 n4(1) 2
n8(0)
n7(0)
4次循环之后
红色:5 蓝色:6
两个过程
图生成过程,即扩展节点
从最优的局部图中选择一个节点扩展
与或图: 对局部图的评价
初始节点
有与的关系,有或的关 系,评价起来复杂一些
c
a
b 目标
把普通图的思想应用到与或图中,对解图进行评
目标 价,解图相当于解路径。红色和蓝色都是局部图,
具体选择那条路径,选择f值最小的。
AO*算法
过程AO*:
① 建立一个搜索图G,G:=s,计算q(s)=h(s),IF GOAL(s) THEN M(s, SOLVED);
没有后裔的非终节点是不能解节点。 若非终节点有“或”子节点,当且仅当
所有子节点均不能解时,该非终节点才 不能解。 若非终节点有“与”子节点时,当至少 有一个子节点不能解时,该非终节点才 不能解。
第10次课 10月07日
上次课程回顾
与或图搜索:搜索从初始节点到一组终节点集N的一个 解图。
对于与或图搜索,是通过对局部图的评价来选择待扩 展的节点。
⑫
• IF
IMF(mM,(nSjOi,LSVOELDV)ED()q(TmH)EN算M结q(0果m值(,m最为)小Sq)O(的LTm哪VH)EE个DN耗),A散(DjD=(1m,a,…S,)k;)
⑬ end (与9匹配) ⑭ e若能n该解d连的(接,与则符m3的也匹所标配有上)子能节解点. 都是
m 能解或修正的耗散值与 原先估算q0不同,则把m的
图
② ③ ④
Until s已标记为SOLVED, Begin G:=FIND(G);
do: 中对,G并中值开计未点估始算出 则点计时其现加,则为图耗的能标hG散子解(只记s值结标)包上,,点记括能若若添。s解s有,是加。终耗终到节散节G
生 ⑤ n:=G中的任一非终节点(选一个非终节点作为
成
当前节点)根。据连接符标记(指
计算耗散值的过程
对当前的局部图重新计算耗散值
对于2次循环中,先扩展结点n4还是n5好 呢?
一般选择一个最可能导致该局部图耗散值 发生较大变化的结点先扩展(因为选择 这个结点先扩展,会促使及时修改局部 解图的标志。
3.3 博弈树搜索
博弈问题
双人 一人一步 双方信息完备 (对垒双方看到的信息是一样
上次课程回顾
盲目搜索策略 启发式搜索策略
第三章 与或图的搜索
4
283 164
75
3
283 164 75
2
或
283 14 765
6
283 14
765
1
23 184 765
或
或
c
23 184 765
23 184 765
9
283 14 765
d
123 84
765
5
283 164 75
7
83 214 765
ELSE 计算f(ni); ni达到深度k,计算各端节点f值.
算法(续)
5. LOOP2:IF CLOSED=NIL,THEN GO LOOP3 ELSE nd=FIRST(CLOSED);
6.IF(nd MAX) (f(nci MIN)有值) THEN f(nd):=max{f(nci)},REMOVE(nd,CLOSED), GO LOOP2;
当评价函数>0时,表示对我方有利,越大越 有利;
当评价函数<0时,表示对对方有利,越小越 有利。
极小极大搜索过程(2)
假定双方都是对弈高手,在决定走棋时, 会尽可能多看几步,并都选评价函数有 利的走棋。
极小极大搜索过程模拟人下棋的思考过 程
策略
极小极大搜索策略是考虑双方对弈若干步之后, 从可能的走步中选一个相对较好的走法来走, 即在有限的搜索深度范围内进行求解。
过 程
⑥ EGTHX:EP=NAANDMDD(((nn{i)n,,i}针生S,)OG的成找L)局V,出子部E计一D解节个)算图;待点Gq扩(集展ni{)n=ih}(,ni其),中InFiGGO,AL(ni)
⑦ S:={n};建立含n的单一节点集合S.(待修正的节点集合)
⑧ Until S为空, do:
从初始结点到目标结点,求解的是一条路径, 也就是结点的序列。
引入
“或” “与”
方法1 满足子问题1 一个问题有多个解法 方法2 满足子问题2
方法3 满足子问题3
一个结点是否被求解,取决于该结点的部分或 者全部结点(与的关系)被求解,而非一个后 续结点被求解
用与或图表示。
搜索从初始节点到一组终节点集N的一 个解图。
算法的三个阶段
用宽度优先法生成规定深度的全部博弈 树,然后对其端结点计算其静态估计函 数。
从底向上逐级求非端结点的倒推估计值, 直到求出初始结点的倒推值f(s)为止。
再由f(s)选出相对较好的走步。
算法
极大极小过程MINIMAX:
1. T:=(s, MAX),OPEN:=(s),CLOSED:=( );开始时树由初始节点 构成,OPEN表只含有S.
则结束或标记走步。
算法的一点说明
对手回应后,再以当时的状态作为起始 状态s,重复调用该过程。
原理性的,对复杂的问题不实用的
举例—九宫格棋牌
在九宫格棋盘上,两选手(MAX和MIN)轮流在 棋牌中摆各自的棋子(一次一枚),谁先取得 三子一线的结果就获胜。
设MAX用()表示,MIN用( O )表示,f(p)
8பைடு நூலகம்
283 714
65
a
28 143 765
b
283 145 76
123 784
65
12 3 84 7 65
283 64
175
283 16 754
83 214 765
283 714 65
28 143 765
283 145 76
目标
引入
上章介绍了状态空间问题以及搜索算法, 其特点是:
结点的后继结点是或的关系,只要一个后继 节点得以求解,该节点也就被求解。
假设1毫微秒走一步,约需10的145次方 年。
结论:不可能穷举。 目标:寻找一步好棋,等对手回敬后在
考虑寻找另一步好棋这种实际可行的策 略。
1,极小极大搜索过程(1)
是博弈树搜索的基本方法,目前常用的 -剪枝搜索方法,也从极小极大搜索过 程发展而来。
假定一个评价函数可以对所有的棋局进 行评价:
Cn为连接符的耗散值 * 明显的,若n是N的一个
元素,则k(n, N) =0
n1
n
…...
n2
ni
i个
解图
在普通图中,从初始结点到目标结点,求解的 是一条解路径。
与或图中某一个结点n到目标结点集N的解图类 似于普通图中的一条解路径。
解图的求法是:从节点n开始,正确选择一个 外向连接符,再从该连接符所指的每一个后继 结点出发,继续选一个外向连接符,如此进行 下去直到由此产生的每一个后继节点成为集合 N中的一个元素为止。
定义静态估计函数f, 以便对棋局作出优劣估值, 主要对端结点的“价值”进行度量。
f>0, 表对我方有利,f<0,表对方有利,f=0,表 势均力敌;f=,表我方胜,f=- 表对方胜
1,极小极大过程
1
b
0
a0
3
1
极大
1
极小
6
0
-3
3 -3
-3 -2
1
-3
6
-3
0 5 -3 3 3 -3 0 2 2 -3 0 -2 3 5 4 1 -3 0 6 8 9 -3 端结点给出数字使用静态函数f计算得到,其他的使用倒推方法取值