- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
解 0/1 背包问题的动态规划算法
摘要:本文通过研究动态规划原理,提出了根据该原理解决0/1背包问题的方法与算法实现, 并对算法的正确性作了验证.观察程序运行结果,发现基于动态规划的算法能够得到正 确的决策方案且比穷举法有效.
关键字:动态规划;0/1背包;约束条件;序偶;决策序列;支配规则
1、引 言
科学研究与工程实践中,常常会遇到许多优化问题,而有这么一类问题,它们 的活动过程可以分为若干个阶段,但整个过程受到某一条件的限制。这若干个阶段 的不同决策的组合就构成一个完整的决策。0/1背包问题就是一个典型的在资源有 限的条件下,追求总的收益最大的资源有效分配的优化问题。
对于0/1背包问题,我们可以这样描述:设有一确定容量为C的包及两个向量C’ =(S1,S2,……,Sn)和P=(P1,P2,……,PN),再设X为一整数集合,即
X=1,2,3,……,N,X为SI、PI的下标集,T为X的子集,那么问题就是找出满足
约束条件∑S
i
〈=C,使∑PI获得最大的子集T。在实际运用中,S的元素可以是N个
经营项目各自所消耗的资源,C可以是所能提供的资源总量,P的元素可是人们从各 项项目中得到的利润。
0/1背包问题是工程问题的典型概括,怎么样高效求出最优决策,是人们关心 的问题。
2、求解问题的动态规划原理与算法
2.1动态规划原理的描述
求解问题的动态规划有向前处理法向后处理法两种,这里使用向前处理法求解
0/1背包问题。对于0/1背包问题,可以通过作出变量X
1
,X
2
,……,X
N
的一个决策
序列来得到它的解。而对于变量X的决策就是决定它是取0值还是取1值。假定决策
这些X的次序为X
n
,X
N-1
,……,X
0
。在对X
0
做出决策之后,问题处于下列两种状态
之一:包的剩余容量是M,没任何效益;剩余容量是M-w,效益值增长了P。显然,
之后对X
n-1
,
Xn-2
,……,X
1
的决策相对于决策X所产生的问题状态应该是最优的,
否则Xn,……,X1就不可能是最优决策序列。如果设Fj(X)是KNAP(1,j,X)最 优解的值,那么Fn(M)就可表示为
FN(M)=max(fn(M),fn-1(M-wn)+pn)} (1) 对于任意的fi(X),这里i0,则有
f
i
(X)=max{f
i-1
(X),f
i-1
(X-w
i
)+p
i
} (2)
为了能由前向后推而最后求解出F
N
(M),需从F
0
(X)开始。对于所有的X=0,有
F
0
(X)=0,当X0时,有F
0
(X)等于负无穷。根据(2),可求出0〈X〈W
1
和X〉
=W
1
情况下F
1
(X)的值。接着由(2)不断求出F
2
,F
3
,……,F
N
在X相应取值范围
内的值。
2.2 0/1背包问题算法的抽象描述
(1)初始化各个元素的重量W[i]、效益值P[i]、包的最大容量M; (2)初始化S0;
1
in-1 ni i i-1
i
n-1 n
i i i-1 i
i n
n
i-1 i i-1
i-1 i n
i n
n
(3)生成S
i
;
a.在中S
i-1
找满足约束条件的第R对序偶;
.生成S1 ;
.清除不满足条件的序偶;
.将S 中满足条件的序偶复制到S 中;
(4)对S
n+1
置初值;
(5)若不满足循环次数转(3),否则转(6); (6)用回溯法确定决策序列;终止程序。
2.3计算复杂性分析
假设S
i
的序偶是|S |。在i>0的情况下,每个S 由S1 和S1
归并而成,
并且|S
1
i
|=|S
i-1
|,因此|S
i
|=2|S
i-1
|。在最坏情况下没有序偶被清除,
所以 对|S |求和(i=0,1,2,...n-1)的结果是2 -1,也就是说DKNAP的 空间复杂度为O(2 )。
由S 生成S 需要|S ||的时间,所以在计算S0,S1,S2,……,Sn-1时所消 耗的总时间为(∑|S |),0〈=i〈=n-1。由于|S |〈=2 ,所以计算 这些S 总的时间为O(2 )。
该算法的时间复杂性为O(2 ),似乎表明当N很大时它的有效性不会让人 满意,但由于支配规则的引入,很好的清除了不满足约束的序偶,因而该算法在很 多情况下都能在可接受的时间内求出决策序列。
2.4基于动态规划的算法源程序
由于算法源程序有一定的篇幅,将其附后。
3、性能测试
3.1测试问题
为了验证算法的正确性与有效性,用两个数组P[N]和W[N]分别存储 始记录C’和 P,记录为用穷举法已求出最优决策的实例。现分别取N=3,4 ,6,10 进行实验。
3.2 试验结果与分
您可能关注的文档
最近下载
- 《功能医学》PPT课件.pptx VIP
- 水泥土搅拌桩监理实施细则.pdf VIP
- 全生命周期成本管理方法的研究与应用.docx VIP
- 2024人教版英语七年级上册《Unit 3 My school》大单元整体教学设计说课稿[2022课标].pdf
- 2024雅科贝思ASD驱动器用户手册-0903.pdf VIP
- 医院价格管理自查报告.docx VIP
- 《工程光学》14-6偏振的矩阵表示.ppt
- 手绘效果图表现技法(第2版)全套教学课件.pptx
- 《第12课 社会主义从空想到科学》课件_高中历史_第四分册_华东师大版.pptx VIP
- QCR9602-2015 高速铁路路基工程施工技术规程.docx VIP
文档评论(0)