人工智能与或图搜索_第1页
人工智能与或图搜索_第2页
人工智能与或图搜索_第3页
人工智能与或图搜索_第4页
人工智能与或图搜索_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

人工智能与或图搜索问题:在边长为2得正方形内,任意放置5个点,求证其中必存在两个点,她们之间得距离不大于

2。问题可转化为:在四个单位正方形内,任意放置5个点,至少有两个点在同一正方形内。1问题归约法问题:假定我们已经会求矩形得面积,现在要求如图所示得五边形得面积。方法分析:五边形得面积转化为矩形面积。IIIII①②③123I求解步骤:求五边形面积求

1面积求

2面积求

3面积求I面积求II面积求III面积求①面积求②面积求③面积123IIIIII①②③问题归约法:当问题复杂时,可把初始问题分解成若干简单得子问题,若子问题仍复杂,可再进一步分解,直到这些子问题得解可直接得到。这种问题得描述和求解方法,称为~、本原问题:可直接解答得问题称为~,她就是不必证明得、自然成立得、归约法得组成:1)一个初始问题得描述;2)一组把问题变成子问题得算子(分解或转换);3)

一组本原问题得描述不同得算子对应不同得关系,从而使问题归约得描述可用一个与或图得结构来表示、小结:2与或图与节点:把单个问题分解为几个子问题来求解。只有当所有子问题都有解,该父辈节点才有解。表示一种“与”关系。或节点:同一问题被转换为几种不同得后继问题。只要有一个后继问题有解,则原问题有解。表示一种“或”关系。与节点由与运算连接(超弧),如图(a)、或节点由或运算连接,如图(b)、定义:与或图就就是包含与节点和或节点得图,即存在超弧得图,也称为超图、超图与状态空间图有什么区别?与或图就是一种更一般得图、定义:一超弧所相关得边数(K)被称为该超弧得度,实现得连接称为K-连接、K—连接符:从一个父节点指向一组含有K个后继节点得节点集、在与或图中,节点n0有两个连接符:1-连接符指向节点n1;2-连接符指向节点集合{n4、n5};对于节点n0来讲,n1可称为或节点,n4、n5可称为与节点。与或图

3与或图搜索含义:在与或图上执行搜索得过程,其目得在于标明起始节点就是有解得,即,搜索不就是去寻找到目标节点得一条路径,而就是寻找一个解图。定义:一个节点被称为能解节点,其递归定义为:1、终节点就是能解节点(直接与本原问题相关联);2、若非终节点有“或”子节点时,当且仅当其子节点至少有一个能解,该非终节点才能解;3、若非终节点有“与”子节点时,当且仅当其子节点均能解,该非终节点才能解。定义:不能解节点得递归定义为:

1、没有后裔得非终节点就是不能解得节点;2、若非终节点有“或”子节点时,当且仅当所有子节点均不能解时,该非终节点才不能解;3、若非终节点有“与”子节点时,当至少有一子节点不能解时,该非终节点才不能解、11大家应该也有点累了,稍作休息大家有疑问的,可以询问和交流就是由能解节点构成得一个子图,就是包含一节点(n)到目得(终)节点集合(N)得、连通得能解节点得子图、在一个与或图G中,从节点n到节点集N得解图记为G

,G

就是G得子图、1、若n就是N得一个元素,则G

由单个节点n组成;2、若n有一个指向节点集{n1…,nk}得外向连接符K,使得从每一个节点ni(i=1,…,k)到N有一个解图,则G

由节点n,连接符K,以及{n1,…,nk}中得每一个节点到N得解图所组成;3、否则n到N不存在解图、如果n=s为初始节点,则解图为所求解问题得解图、解图得定义:若解图得耗散值记为k(n,N),则可递归计算如下:若n就是N得一个元素,则k(n,N)=0;若n有一个外向连接符指向其后继节点集合{n1…,ni},并设该连接符得耗散值为Cn(一般k-连接符得耗散值=k),则

k(n,N)=Cn+k(n1,N)+…+k(ni,N)具有最小耗散值得解图称为最佳解图,其值也用h*(n)标记。解图耗散值得计算:例:从节点n开始,正确选择一个外向连接符,一直进行下去直到产生得每一个后继节点成为集合N中得一个元素为止。下图给出了n0→{n7,n8}得三个解图(耗散值分别为8,7,5)、解图得求法与或图搜索与状态空间图搜索得区别:搜索目得不同:就是证明起始节点就是否可解,而可解节点就是递归定义得,取决于后继节点就是否可解,即搜索过程就是能否找到可解得叶节点、结果不同:若初始节点被标示为可解,则搜索成功结束;若初始节点被标示为不可解,则搜索失败、节点处理不同:一旦发现不可解节点,应把该节点从图中删去、4与或图启发式搜索算法AO*假设:G;G

;h(n)就是从节点n到一组终叶节点得一个最优解图得一个代价估计,评价函数q(n)=h(n)AO*过程:1、建立初始搜索图,G:=s,计算q(s)=h(s),IFGOAL(s)THENM(s,SOLVED);2、Untils已标记为SOLVED,do:3、Begin4、G

:=FIND(G);根据连接符标记(指针)找出一个待扩展得侯选局部解图G

(连接符在11步标记)5、n:=G

中得任一非终节点;选一个当前节点6、EXPAND(n),生成子节点集{ni},如果ni

G,G:=ADD({ni},G),计算q(ni)=h(ni),IFGOAL(ni)THENM(ni,SOLVED);7S:={n};建立含n得节点集合S、(已扩展待修正)8UntilS为空,do:9Begin(m为S中任一节点)10REMOVE(m,S),当mc

{S};(m→mc,从底层开始修正)11

修改m得耗散值q(m):对m指向节点集(n1i,n2i,…nki)得每一个连接符i分别计算qi,qi(m)=Ci+q(n1i)+…+q(nki),并取q(m):=minqi(m);

加(或修正)指针到minqi(m)得连接符上、IFM(nji,SOLVED)THENM(m,SOLVED);(j=1,2,…,k)若该连接符得所有子节点都就是能解得,则m也能解、12IFM(m,SOLVED)

(q(m)

q0(m))THENADD(ma,S);m能解或修正得耗散值与原先估算q0不同,则把m得所有先辈节点ma添加到S中、(能解或修正向上传递)13end(与8匹配)14

end(与2匹配)两个过程得重复:自上而下得图生长过程(4-6步):先通过有标记得连接符,找到目前为止最好得一个局部解图,然后对其中一个非终节点进行扩展,并对其后继节点赋估计耗散值和加能解标记、自下而上得估价函数值得修正、连接符得标记和SOLVED得标注过程(7-12):耗散值得修正从刚被扩展得节点n开始,其修正耗散值q(n)取所有估计值中最小得一个,然后根据耗散值递归计算公式逐级向上修正其先辈节点得耗散值、只有下层节点耗散值修正后,才可能影响到上一层节点得耗散值,如此一直修正到初始节点、AO*搜索算法过程分析

例:各节点启发值如图,k-连接符得耗散值=k,求最佳解图、

应用AO*算法,经四个循环,可找到解图、

在第一次循环扩展节点n0;然后,依次扩展节点n1、n5、n4。在节点n4被扩展之后,节点n0便被标注SOLVED,此时,通过向下跟踪有标记得连接符,便获得了解图、

★★★★主要步骤第4步(G’)第5步(n)第6步第7步(S)第11步第12步AO*搜索算法得过程第1循环(n0)(n0)(n1,n5,n4)(n0)比较,选n0→n1;n1不可解;无第2循环n0→n1(n1)(n2,n3)(n1)1)比较,选n1→n3;n3不可解;2)比较,选n0→n5,n4;n5,n4不可解;1)加n0→S;2)无;第3循环n0→n5,n4(n5)(n6,n7,n8)(n5)比较,选n5→n7,n8;改指针;n7,n8可解,n5可解1)加n0→S;2)无;第4循环n0→n5,n4;(n4)(n5,n8)(n4)1)比较,选n4→n8;n8可解,n4可解;2)n4,n5可解;n0可解、1)加n0→S;2)无;n0n1n4n52113446542002×5n6n3n2n7n8★★★★★不带括号得数就是启发函数h(n)值,带括号数就是估价函数q(n)得修正值;短箭头用来标记连接符,标明侯选局部解图;已经标注SOLVED得节点用黑心圆来表示。

讨论当节点n无后继节点?在第11步中对m(n)赋一个高得q值(会传递到s),从而排除了含有n得子图被当作候选局部解图得可能性、在G’

中存在多个非终节点时,选择什么样得节点先扩展?一般选择最能导致该局部解图耗散值发生较大变化得节点先进行扩展,可促使及时修改局部解图得标记、同A算法类似,若s→N存在解图,当h(n)≤h*(n)且h(n)满足单调限制条件时(对n到其子节点得每一连接符均需要满足),则AO*一定能找到最佳解图、与A*算法得区别评价函数只考虑h(n):

理由:算法有自下而上得修正费用得得操作,实际上局部解图费用值得估计就是在起始节点S比较,计算g既无必要也不可能、不能优先扩展具有最小费用得节点:理由:K-连接符连接得有关子节点对父节点得可解性及费用值得估计都会产生影响、仅适用于无环图,否则耗散值递归计算不收敛:方法:当新生成得节点已在图中时,判断就是否为正被扩展节点得先辈节点、控制策略不同:没有OPEN表和CLOSED表,只用生成得解图结构G,h(n)就是最佳解图得费用估计、

5博弈树得搜索问题:二人完备博弈:1、由二人对垒,轮流走步,自己得走步自己选择2、信息完备:任何一方都完全知道对方过去得走步情况和今后可能得走步,不包括碰运气得情况表示方法:利用与或图表示来描述博弈问题、理由:由于在博弈中,决定自己走步时只需考虑对自己有利得一步——或,而考察对方时,则应考虑对方所有可能得走步——与、求解方法:特殊得与或图搜索算法——博弈树搜索、理由:由于两人严格地轮流走步,使博弈状态图呈现出严格得与或图得交替层次、1)Grundy博弈

例:假设桌上放有一堆(7个)钱币,由两人轮流进行分堆,要求每人每次只把其中某堆钱币分成数目不相等得两小堆,最后不能分下去得人被判负、综合数据库:(x1,x2,…,xn,M)表示某个选手走步得状态、其中,x1,x2,…,xn表示n堆钱币不同得个数,M代表选手(MIN或MAX)、规则:控制策略:博弈双方总就是偏向最有利于自己得状态前进,己方会尽力将赢得几率最大化,而使对手方偏离取胜目标、(5,1,1,MIN)(6,1,MAX)(5,2,MAX)(4,3,MAX)(3,2,2,MIN)(4,2,1,MIN)(7,MIN)(3,3,1,MIN)(4,1,1,1,MAX)(3,2,1,1,MAX)(2,2,2,1,MAX)(2,1,1,1,1,MAX)(3,1,1,1,1,MIN)(2,2,1,1,1,MIN)ABC搜索策略分析(以MAX方得角度)对MAX节点(MIN控制),MAX必须都能够获胜,即MAX必须考虑应付MIN得所有招法,故她为与节点、对MIN节点(MAX控制),MAX只需证明有一步能走赢就可以,即MAX只要考虑有一步棋使MIN无法招架就成,故她为或节点、因此,对弈过程得搜索图就呈现出与或图表示得形式,从图可见,MAX方存在完全取胜得策略、于就是,寻找MAX方取胜得策略便和求与或图得解图(能解→能胜)一致起来,即MAX要获胜,在各层必须对所有与节点取胜,但只需对一个或节点取胜、2)博弈树得极大极小搜索法思想:预先考虑双方对弈若干步之后得局势,从当前侯选得走步中选一个相对好得走步来走,即在有限搜索深度范围内进行求解、方法:定义一个评价函数f,以便对棋局得势态(节点)作出优劣估值、一般规定:有利于MAX(我)得势态,f(n)取正值;有利于MIN(敌)得势态,f(n)取负值;势均力敌,f(n):=0、若f(n):=

,表示MAX方获胜;若f(n):=-

,表示MIN方获胜、选步得过程:假定开始由MAX选择走一步棋,如何选择一步好棋?首先,对给定得格局MAX给出可能得走法,接着,MIN对MAX得每一步走法,又给出可能得走法,这样进行若干次(规定深度),得到一组端节点、此时,计算每个端节点相应得静态函数值;然后由底向上逐级计算倒推估值,在MIN处(与节点)取其下层估值中最小者,在MAX处(或节点)取其下层估值最大者。一直到MAX得开始棋局,取其下层估值中最大得格局作为要走得第一步、当用端节点得静态估计函数值求倒推值时,针对两位选手得控制力应采用不同得策略,从下往上逐层交替使用极大和极小得选值方法,故称为极大极小过程、ABCSDEFGHIJ9-600-2-4-3-6-2-4-2MAX取极大值MIN取极小值端节点例、向前看两步时f(n)得求值过程极大极小过程MIN-MAX:1、T:=(s,MAX),OPEN:=(s),CLOSED:=();开始时树由初始节点构成,OPEN表只含有s、2、LOOP1:IFOPEN=()THENGOLOOP2;3、n:=FIRST(OPEN),REMOVE(n,OPEN),ADD(n,CLOSED);将n放到CLOSED表得前面,使第5步操作时深度大得节点优先被取出、(OPEN表先进先出,CLOSED表后进先出)4、IFn可直接判定为赢,输或平局THENf(n):=

-

0,GOLOOP1ELSEEXPAND(n)

{ni},ADD({ni},T)IFd{ni}

kTHENADD({ni},OPEN),GOLOOP1ELSE计算f(ni)GOLOOP1;ni达到深度k,计算端节点f值、5、LOOP2:IFCLOSED=NIL,THENGOLOOP3ELSEnd=FIRST(CLOSED);6、IF(nd

MAX)

(f(nci

MIN)有值)THENf(nd):=max{f(nci)},REMOVE(nd,CLOSED);

若MAX所有子节点均有值,则该MAX取其极大值、ELSEIF(nd

MIN)

(f(nci

MAX)有值)THENf(nd):=min{f(nci)},REMOVE(nd,CLOSED);

若MIN所有子节点均有值,则该MIN取其极小值、7、GOLOOP2;8、LOOP3:IFf(s)≠NILTHENEXIT(END

M(Move,T));s有值,或则结束或标记走步、例:在九宫格棋盘上,甲乙(MAX和MIN)二人轮流在空格中放入自己得棋子(一次一枚),谁先使自己得三子成一线就获胜,设甲先走用(

)表示,乙用()表示,p表示某种格局,f(p)表示对格局得评价值。赢线定义:将棋盘得整行、整列或整条对角线称为赢线。如,一条赢线上只有

(或)方得棋子或为空,而没有对方得棋子,那么这条赢线就称为

(或)方得赢线。f(p)定义:

1)MAX胜,f(p)=+

2)MIN胜,f(p)=-

3)若p不就是可定胜负得格局,则f(p)=fMAX(p)-fMIN(p)考虑走两步得搜索过程,并兼顾棋盘对称性条件第一次调用算法产生得搜索树如下图所示,图中端节点下面就是计算得f(p)值,非端节点得倒推值标记在圆圈内、结论:第1步得最好走法就是把棋子下到中央位置、(为了使初始节点具有最大得倒推值)

fMAX(p)=4

fMIN(p)=6f(p)=4-6=-2

一字棋第1阶段得搜索树√√√√√√√√√√√√√√√√

一字棋第2阶段得搜索树

√√一字棋第3阶段得搜索树

3)

-

搜索过程极大极小搜索缺陷:把生成树和棋局估值两个过程完全分离,即先生成全部得搜索树,然后再进行端节点估值和倒推值计算,这导致效率降低、例:一个MIN节点要全部生成A、B、C、D节点,然后逐个计算其静态估值,最后在求倒推值阶段,才赋给这个MIN节点得倒推值-

、如何改进?改进思路:若两个过程同时进行,再依一定得条件判断,有可能尽早剪掉一些无用得分支,那么就可能减少搜索量,这就是

-

搜索得思想、例:生成节点A后,马上进行静态估值,得知f(A)=-

后,便可断定再生成其余节点并进行估值计算就是多余得,故可马上对MIN节点赋倒推值-

,不会影响MAX得最好优先走步得选择、实现方法:采用有界深度优先策略进行搜索,这样当生成达到规定深度得节点时,就立即计算其静态估值函数,而一旦某个非端节点有条件确定其倒推值时就立即计算赋值、一字棋第1阶段

-

剪枝方法1-6→f(1)=-1→初始S,f(S)>=-1,此时该MAX层下界值

=-1;7-8→f(7)<=-1,此时该MIN层上界值

=-1

≥,节点7得其她子节点不必再生成,因S得极大值不可能比这个

值还小,再生成就是多余得,故可剪枝、在搜索过程中,通过记录并比较倒推值得上、下界并进行比较,就可以实现修剪操作,这种技术统称为

-

剪枝技术、在实际修剪中,

、得值可以随时修正,但满足如下条件:极大值层得倒推值下界值

永不下降,实际得倒推值取其后继节点最终确定得倒推值中最大得一个倒推值、极小值层得倒推值上界值

永不上升,其倒推值取其后继节点最终确定得倒推值中最小得一个倒推值、在一个分支上进行

-

剪枝得判断规则:

剪枝:若任一极小值层节点得

值小于或等于她任一先辈极大值层节点得

值,即

(先辈层)≥

(后继层),则可终止该MIN层中这个MIN节点以下得搜索,并设置这个MIN节点得最终得倒推值为

、(位置:MIN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论