用贪心法实现背包问题与用动态规划法实现0-1背包问题的比较

kxjh2003 2007-06-02 09:02:46
用贪心法实现背包问题与用动态规划法实现0-1背包问题的比较


1 问题的提出与算法的选择(左对齐,宋体粗四号)
1.1 问题描述(左对齐,宋体粗小四号)
详细叙述本设计所要实现的题目中的问题(1个或2个)(宋体,小四)

1.2 算法思想
描述本设计所采用2种以上的算法思想:递归关系的描述、递归式的求解方法等(宋体,小四)

1.3算法的比较
概括比较本实验所用的2种以上的算法思想,算法的优略,算法的复杂度分析(宋体,小四)

2 算法的功能设计(选择其中一个算法来写)
2.1 数据结构定义
定义本设计所采用的数据结构的存储结构(宋体,小四)

2.2 函数说明
函数首部、函数的功能、函数返回值和各个参数类型及其作用、函数调用的关系(宋体,小四)

3 程序设计
主函数的代码(给出必要的注释)

4 调试与测试
4.1 调试分析
调试过程中对程序代码的考虑和改进,主要的调试过程。(宋体,小四)

4.2 用户手册
给软件使用者提供使用说明,要求清楚明确,使用者根据手册即可操作。(宋体,小四)

4.3 测试过程
测试输入数据和输出结果(可以用输入输出文件)。(宋体,小四)

5 小结
内容:本实验用XXX算法和XXX算法实现了XXX问题,通过实验我们得出XXX结论。(宋体,小四)

参考文献:
内容:列出本次课程设计过程中所参考的所有书目、文献(宋体,五号)
如:
[1] 王晓东.计算机算法设计与分析(第2版)[M]. 北京:电子工业出版社,2004.07
[2] 严蔚敏,吴伟民.数据结构(C语言版)[M]. 北京:清华大学出版社,1997.04
[3] 严薇敏,吴卫民.数据结构题集(C 语言版)[M].北京:清华大学出版社,1997.09

附录
源程序文件名清单


排版要求:
行间距:1.25倍(段落/多倍行距)
纸 型:A4
页边距:采用默认值




最近要写算法设计与分析的报告啊!老师出几道题,我选这道题
用贪心法实现背包问题与用动态规划法实现0-1背包问题的比较,
程序代码已经运行好了,可是没有理解啊!
不是我不认真学,实在听不懂,理解不了老师讲的哪些算法啊!
上面是老师给的是算法与分析的报告格式!
希望网上的高手能帮一下我,在这先谢谢了!
主要以下几点我感觉自己写不好,因为我没理解,所以不知道怎么写,希望大家能帮一下我啊!
尤其是算法的比较 调试分析
1.1 问题描述(左对齐,宋体粗小四号)
详细叙述本设计所要实现的题目中的问题(1个或2个)(宋体,小四)

1.2 算法思想
描述本设计所采用2种以上的算法思想:递归关系的描述、递归式的求解方法等(宋体,小四)

1.3算法的比较
概括比较本实验所用的2种以上的算法思想,算法的优略,算法的复杂度分析(宋体,小四)

4 调试与测试
4.1 调试分析
调试过程中对程序代码的考虑和改进,主要的调试过程。(宋体,小四)
...全文
3583 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
kxjh2003 2007-06-04
  • 打赏
  • 举报
回复
谢谢了!!!!!!!!!!
ahzhf 2007-06-03
  • 打赏
  • 举报
回复
给你提供一点信息:

0/1背包问题有好几种贪婪策略,每个贪婪策略都采用多步过程来完成背包的装入。在每一步过程中利用贪婪准则选择一个物品装入背包。一种贪婪准则为:从剩余的物品中,选出可以装入背包的价值最大的物品,利用这种规则,价值最大的物品首先被装入(假设有足够容量),然后是下一个价值最大的物品,如此继续下去。这种策略不能保证得到最优解。例如,考虑n=2, w=[100,10,10], p=[20,15,15], c=105。当利用价值贪婪准则时,获得的解为x= [ 1 , 0 , 0 ],这种方案的总价值为20。而最优解为[ 0 , 1 , 1 ],其总价值为30。

另一种方案是重量贪婪准则是:从剩下的物品中选择可装入背包的重量最小的物品。虽然这种规则对于前面的例子能产生最优解,但在一般情况下则不一定能得到最优解。考虑n=2 ,w=[10,20], p=[5,100], c=25。当利用重量贪婪策略时,获得的解为x =[1,0], 比最优解[ 0 , 1 ]要差。

还可以利用另一方案,价值密度pi /wi 贪婪算法,这种选择准则为:从剩余物品中选择可装入包的pi /wi 值最大的物品,这种策略也不能保证得到最优解。利用此策略试解n=3 ,w=[20,15,15], p=[40,25,25], c=30 时的最优解。

我们不必因所考察的几个贪婪算法都不能保证得到最优解而沮丧, 0/1背包问题是一个
NP-复杂问题。对于这类问题,也许根本就不可能找到具有多项式时间的算法。虽然按pi /wi 非递(增)减的次序装入物品不能保证得到最优解,但它是一个直觉上近似的解。我们希望它是一个好的启发式算法,且大多数时候能很好地接近最后算法。在600个随机产生的背包问题中,用这种启发式贪婪算法来解有239题为最优解。有583个例子与最优解相差10%,所有600个答案与最优解之差全在25%以内。该算法能在O(nlogn)时间内获得如此好的性能。


====================================================================================
动态规划:
对于重量为整数的背包问题我们可以很快写出动态规划方程:
f[i,j]=max{f[i-1,j],f[i-1,j-w[i]]+v[i]}
其中f[i,j]表示前i个物体用j个空间时能获得的最大价值。这可以求出最优解,但是这有一个很大的缺点,就是复杂度为O(n^2),对于容量很大的数据就会花费太多的时间,而且如果重量是实数而不是整数就根本无法进行。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧