首页 旅行售货员问题

旅行售货员问题

举报
开通vip

旅行售货员问题旅行售货员问题——计算复杂性理论介绍*问题的描述售货员要到若干城市去推销商品,已知各城市之间的路程(或旅费)。他要选定一条从驻地出发,经过每个城市一次,最后回到驻地的路线,使总的路程(或总旅费)最小。旅行售货员问题虽然易于被人理解,但其计算复杂度却是问题的输入规模的指数函数,是一个NP完全问题。问题的描述 路线是一个带权图。图中各边的费用(权)为正数。图的一条周游路线是包括V中的每个顶点在内的一条回路。周游路线的费用是这条路线上所有边的费用之和。 用图论的术语来描述旅行售货员问题:即在一个正...

旅行售货员问题
旅行售货员问题——计算复杂性理论介绍*问题的描述售货员要到若干城市去推销商品,已知各城市之间的路程(或旅费)。他要选定一条从驻地出发,经过每个城市一次,最后回到驻地的路线,使总的路程(或总旅费)最小。旅行售货员问题虽然易于被人理解,但其计算复杂度却是问题的输入规模的指数函数,是一个NP完全问题。问题的描述 路线是一个带权图。图中各边的费用(权)为正数。图的一条周游路线是包括V中的每个顶点在内的一条回路。周游路线的费用是这条路线上所有边的费用之和。 用图论的术语来描述旅行售货员问题:即在一个正权完全图中寻找一个具有最小权的哈密顿回路,对于此问题,由于完全图中必然存在哈密顿回路,目前可以用于求解的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 有枚举法,分枝限界法,这两种算法可以求得此问题的精确解,但到目前为止,还没有求解这一问题的有效算法,我们可以利用分支限界法,回溯法求解此问题的近似解,以求得与最优解最为接近的解。*旅行售货员问题枚举法复杂度极高,可以求出精确解通过对问题的排列树的合理剪枝,大大缩减了问题需要求解的时间。可以求出精确解基于三角不等式性质等,进一步抽象求解过程,可以求出近似解,复杂度为多项式级别问题的精确解和近似解分支限界法NP问题近似算法回溯法通过对排列树的剪枝,缩减问题需要的求解时间。可求精确解及近似解共有6条周游路线:(1,2,4,3,1)66(1,2,3,4,1)59(1,3,2,4,1)25(1,3,4,2,1)66(1,4,2,3,1)25(1,4,3,2,1)59设G=(V,E)是一个带权图。图中各边的权值为正数。图的一条周游路线是包括V中的每个顶点在内的一条回路。旅行售货员问题的解空间可以组织成一棵树,从树的根结点到任一叶结点的路径定义了图G的一条周游路线。周游路线的费用是这条路线上所有边的费用之和。旅行售货员问题要找出费用最小的周游路线。实例:4个城市n=4叶节点个数(周游线路)=(n-1)!枚举法665925662559 从第一个城市到第二个城市有n-1种走法,从第二个城市到第三个城市有n-2种走法……因而共有(n-1)!种走法。 若考虑v1v2…vnv1和v1vnvn-1…v2v1是同一条回路,还共有(1/2)(n-1)!条不同的哈密顿回路。 为了比较权的大小,对每条哈密顿回路要做n-1次加法,故加法的总数为(1/2)(n-1)(n-1)!。时间复杂度O(n!)例如当有40个城市时,(1/2)(n-1)(n-1)!的近似值为3.77×10^47,假设一台计算机每秒完成1011次(百亿)次加法,将需要超过1.19×1029年才能完成所需的加法次数,显然是不可能的。算法效率1、有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。 2、回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。 3、回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含(剪枝过程),则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。生成问题状态的基本方法扩展结点:一个正在产生儿子的结点活结点:一个自身已生成但其儿子还没有全部生成的结点死结点:一个所有儿子已经产生的结点深度优先的问题状态生成法:如果对一个扩展结点R,一旦产生了它的一个儿子C,就把C当做新的扩展结点。在完成对子树C(以C为根的子树)的穷尽搜索之后,将R重新变成扩展结点,继续生成R的下一个儿子(如果存在)回溯法基本思想一.解空间树的动态搜索回溯法从根结点出发,按照深度优先策略遍历解空间树,搜索满足约束条件的解。初始时,根结点成为一个活结点,同时也称为当前的扩展结点。在当前扩展结点处,搜索向纵深方向移至一个新结点。这个新结点成为一个新的活结点,并成为当前的扩展结点。如果在当前的扩展结点处不能再向深方向移动,则当前的扩展结点就成为一个死结点。此时,应往回移动回溯至最近的一个活结点处,并使这个活结点成为当前的扩展结点。回溯法以这种工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已无活结点时为止。二.常用剪枝函数:用约束函数在扩展结点处剪去不满足约束的子树;用限界函数剪去得不到最优解的子树。为了避免生成那些不可能产生最佳解的问题状态,要不断地利用限界函数(boundingfunction)来处死(剪枝)那些实际上不可能产生所需解的活结点,以减少问题的计算量。具有限界函数的深度优先生成法称为回溯法。回溯法=穷举+ 剪枝解空间树的动态搜索将图中n个顶点编号为1,2,…,n,以顶点1为起点,旅行回路描述为1,x1,x2,..,xn,1,其中x1,x2,..,xn为顶点2,3,4,…,n的1个排列,因此解空间大小为(n-1)!ABDHN剪枝算法描述旅行售货员问题的解空间是一棵排列树。开始时,x=[1,2,…,n]相应的排列树由x=[1:n]的所有排列构成。在递归算法Backtrack中,1.当i=n时,当前扩展节点是排列树的叶节点的父节点。①检测图G是否存在一条从顶点x[n-1]到顶点x[n]的边和一条从顶点x[n]到顶点1的边。②如果这两条边都存在,则找到一条旅行员售货回路。③此时,算法还需要判断这条回路的费用是否优于已找到的当前最优回流的费用bestc。④如果是,则必须更新当前最优值bestc和当前最优解bestx。2.当i<n时,当前扩展节点位于排列树的第i-1层。①图G中存在从顶点x[i-1]到顶点x[i]的边时,x[1:i]构成图G的一条路径,且当x[1:i]的费用小于当前最优值时算法进入树的第i层,②否则将剪去相应的子树。privatestaticvoidbacktrack(inti){ if(i==n){//当前扩展结点是排列树的叶结点的父结点 if(a[x[n-1]][x[n]]<max_value&&//顶点n-1和n之间有边a[x[n]][1]<max_value||//顶点n到1之间有边cc+a[x[n-1]][x[n]]+a[x[n]][1]<bestc)){for(intj=1;j<=n;j++)bestx[j]=x[j];//得到最优解bestc=cc+a[x[n-1]][x[n]]+a[x[n]][1];//得到最优值}}else{//i<n,当前扩展结点位于第i-1层cc: 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 当前路径x[1:i]的费用a[][]:图G的邻接矩阵for(intj=i;j<=n;j++)//搜索第i层的所有子树//是否可进入x[j]子树?if(a[x[i-1]][x[j]]<max_value&&(bestc==max_value||cc+a[x[i-1]][x[j]]<bestc)){//搜索子树s);//交换x[i],x[j]的值cc+=a[x[i-1]][x[i]];backtrack(i+1);//进入下一层子树cc-=a[x[i-1]][x[i]];//还原cc的值s);//还原x[i],x[j]的值}}}Backtrack最坏情况下时间复杂度O((n-1)!)更新bestx时间复杂度O(n)时间复杂度很高O(n!) 算法效率1.分支限界法基本思想分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。在分支限界法中,每一个活结点只有一次机会成为扩展结点。①活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。②此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。2.常见的两种分支限界法从活结点表中选择下一扩展结点的不同方式导致不同的(1)队列式(FIFO)分支限界法将活结点表组织成一个队列,并按队列的先进先出原则选取下一个结点为当前扩展结点(2)优先队列式分支限界法将活结点表组织成一个优先队列,并按优先队列中规定的结点优先级选取优先级最高的下一个结点为当前扩展结点最大优先队列:使用最大堆,体现最大效益优先最小优先队列:使用最小堆,体现最小费用优先分支限界法1.求解目标回溯法:找出解空间中满足约束条件的所有解分支限界法找出满足约束条件的一个解在满足约束条件的解中找出使某一目标函数值极大或极小的解分支限界法和回溯法一样都是在解空间上搜索问题解的算法2.搜索方式深度优先DFS回溯法:分支限界法广度优先BFS或最小损耗优先C=301142662514592524算法描述:①准备工作:建立小根堆,用于存储活动节点。计算每个顶点的最小出边,若存在某个顶点没有出边,则算法终止。初始化树根(顶点1)为第一个活动节点。②判断节点是否是叶结点的父节点:是的话,则检查是否一定有最低耗费,若是加入小根堆;③不是叶结点的父节点,则生成子节点,并判断子节点是否有可能取得最低耗费,若可能则加入小根堆;④取出下一个节点作为活动节点,若该节点已经是叶结点,返回当前最低耗费值,即为最优旅行。若不是叶结点则循环2、3步。邻接矩阵*优先队列式分支限界法用极小堆存储活结点表B被扩展后,它的三个儿子结点C,D,E被依次插入堆中E被扩展后,它的儿子结点J,K被依次插入当前堆中D被扩展后,它的儿子结点H,I被依次插入当前堆中初始扩展结点为B,优先队列为空。1、准备工作:建立小根堆,用于存储活动节点。计算每个顶点的最小出边,若存在某个顶点没有出边,则算法终止。初始化树根(顶点1)为第一个活动节点。2、判断节点是否是叶结点的父节点:是的话,则检查是否一定有最低耗费,若是加入小根堆;3、不是叶结点的父节点,则生成子节点,并判断子节点是否有可能取得最低耗费,若可能则加入小根堆;4、取出下一个节点作为活动节点,若该节点已经是叶结点,返回当前最低耗费值,即为最优旅行。若不是叶结点则循环2、3步。*{};B{E,D,C};E{D,J,K,C};D{H,J,K,I,C};H{J,K,I,C};J{K,I,C};K{I,C};I{C};C{}.K被扩展后,得到可行解费用为59,高于当前最优解25NP问题近似算法 从实际应用中抽象出的旅行售货员问题具有一些特殊性质。比如,费用函数c往往具有三角不等式性质,即对任意3个顶点u,v,w有c(u,v)<=c(u,v)+c(v,w)。当图G的顶点是平面上的点,且任意两顶点间的费用是这两点间的欧氏距离时,费用函数c具有三角不等式性质。 可以证明,即使费用函数具有三角不等式性质,旅行售货员问题仍为NP完全问题。所以设计一个近似算法。当费用函数满足三角不等式时,该算法不会超过最优旅行售货员回路费用的2倍。在费用函数不一定满足三角不等式的一般情况下,不存在具有常数性能比的解TSP问题的多项式时间近似算法,除非P=NP。换句话说,若P≠NP,则对任意常数ρ>1,不存在性能比为ρ的解旅行售货员问题的多项式时间近似算法。NP问题近似算法voidapproxTSP(Graghg){(1)选择g的任意顶点r;(2)用Prim算法找出带权图g的一颗以r为根的最小生成树T;(3)前序遍历树T得到顶点表L;(4)将r加入到表L的末尾,按表L中顶点次序组成回路H,作为计算结果返回;}*NP问题近似算法(a)图G顶点集{abcdefgh)(b)找到的最小生成树(MST)T完全遍历DFSabcbhbadefegeda(c)对T作前序遍历的顺序abchdefga(d)L产生的哈密顿回路H取捷径生成解(e)G的一个最小费用旅行售货员回路*NP问题近似算法其中,a表示所给的图G顶点集;b表示由算法找到的一颗最小生成树T;c表示对树T所做的前序遍历访问各顶点的次序;d表示由T的前序遍历顶点表示L产生的哈密顿回路H;e表示图G的一个最小费用旅行售货员回路。在b时,对T的完全遍历W={abcbhbadefegeda},还不是一个旅行售货员回路,它访问了图G中某些顶点多次。由于费用函数满足三角不等式,可以在W的基础上,从中删去已访问过的顶点,而不会增加旅行费用。若在W中删去顶点u和w间的一个顶点v,就用边(u,w)代替原来从u到w的一条路。反复用这个办法删去W中多次访问的顶点,可得到图G的一条旅行售货员回路H={abchdefga}。* 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf (1)枚举法枚举法是最差的一种算法,即将所有可能的结果都排列一次,并比较解与当前最优解的大小,因此其时间复杂度很高O(n!),在实际应用中当结点数很多时不可取。(2)回溯法如果不考虑更新bestx所需的计算时间,则算法backtrack需要O((n-1)!)计算时间。由于算法backtrack在最坏的情况下可能需要更新当前最优解O((n-1)!)次,每次更新bestx需O(n)计算时间,从而整个算法的计算时间复杂性为O(n!)。*(3)分支限界法由于是NP问题,其时间复杂度很高,当相对于回溯法而言,分支限界法剪掉了一些不必要的计算,效率有很大的提高,但是在最坏的情况下可能需要满历所有的结点。此时的时间复杂度也是很高的。O(2n)搜索状态空间O(2)指数时间对每个结点的计算O(n)(4)NP问题近似算法作为NP完全问题,相对于其他算法,基于三角不等式性质的旅行售货员近似算法,效率有很大的提高。其不存在最坏的情况,算法稳定性较好,且性价比在常数级别。在采用朴素Prim算法时算法复杂度为O(n^2),还可以使用二叉堆优化Prim算法达到O(Elog(V))。E边V结点多项式时间2nn2*O(1)<O(logn)<(n)<O(nlogn)<O(n^2)<O(n^3)<O(2^n)<O(n!)<O(n^n)TSP_旅行商问题-动态规划精确解TSP_旅行商问题-贪心算法近似最优解TSP_旅行商问题-模拟退火算法TSP_旅行商问题-遗传算法TSP_旅行商问题-粒子群算法TSP_旅行商问题-神经网络拓展此 课件 超市陈列培训课件免费下载搭石ppt课件免费下载公安保密教育课件下载病媒生物防治课件 可下载高中数学必修四课件打包下载 下载可自行编辑修改,供参考!部分内容来源于网络,如有侵权请与我联系删除!***1、准备工作:建立小根堆,用于存储活动节点。计算每个顶点的最小出边,若存在某个顶点没有出边,则算法终止。初始化树根(顶点1)为第一个活动节点。2、判断节点是否是叶结点的父节点:是的话,则检查是否一定有最低耗费,若是加入小根堆;3、不是叶结点的父节点,则生成子节点,并判断子节点是否有可能取得最低耗费,若可能则加入小根堆;4、取出下一个节点作为活动节点,若该节点已经是叶结点,返回当前最低耗费值,即为最优旅行。若不是叶结点则循环2、3步。******
本文档为【旅行售货员问题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
爱赢
公司经营范围:网络软件设计、制作、图文设计、影视制作(编辑)
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:教育学
上传时间:2020-10-30
浏览量:9