(VIP专享)AI-问题求解课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《(VIP专享)AI-问题求解课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VIP专享 VIP 专享 AI 问题 求解 课件
- 资源描述:
-
1、AI:问题求解基本理论与方法内容提要搜索的定义具体问题的形式化盲信息搜索有信息搜索/启发式搜索优化问题的搜索算法联机/在线搜索搜索的定义三国华容道找出:一个移动序列,放出曹操Introduced in 1878 by Sam Loyd,who dubbed himself“Americas greatest puzzle-expert”类似游戏:数码(8,15,,n2-1,)12345678121511141013956784321.12141115101395 6 7 8432112151114101395 6 7 84321?=$1000三国华容道不同的初始布局编程求解三国华容道状态:每个
2、“局面”行动:可行的“移动”实现问题:如何在计算机内表示“状态”和“行动”定义一个“搜索”问题 State space S Successor function:x S SUCCESSORS(x)2S Initial state s0 Goal test:xS GOAL?(x)=T or F Arc cost,路径耗散S132State space S =State graph每个节点表示一个状态弧及其两个端点表示后继函数可能包括多个不连通的分量搜索问题的“解”IG解:从初始节点“I”到任何目标节点“G”的一条路径(沿箭头方向)解是路径,可能存在多条从I到G的路径,最优解就是路径耗散(路径上c
3、ost之和)最小的路径最短路径问题?搜索问题的“解”无解解就是连通源点和目标点的路径IG构建好的状态空间问题问题状态定义状态定义状态数目状态数目8-数码每个格子放置一个数9!=362,88015-数码每个格子放置一个数16!2.09 x 1013 24-数码每个格子放置一个数25!1025八皇后问题每行放一个皇后88N皇后问题每行放一个皇后NNN皇后问题任何一个位置都可以放一个皇后(N2)!/(N2-N+1)!存在大量“不可达/违背约束”的状态!n2-1 数码问题的状态空间逆序值(每个数被逆序的次数之和)的奇偶性,将整个状态图分为两个不联通的分量所以Sam Loyd不用担心他的钱被领走!121
4、41115101395 6 7 8432112151114101395 6 7 84321?121511146139510784321n2=0 n3=0 n4=0n5=0 n6=0 n7=1n8=1 n9=1 n10=4n11=0n12=0n13=0n14=0n15=0 逆序值=7如何证明?什么是“好的”状态空间所有状态?所有“可达的”状态?“不可达”状态的判断,在无解时非常重要!状态数目:少,越少越好?最少?状态数目一般情形下,太多!(无法全部在计算机内表示出来,或者遍历一次)状态空间/状态图的设计和后继函数密切相关!数码问题的搜索时间 8-puzzle 362,880 states 15-
5、puzzle 2.09 x 1013 states24-puzzle 1025 states100 millions states/sec0.036 sec 55 hours 109 years我们的搜索问题是寻找一个“状态”迁移的序列,为什么搜索状态空间大小个状态就一定可以完成搜索任务?基准算法:搜索整个状态图图的宽度优先搜索算法生成树Search tree我们关心的搜索算法仅仅搜索整个状态空间的一小部分相同点:(与基准算法比)算法大框架所有的解(可行+不可行)构成的集合不同点:从状态图中选择的子集S不一样S构成的状态图(弧)不一样,后继函数空间大小/解的数量为N,则搜索过的部分是log(N
6、)的多项式函数获得状态空间/状态图后,执行“搜索”8皇后问题和n2-1数码问题的求解方法的异同!8皇后问题,简单的解法就是在空棋盘上不停添加皇后,其解是“构造”出来,构造出一个状态,然后对状态进行目标测试,不同状态之间不迁移,相邻两次目标测试之间的“动作序列”是“后继函数”!(深度优先?)n2-1数码问题,求解过程是从初态出发,不停地在不同状态之间迁移,直到到达目标状态状态的解释事物可能的抽象表示,关键属性上相同,不重要细节的影响可以忽略不计比如棋盘的布局,棋子偏移1毫米,对布局/状态没有影响状态空间是离散的,有限或者无限后继函数的解释数独求解器的例子。每个状态可行的所有“行动”的集合函数的返
7、回值,行动的结果(后继状态)和行动的代价(cost)后继函数是算法设计的“关键”!最复杂的部分路径耗散/代价路径耗散/代价是沿着某条边/弧,转移到下一个状态,执行动作的代价(后继函数执行的代价),一般总是正数;数码问题,每移动一次,代价为1N皇后问题,每放置/撤回一个皇后,代价为1,从一个状态转移到下一个状态,花费的代价=0Why?目标状态可以是一个被精确定义的状态可以是满足某些条件的状态可以是满足某些条件的状态集合搜索问题状态/状态空间/状态图后继函数/状态转移目标状态初始状态路径耗散/代价解形式化搜索问题,设计算法求解具体问题的形式化例子:8皇后问题皇后问题国际象棋棋盘上放置8个皇后,彼此
8、间不能吃掉对方正确的解错误的解形式化8皇后问题:方法一状态,任何0,1,2,,8个皇后在棋盘上时的布局代表一个状态初始状态:0个皇后在棋盘上目标测试/目标状态:8个皇后在棋盘上,彼此间不互吃路径耗散:放置一个皇后,代价为1后继函数:在一个空的格子上放置一个皇后,得到一个新状态高度为9的64-叉树 64x63x.x57 3x1014 states形式化8皇后问题:方法二状态,任何0,1,2,,8个皇后在棋盘左侧,且互不攻击时代表一个状态;所谓棋盘左侧互不攻击,就是前k列每列一个皇后,互不攻击;初始状态:0个皇后在棋盘上目标测试/目标状态:8个皇后在棋盘上路径耗散:放置一个皇后,代价为1后继函数:
9、在k+1列放置第k+1个皇后到一个不受攻击的位置状态数目急剧减少!2,057 statesN皇后问题“解”是一个状态,而非从初始态到目标状态的序列;这类搜索问题,一般称为“设计问题”上述形式化方法二是否能“简单”求解N皇后问题?8皇后 2057个状态100皇后 1052个状态能否有算法能快速求解N皇后问题?问题特点:很多个解,解的分布较好(较均匀)路径规划问题状态空间是什么?如何形式化?禁止触碰障碍物路径规划问题的形式化:方法一路径规划问题的形式化:方法一网格化地图令小网格边长为1,则对角线距离为2路径规划问题的形式化:方法一路径规划问题的形式化:方法一最优解,仅仅是网格化的离散空间中的最优解
10、解释一个序列路径规划问题的形式化:路径规划问题的形式化:方法二方法二假设垂直扫描线从左到右进行扫描;遇到障碍物的顶点(不妨设障碍物为多边形)则暂停,标记标记方法:对两次暂停之间的被扫描区域染上不同的颜色被障碍物割裂的扫描线获得不同颜色的区域扫描线路径规划问题的形式化:方法二路径规划问题的形式化:方法二路径规划问题的形式化:方法二路径规划问题的形式化:方法二每个染色区域用其重心点表示每个重心点代表一个状态,获得状态空间路径规划问题的形式化:方法二路径规划问题的形式化:方法二后继函数:具有相邻边界线的色块之间互为后继获得状态图边/弧的路径耗散/代价为状态点之间的距离路径规划问题的形式化:方法二路径
11、规划问题的形式化:方法二解为一条路径路径需要通过特定的边界点最优路径需要进一步优化和平滑路径规划问题的形式化:路径规划问题的形式化:方法三方法三取障碍物(不妨设为多边形)的顶点以及初始地点和目标地点构成图的顶点;对任何顶点,连接其可视顶点(没有被障碍物阻挡),获得后继函数路径耗散/代价:边/弧的长度,顶点间的距离路径规划问题的形式化:方法三路径规划问题的形式化:方法三最优解是连续的搜索与AIAI系统中搜索无处不在路径搜索与导航打包/邮件分发超大规模集成电路布局设计蛋白质比对和折叠制药电脑游戏无信息搜索/盲搜索(Un-informed Search)状态图和搜索树某些节点可能会被重复访问!Sea
12、rch treeState graph搜索节点和状态123456781234567812345678135681345678247212345678如果状态允许被重复访问,则即使状态有限,搜索树也可能是无限的同样的状态,在树中可同样的状态,在树中可能有多个节点表示,我能有多个节点表示,我们先暂时认为们先暂时认为“不同的不同的节点代表不同的状态节点代表不同的状态”,也就是说也就是说“节点节点”和和“状态状态”暂时是同义词暂时是同义词搜索算法设计细节:节点数据结构父节点12345678状态节点N的Depth =从根到N的路径长度(根的深度为0)存储信息3Path-Cost3DepthExpande
13、dyes.子节点搜索算法设计细节:节点扩展节点N的扩展,包括的处理:1.评估状态/节点N的后继函数2.对后继函数返回的所有状态,在搜索树上产生一个子节点12345678N135681345678247212345678节点产生 节点扩展搜索算法设计细节:搜索树的边界搜索树的边界:未被扩展的节点集合,可能在排队等待扩展!123 45678123 45678123 4567813568134567824 72123 45678注意与叶节点进行区别!搜索算法设计细节:搜索策略搜索树的边界实际就是等待扩展的节点集合!等待扩展的节点用“优先队列”FRINGE来实现INSERT(node,FRINGE)R
14、EMOVE(FRINGE)等待扩展节点的优先次序我们称之为“搜索策略”搜索算法设计细节:算法框架(基准算法)1.if (GOAL?(S0)=T)then return S02.INSERT(S0,FRINGE)3.Repeat:a)if(empty(FRINGE)=T)then return failurea.s REMOVE(FRINGE)b.For every state s in SUCCESSORS(s)i.If(GOAL?(s)=T)then return path or goal stateii.INSERT(s,FRINGE)节点节点/状态扩展状态扩展度量算法求解问题的性能完备性
15、:完备性:问题有解时,算法能否保证返回一个解?问题无解时,算法能否保证返回failure?最优性:最优性:能否找到最优解?返回代价/路径耗散最小的路径?复杂性:复杂性:算法需求的时间和内存1.状态图的大小:初态和后继函数决定,影响因素:分支因子(后继的最大个数),最前目标状态的深度,路径的最大长度2.时间复杂度:访问过的节点数目3.空间复杂度:同时保存在内存中节点数目的最大值我们研究搜索算法的目标很多搜索问题是NP-hard,比如TSP,数码问题因此,别期望能在多项式时间内(时间复杂度是问题规模的多项式函数)求解出问题的所有实例(instances),没有通用算法!没有免费的午餐算法设计的意义
16、:对每个instance/每类instances找到其最有效(尽可能高效)的求解算法无信息搜索和有信息搜索的差异未扩展节点集合FRINGE是“无序”将更有希望的节点放在未扩展节点集合FRINGE的前面,优先扩展Uninformed/BlindInformed/HeuristicQ:如何排序或者判断优先扩展节点?例子:盲搜索和启发式搜索盲搜索:s1和s2的次序是“随机的”,树的结构确定的,在算法实现时预先“确定”下来的启发式搜索:状态s2更接近目标状态(错误位置更少),因此可以优先扩展状态s2Goal states1s2STATESTATE123456781234567812345678新节点/
17、状态插入到未扩展节点队列FRINGE的队尾FRINGE=(3,4,5)2345167FRINGE=(4,5,6,7)基准算法(宽度优先搜索算法)的进一步解释算法的重要参数1.分支因子b,后继函数返回的最大状态数目2.从初态到目标状态的最小深度d,或者说是宽度优先生成树上“埋藏最浅”的目标节点的深度基准算法(宽度优先搜索算法)的进一步解释评价基准算法p完备性?p最优性?p复杂性?完备的完备的 如果边的权值都为如果边的权值都为1访问节点数:访问节点数:1+b+b2+bd =(bd+1-1)/(b-1)=O(bd)基准算法(宽度优先搜索算法)的进一步解释时间和内存需求的直观认知d#NodesTime
18、Memory2111.01 msec11 Kbytes411,1111 msec1 Mbyte61061 sec100 Mb8108100 sec10 Gbytes1010102.8 hours1 Tbyte12101211.6 days100 Tbytes1410143.2 years10,000 Tbytes假设:b=10;1,000,000 nodes/sec;100bytes/node基准算法(宽度优先搜索算法)的进一步解释关于无解的讨论问题无解时,若状态空间无限大或者任意状态可被任意次重复访问,则宽度优先搜索算法不会停止12141115101395678432112151114101
19、3956784321?基准算法的改进策略:双向搜索2个未扩展节点集合:FRINGE1 和 FRINGE2s时间和空间复杂度是 O(bd/2)O(bd)(假设两个方向的分支因子都是b)问题:两个方向的分支因子不一样会怎样?双向搜索的进一步解释时间复杂度:获得极大的优化O(bd/2)O(bd),但是“问题本质”(指数时间复杂度)没有变化。这已经是双向搜索带来的明显进步;空间复杂度:O(bd/2)O(b),极大地“恶化”了完备性:完备的 最优性:边的代价都为1时,能保证最优性双向搜索,是策略/算法框架,而非“原子的”的搜索算法,双向搜索的两个方向(前向/反向)搜索算法,可以一样,也可以不一样问题:总
20、是能找到“好”的反向搜索算法吗?目标状态是单个精确描述的状态?满足某个条件的状态集合?后继函数的逆函数“前驱函数”能方便地描述或表达吗?(比如象棋的目标状态:获胜的布局,个数?如何描述,等等)无信息搜索算法:深度优先搜索新状态/节点总是插入到队列的“队头”(栈)12345FRINGE=(4,5,3)深度优先搜索算法的评价p完备性?p最优性?p复杂性?若搜索树有限,则是完备的若搜索树有限,则是完备的 不一定是最优的不一定是最优的访问节点数访问节点数(最坏情形最坏情形):1+b+b2+bm =O(bm)空间复杂度空间复杂度O(bm)注:注:m是叶子节点的最大深度是叶子节点的最大深度深度优先搜索变型
21、I:回溯搜索每次扩展节点的时候,只扩展一个节点,节省内存,最多同时保存O(m)个节点若深度优先搜索树是无限的,则搜索可能是不完备的,也可能无法得到最优解深度优先搜索变型II:深度受限搜索设置扩展节点的深度阈值k,当节点深度大于k时,节点不再扩展算法返回结果:解无解failure深度阈值k内无解Q:k比d(最浅目标状态的深度)大或小时,会怎样?如何容易得到k,算法性能将会得到提升深度优先搜索变型III:迭代深入搜索思想:使用不同的受限深度参数k=0,1,2,.不断重复执行“深度受限搜索”目的:寻找合适的深度受限深度参数k值带来的好处:结合了宽度优先和深度优先二者的长处(时空复杂度,完备性和最优性
22、)付出的代价?迭代深入搜索的评价p完备性?p最优性?p复杂性?完备的完备的,当,当k=d时时最优的,当边权值都是最优的,当边权值都是1时时访问节点数访问节点数(最坏情形最坏情形):(d+1)(1)+db+(d-1)b2+(1)bd=O(bd)空间复杂度空间复杂度O(bd)迭代深入搜索付出的额外代价宽度优先迭代深入11 x 6=622 x 5=1044 x 4=1688 x 3=241616 x 2=323232 x 1=3263120宽度优先迭代深入1610501004001,0003,00010,00020,000100,000100,000111,111123,456d=5 and b=1
23、0d=5 and b=2对未知问题,解对未知问题,解的深度未知,付的深度未知,付出较小的代价,出较小的代价,迭代深入搜索是迭代深入搜索是首选的盲搜索算首选的盲搜索算法法盲搜索的比较避免状态重复访问行动可逆,则有可能会出现重复状态,如“三国华容道”;搜索树是无限的行动不可逆,不会出现重复状态,如“8皇后问题”的形式化方法二;搜索树有限如何避免?(宽度优先搜索)条件1:对扩展出来的状态进行标记和存储标记到visited中(用hash table实现)条件2:进行比较,若新扩展出来的状态在visited中,则放弃该状态问题:空间需求是多少?深度优先搜索?深度优先搜索?深度优先搜索标记存储深度优先搜索
24、标记存储需要的内存空间同宽度需要的内存空间同宽度优先搜索!优先搜索!避免状态重复访问:记住所有访问过的状态增加CLOSED表,存储所有访问过(扩展过)的节点/状态未扩展的节点/状态用OPEN表来标识若当前待扩展的节点/状态已经在CLOSED表中,则丢弃该状态/节点;否则扩展当前节点/状态上述算法框架称为“图搜索”,直接探索“状态图”空间(内存需求巨大!)最优性如何保证?宽度优先搜索的实现方式可以保证!区分“树搜索”和“图搜索”树搜索中,不同的节点N1,N2可能表示的是相同的状态s,分别表示从初态出发,到达状态s的两条不同路径(可能具有不同的路径耗散)图搜索中,相同的状态只有一个节点来表示;不同
25、的节点代表不同的状态;可以想象成把“树搜索”中具有相同状态的节点合并为一个节点,得到了“图”树的“层次遍历”算法和图的“宽度优先搜索”遍历算法基本认知若状态空间是无限的,一般来说,搜索是不完备的若状态空间有限,但允许状态被任意次重复访问,搜索一般是不完备的若状态空间有限,访问时重复访问的节点被丢弃,则搜索是完备的,但是一般不是最优的代价一致的搜索宽度优先搜索,未扩展节点集合是“随机”次序,具有隐含的约束:单步路径耗散都是1优先扩展“扩展深度最小”的节点若单步耗散因边不同而不同,会怎样?所谓代价一致搜索:扩展的节点是使得路径消耗最低的节点。确保代价c=0,(为0则会陷入无穷循环)未扩展节点进行了
展开阅读全文