资源描述:
《旅行售货员问题.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、旅行售货员问题——计算复杂性理论介绍问题的描述售货员要到若干城市去推销商品,已知各城市之间的路程(或旅费)。他要选定一条从驻地出发,经过每个城市一次,最后回到驻地的路线,使总的路程(或总旅费)最小。旅行售货员问题虽然易于被人理解,但其计算复杂度却是问题的输入规模的指数函数,是一个NP完全问题。问题的描述路线是一个带权图。图中各边的费用(权)为正数。图的一条周游路线是包括V中的每个顶点在内的一条回路。周游路线的费用是这条路线上所有边的费用之和。用图论的术语来描述旅行售货员问题:即在一个正权完全图中寻找一个具
2、有最小权的哈密顿回路,对于此问题,由于完全图中必然存在哈密顿回路,目前可以用于求解的方法有枚举法,分枝限界法,这两种算法可以求得此问题的精确解,但到目前为止,还没有求解这一问题的有效算法,我们可以利用分支限界法,回溯法求解此问题的近似解,以求得与最优解最为接近的解。旅行售货员问题枚举法复杂度极高,可以求出精确解通过对问题的排列树的合理剪枝,大大缩减了问题需要求解的时间。可以求出精确解基于三角不等式性质等,进一步抽象求解过程,可以求出近似解,复杂度为多项式级别问题的精确解和近似解分支限界法NP问题近似算法回
3、溯法通过对排列树的剪枝,缩减问题需要的求解时间。可求精确解及近似解共有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、小的周游路线。实例: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
5、.77×10^47,假设一台计算机每秒完成1011次(百亿)次加法,将需要超过1.19×1029年才能完成所需的加法次数,显然是不可能的。算法效率1、有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。2、回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。3、回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果
6、肯定不包含(剪枝过程),则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。生成问题状态的基本方法扩展结点:一个正在产生儿子的结点活结点:一个自身已生成但其儿子还没有全部生成的结点死结点:一个所有儿子已经产生的结点深度优先的问题状态生成法:如果对一个扩展结点R,一旦产生了它的一个儿子C,就把C当做新的扩展结点。在完成对子树C(以C为根的子树)的穷尽搜索之后,将R重新变成扩展结点,继续生成R的下一个儿子(如果存在)回溯法基本思想一.解空间树的动态搜索回溯法从根
7、结点出发,按照深度优先策略遍历解空间树,搜索满足约束条件的解。初始时,根结点成为一个活结点,同时也称为当前的扩展结点。在当前扩展结点处,搜索向纵深方向移至一个新结点。这个新结点成为一个新的活结点,并成为当前的扩展结点。如果在当前的扩展结点处不能再向深方向移动,则当前的扩展结点就成为一个死结点。此时,应往回移动回溯至最近的一个活结点处,并使这个活结点成为当前的扩展结点。回溯法以这种工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已无活结点时为止。二.常用剪枝函数:用约束函数在扩展结点处剪去不满足约
8、束的子树;用限界函数剪去得不到最优解的子树。为了避免生成那些不可能产生最佳解的问题状态,要不断地利用限界函数(boundingfunction)来处死(剪枝)那些实际上不可能产生所需解的活结点,以减少问题的计算量。具有限界函数的深度优先生成法称为回溯法。回溯法=穷举+剪枝解空间树的动态搜索将图中n个顶点编号为1,2,…,n,以顶点1为起点,旅行回路描述为1,x1,x2,..,xn,1,其中x1,x2,..,xn为顶点2,3,4