实验六 回溯算法
《实验六 回溯算法》由会员分享,可在线阅读,更多相关《实验六 回溯算法(5页珍藏版)》请在装配图网上搜索。
1、实验六 回溯算法(2 学时)一、实验目的与要求1、掌握装载问题的回溯算法;2、初步掌握回溯算法;二、实验题有一批共n个集装箱要装上2艘载重量分别为cl和c2的轮船,其中集装箱i的重量为 wi,且装载问题要求确定是否有一个合理的装载方案可将这个集装箱装上这2艘轮船。如果 有,找出一种装载方案三、实验提示void backtrack (int i)搜索第i层结点if (i n) /到达叶结点更新最优解 bestx,bestw;return;r -= wi;if (cw + wi bestw) xi = 0; / 搜索右子树 backtrack(i + l);r += wi;四、程序代码解题思路:(
2、1) 首先将第一艘轮船尽可能装满。(2) 然后将剩余的集装箱装上第二艘轮船。 将第一艘轮船尽可能装满等价于选取全体集装箱的一个子集,使该子集中集装箱重量之和最接近 cl。class teststatic int n;static int weight;static static static static staticint limitWeight; int currentweight; int bestWeight; int remainWeight; int x;最小最优载重星当前载重星当前最优载重星剩余载重星static int bestz;public static int maxLo
3、ading(int weightArray, int clWeight, out int _x)n = weightArray.Length - 1: weight = weightArray; limitWeight = clWeight; currentweight = 0: bestWeight = 0;x = new intn + 1;= new intn + 1;bestx = _x:foreach (int elem in weight) remainWeight 十=elm;backtrack(0): wturn bestWeight;private static void ba
4、cktraLck(iirt i)if (i n)i (currentWeight bestWeight)x. Copy To (bes tz, 0):bestWeight = currentWeight;ret urn;remainWeight -= weighti;if (currentWeight + weighti best Weight) xi = 0;back track (i + 1);remainWeight 4= weight i;class Programstatic void Main(string args)int w= new int 10, 25, 35, 45, 5
5、5, 65, 75, 95, 105, 150 ;int cl = 600 :AZ假设cl的重里药6DDint c2 = 300; 假设c2的重 1.5600int x;int bestel = test.maxLoading(w, cl, out x);int weight = 0;foreach (int elem in w)weight += elem;if (c2 weight - bestcl)Console.WriteLine(无解。;|return;Console. WriteLine (cl可装载0 , bestcl);Console. WriteLine (cl包含集装箱:”
6、);for (int i = 0; i x Length; i+) if (xi = 1)Console. Write 0 ”,i + 1);Console VfriteLine ();Console VfriteLine ();Console. WriteLine (c2可装载0, weight - bestcl);Console. WriteLine (c2包含集装箱:”);for (int i = 0; i x Length; i+)if (xi = 0)Console. Write 0 ”,i + 1);Console VfriteLine ();Console Read();五、实验结果六、实验总结装载问题属于多选择问题,符合回溯法的特点。通过本次集装箱问题实验,我学会了如 何使用回溯算法解决实际问题,并初步掌握装载问题的回溯算法,了解了回溯法的基本思想 和解题思路。实验后,我会继续学习,理解回溯算法思想,做到可以独立利用回溯法解决问 题。
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。