实验6近似算法的应用-旅行商问题(TSP).docVIP

实验6近似算法的应用-旅行商问题(TSP).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验6近似算法的应用-旅行商问题(TSP)

实验6. 近似算法的应用-旅行商问题(TSP) 实验内容 本实验要求基于算法设计与分析的一般过程(即待求解问题的描述、算法设计、算法描述、算法正确性证明、算法分析、算法实现与测试),通过近似算法在实际问题求解实践,加深理解其基本原理和思想以及求解步骤。求解的问题为TSP。 作为挑战:可以考虑近似算法在其他NPC问题(如顶点覆盖问题等)上的应用。 实验目的 理解采用回溯法或分支限界法求解TSP的核心思想以及求解过程(确定解的形式及解空间组织,分析出搜索过程中的剪枝函数即约束函数与限界函数); 从算法分析与设计的角度,对TSP问题的基于回溯法或分支限界法求解具有更进一步的理解; 掌握采用近似算法求解NPC问题的方法,并分析算法的近似比。 环境要求 对于环境没有特别要求。对于算法实现,可以自由选择C, C++, Java,甚至于其他程序设计语言。 实验步骤 步骤1:理解问题,给出问题的描述。 步骤2:算法设计,包括策略与数据结构的选择; 步骤3:描述算法。希望采用源代码以外的形式,如伪代码或流程图等; 步骤4:算法的正确性(近似比)证明。需要这个环节,在理解的基础上对算法的正确性给予证明(这里可以略去); 步骤5:算法复杂性分析,包括时间复杂性和空间复杂性; 步骤6:算法实现与测试。附上代码或以附件的形式提交,同时贴上算法运行结果截图; 步骤7:技术上、分析过程中等各种心得体会与备忘,需要言之有物。 说明:步骤1-6在“实验结果”一节中描述,步骤7在“实验总结”一节中描述。 实验结果 问题描述 某售货员要到若干城市去推销商品,已知各城市之间的路程(或旅费)。他要选定一条从驻地出发,经过每个城市一次,最后回到驻地的路线,使总的路程(或总旅费)最小。 约束条件: a[i][j] != ∞ 限界条件:cl bestlcl+rl bestl(优化 cl: 当前已走的路径长度; rl: 剩余路径长度的下界; bestl: 当前最短路径长度。 分支限界法类似于回溯法,也是一种在问题的解空间树中搜索问题解的算法,常以宽度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。 搜索思想: 首先将根结点加入活结点表(用于存放活结点的数据结构); 接着从活结点表中取出根结点,使其成为当前扩展结点,一次性生成其所有孩子结点,判断孩子结点是舍弃还是保留,舍弃那些导致不可行解或导致非最优解的孩子结点,其余的被保留在活结点表中。再从活结点表中取出一个活结点作为当前扩展结点,重复上述扩展过程,一直持续到找到所需的解或活结点表为空时为止。 由此可见,每一个活结点最多只有一次机会成为扩展结点。 两种分支限界法(活结点表的实现方法): 队列式分支限界(Queue BB, QBB)法: 按照先进先出 (FIFO) 的原则选取下一个结点作为当前扩展结点。 优先队列式分支限界(Priority Queue BB, PQBB)法: 按照规定的优先级选取队列中优先级最高的结点作为当前扩展结点。 优先队列一般用二叉堆来实现: 最大堆实现最大优先队列,体现最大效益优先; 最小堆实现最小优先队列,体现最小耗费优先。 问题的分析: 解题步骤: 问题的解空间定义:(x1,x2,x3,x4) 解空间的组织结构:深度为4的排列树。 搜索过程中的剪枝函数: 约束条件:a[i][j] != ∞ 限界条件:cl bestl cl+rl bestl(优化) cl: 当前已走的路径长度; rl: 剩余路径长度的下界; bestl: 当前最短路径长度。 以BFS或以最小费用(最大效益)优先方式搜索解空间: 搜索过程中用剪枝函数(隐式约束)避免无效搜索: 约束函数:在扩展结点处剪去得不到可行解的子树; 限界函数:在扩展结点处剪去得不到最优解的子树。 如使用优先队列式分支限界法,则必须确定优先级。 算法设计 队列式分支限界法求解TSP: 解空间定义、解空间的组织结构、剪枝函数(约束条件与限界条件)都与采用回溯法时的相同。 解空间的搜索方式采用宽度优先,这一点与采用回溯法时的深度优先不同: 针对当前扩展结点,一次性生成其孩子结点,并判断这些孩子结点是否满足约束条件和限界条件。如果满足,则将该当前扩展结点的孩子结点插入到活结点表(末尾);反之,舍弃。 从活结点表中选取待扩展结点时,以先入先出 (FIFO) 的原则。 搜索过程直到找到问题的解或活结点表为空时为止。 4实例演示搜索过程 5.(1)TSP的队列式分支限界法伪代码: Q-BB-TSP(a) x[1]=1,i=1,cl=0,bestl=∞,

文档评论(0)

2017ll + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档