《蛮力动规贪心回溯法的01背包和TSP问题》由会员分享,可在线阅读,更多相关《蛮力动规贪心回溯法的01背包和TSP问题(8页珍藏版)》请在人人文库网上搜索。
1、华北科技学院计算机学院综合性实验实 验 报 告 课程名称 算法分析与设计 实验学期 2014 至 2015 学年 第 二 学期学生所在系部 计算机学院 年级 12级 专业班级 软件B122班 学生姓名 周辉 学号 4 任课教师 王德志 实验成绩 计算机学院制算法分析与设计课程综合性实验报告开课实验室: 计算机基础实验室 2015年 05 月 28 日实验题目回溯法应用编程一、 实验目的:(1)掌握回溯算法求解图问题和组合问题的方法和步骤。(2)理解回溯算法的基本思想。(3)提高学生的编程能力和分析问题、解决问题的能力。二、 实验设备及环境:微型计算机、Visual C+/JAVA三、 实验内容。
2、及要求:实验内容:(1)利用回溯算法,求解TSP问题。A.TSP问题伪代码:输入条件:城市个数n,邻接矩阵a。x为当前解,NoEdge=-1表示无穷大。x1,y1为城市的坐标,cc为当前解,bestc为最优解。BackTrack(t)回溯函数。(1)当t!=n时,BackTrack(1),表示从第一个城市出发。如果上一个节点和它此后的节点有边,并且费用不高于现有的最优费用(bestc=NoEdge表示第一次) ,交换xt与xi的值,cc=cc+axt-1xt,递归调用BackTrack(i+1)。(2)当t=n时,bestxi=xi,bestc=cc+axn-1xn+xn1.关键算法:void。
3、 BackTrack(int t) /t从2开始if(t=n) /到达第n个节点 if(axn-1xn!=NoEdge & (axn1!=NoEdge) & (cc+axn-1xn+axn1C,此时进入右子树,转第三步。(3)此时判断右子树的最大价值是否大于当前最优值bestp。若右子树的最大价值大于当前最优值。则递归backtrack(i+1)。当in的时候,则从backtrack(i+1)返回。(4)cw=cw-wi,cp=cp-vi,此时的cw n)/到达叶子节点bestp= cp ;return ;/返回上一节点if(cw + wi bestp)/符合条件搜索右子树k+ ;backtr。
4、ack(i+1);四、实验结果及分析1、实验运行过程及分析2、运行结果A、01背包问题当背包重量为200时当物品为4个的时候:当物品为10个的时候:TSP问题:当城市为4的时候:当城市为10的时候:01背包问题个算法的比较:TSP各算法的比较:3、心得体会通过这次的算法分析与设计的综合实验,我从中获益许多。我了解到不同算法时间性能上的差异。蛮力法是最简单但是时间复杂度又是最高的算法。贪心法只考虑现阶段利益最大的目标,所以求出来的解不一定是最优解而是近似解。回溯法则用到了递归的方法。对于n值如果比较小,蛮力法增长的趋势较小,但随着n的增大趋势越来越大。贪心法01背包问题则有三种贪心策略:1是按照。
5、重量最小的物品最先放。2按照价值最大的物品先放入背包。3按照单位价值重量比大的先放。综合考虑的话,第3种最接近最优解。在本次实验中,遇到了一些编程的问题,主要是在伪代码转化成代码的时候比较困难,在调试的过程中,遇到最多的问题是数组下标越界的问题。有的算法是从0开始计算,有的算法是从1开始计算,所以出现了混乱。其次是算法的逻辑性存在一定问题,得不到预期想要的结果。经本人不解努力最终完成4种算法的设计与比较。我深刻的体会到算法的重要性,在以后的学习或工作中,我会不断的自我完善,努力提高自我修养。教 师 评 价评定项目ABCD评定项目ABCD算法正确界面美观,布局合理程序结构合理操作熟练语法、语义正确解析完整实验结果正确文字流畅报告规范题解正确其他:评价教师签名:2015年 5 月 28 日。