收藏 分享(赏)

实验报告 回溯法01背包.doc

上传人:精品资料 文档编号:10297826 上传时间:2019-10-28 格式:DOC 页数:6 大小:69.50KB
下载 相关 举报
实验报告 回溯法01背包.doc_第1页
第1页 / 共6页
实验报告 回溯法01背包.doc_第2页
第2页 / 共6页
实验报告 回溯法01背包.doc_第3页
第3页 / 共6页
实验报告 回溯法01背包.doc_第4页
第4页 / 共6页
实验报告 回溯法01背包.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、1算法设计与分析实验报告六学号: 1004091130 姓名: 金玉琦 日期: 2011-11-17 得分: 一、实验内容:运用回溯法解决 0-1 背包问题二、所用算法的基本思想及复杂度分析:回溯法回溯法就是一种有组织的系统化搜索技术, 可以看作是蛮力法穷举搜索的改进。回溯法每次只构造可能解的一部分, 然后评估这个部分解, 如果这个部分解有可能导致一个完整解, 则对其进一步构造, 否则, 就不必继续构造这个部分解了。回溯法常常可以避免搜索所有的可能解。0-1背包问题1)基本思想给定 n 种物品和一个容量为 C 的背包, 物品 i 的重量是W i, 其价值为V i , 0/ 1 背包问题是如何选

2、择装入背包的物品(物品不可分割) , 使得装入背包中物品的总价值最大,设计可能解的表示方式, 构成解空间树。2)复杂度分析时间复杂度是O(2 n);三、源程序及注释:#include using namespace std; class Knap friend int Knapsack(int p,int w,int c,int n ); public: void print() for(int m=1;mn) if(bestpbestp)/搜索右子树 xi=0; Backtrack(i+1); class Object friend int Knapsack(int p,int w,int

3、c,int n); public: int operator=a.d); private: int ID; float d; ; int Knapsack(int p,int w,int c,int n) /为 Knap:Backtrack 初始化 int W=0; int P=0; int i=1; Object *Q=new Objectn; for(i=1;in; p=new intn+1; w=new intn+1; p0=0; w0=0; coutpi; coutwi; coutc; coutKnapsack(p,w,c,n)endl; 6四、运行输出结果:五、调试和运行程序过程中产生的问题、采取的措施及获得的相关经验教训:0-1背包问题和背包问题不同,0-1背包问题中的物品不可分割。编写程序的时候有困难,在网上找了方法,程序运行时会有计算错误的情况。通过回溯法的学习,我们要学会掌握回溯法的设计思想,掌握解空间树的构造方法, 以及在求解过程中如何存储求解路径。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报