1、科 技 学 院课程设计(综合实验)报告(2011-2012 年度第 1 学期)名 称: 算法设计与分析 题 目:动态规划法和回溯法的应用院 系: 信息系 班 级: 软件 09K2 学 号: 091909020227 学生姓名: 闫雪峰 指导教师: 刘 军 设计周数: 1 成 绩: 日期: 2011 年 11 月 4 日一、实验内容1要求能够利用动态规划法解决矩阵连乘问题或 0-1 背包问题;2要求能够利用回溯法解决 N 皇后问题。二、实验流程10-1 背包问题11 动态规划法解决问题的基本思想可利用动态规划法解决的问题要具有 2 个性质:最优子结构性质和子问题重叠性质。动态规划的基本思想是将待
2、求的问题分成若干个子问题,这些子问题往往具有重叠的性质,因此,动态规划法采用自底而上的方向不断解决子问题,同时用一个表记录已解决问题的相关重叠数据,以便调用,从而节省计算时间。动态规划法适于解最优问题,通常可按以下 4 个步骤设计:(1) 找出最优解的性质,并刻画其结构特征;(2) 递归地定义最优值;(3) 以自底而上的方式计算出最优值并保存;(4) 根据计算最优值时得到的信息,构造最优解。1.2 利用动态规划法解决 0-1 背包问题1.3.1 问题描述 给定 n 种物品和一个背包。物品 i 的重量是,其价值为,背包的容量是 c。如何选择物品,使得背包中的物品价值最大?在选择物品时,对于任何一
3、种物品 i,只有两种选择:选和不选。不可选部分,也不可一个物品选多次。对该问题的一个形式化描述为:给定 c0,0,0,1in,要求找出一个 0-1 向量,使得最大,同时满足。目标函数: niixv1ma约束函数: nxcwin,0因此,0-1 背包问题实际上是一个特殊的整数规划问题。1.3.2 分析最优解的结构0-1 背包问题具有最优子结构性质。设是所给 0-1 背包问题的一个最优解,则是的一个最优解。因若不然,设是上述子问题的一个最优解,而不是它的最优解。那么可以推出:是原问题的最优解,与假设矛盾。显然,0-1 背包问题也具有子问题重叠的性质。1.3.3 建立递归关系设 mij是容量为 j,
4、可选物品为 I,i+1,n 时 0-1 背包问题的最优值。由 0-1 背包问题的最优子结构性质可以建立递归关系如下: cjwvjnm wjim cvwjiminn iii0 011,ax1.3.4 计算最优值开 始处理第 n 件物品:for(j=1;j=1;i-)if(jnNY结 束打印输出这组解Y遍历完所有子树1.4.5 实际运行结果实例 1:5 个皇后的所有方案实例 2:6 个皇后的所有方案实例 3:7 个皇后的方案截图实例 4:8 个皇后的方案截图实例 5:9 个皇后的方案截图三、课程设计(综合实验)总结或结论通过本次课程实验,我加深了对动态规划法和回溯法的理解,并且熟悉了利用动态规划法和回溯法解决问题的基本流程。换言之,我掌握了两种解决问题的有效方法。理论指导实践,实践反过来使我们加深对理论的理解。因此,在今后的学习中,多多动手上机实践,必定会使我们受益匪浅。最后,感谢刘军老师的谆谆教导。四、参考文献1王晓东, 计算机算法设计与分析 (第 3 版) ,北京:电子工业出版社, 2007.5。附录