- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法分析与设计2009第e讲
上次内容:
(1)图着色不能多项式时间近似到小于,TSP问题不能多项式时间近似到任意常数。
(2),时间复杂度O(mK+nlogn),K越大求解优化程度越高,1+(,T = O()。M是常数时可以认为是多项式时间近似方案。,时间复杂度:O(nK)。
什么是多项式时间近似方案:
定义7.2:若问题(的近似算法A(()满足对任意实例I任意(0
(1)RA(()[I]1+(;(2)A(()的时间复杂度是I输入长度的多项式函数。
则A(()称为求解问题(的多项式时间近似方案。
解释:
(1)1+(很容易说明,但后面的多项式需要解释,时间复杂度一定与(有关。近似性能比1+(,时间复杂度为:O(),O(n),O(n2),PTAS。特殊情况:
O()等等,各种情况。一定是(越小,时间复杂度越大。最后一种情况又称为完全多项式时间近似方案。FPTAS ),P((,()是多项式函数。
(2)为什么叫多项式近似方案,而不叫多项式近似算法。因为(没有确定大小,只有程序运行时才能确定。下面讲完全多形式时间近似方案。
背包问题:算法描述,先考虑动态规划算法求背包问题最优解
算法要求x1,x2,…,xn的赋值,赋值为1的为装入背包的,赋值为0的为没有装入背包的。最后使装入背包的元素价值最大,重量不超过M。
先考虑前i个元素的装法,要考虑(x1,x2,…,xi)赋值的组合:每种组合对应一个价值和重量数对:Pil, Wil,Pil=,Wil=S(i)={Pi1,Wi1, …, Pim, Wim}表示所有这样的数对集合,按说共有如此数对2i个。但是可以去掉一些,实际上有些数对可以去掉。并不是所有数对均有前途成为最优解,有一些是没有前途的通过比较可以看出来。
两种情况:看些数对可以去掉,不考虑。
(1)若有数对Pil, Wil,WilM,则该数对没有必要存在,Pil, Wil(S(i)
(2)若有两个数对Pil, Wil,Pik, Wik满足:Pil(Pik,Wil(Wik
一种装法重量大价值小,另一种装法重量小价值大,后一种更好,更有发展潜力,再往包里放时不再放前i个元素中的元素了。没有潜力发展的数对没有必要保存。看看数对有没有前途,没有前途就淘汰了。在所有有前途的数对中培养出最优解来。
前面Pil(Pik, Wil(Wik”称Pik, Wik支配Pil,Wil,若Pik,Wik支配Pil,Wil则,将被支配的数对从S(i)中去掉。
下面看若S(i)构造出来以后,怎样构造S(i+1)
(1)若xi+1=0,则S(i)(S(i+1)//前i个元素可以,前i+1个元素也可以。
(2)若xi+1=1,则={Pi+1+Pt,Wi+1+Wt|Pt, Wt(S(i),Wi+1+Wt(M}
S(i+1)=S(i)(\{的数对}, 1(in
怎样求出解//从S(n)往前求。
假设Pnk,Wnk为最后一个数对,若Pnk,Wnk(S(n-1),则xn=1,否则xn=0。xn=1时考虑数对Pnk-Pn,Wnk-Wn(S(n-2),以此反向追踪得到(xnxn-1, …, x2, x1),得到背包问题最优解。
例子:
P=(P1,P2,P3,P4,P5)=(W1,W2,W3,W4,W5)=W=(1,2,10,100,1000)
M=1112,
因为每个元素价值与重量相等,所以就不用考虑数对了,只考虑一个数。
S(0)={0}
S(1)={0,1}
={2,3}
S(2)={0,1,2,3}
={10,11,12,13}
S(3)={0,1,2,3,10,11,12,13}
={100,101,102,103,110,111,112,113}
S(4)={0,1,2,3,10,11,12,13,100, 101,102,103,110,111,112,113}
={1000,1001,1002,1003,1010,1011,1012,1013,1100,1101,1102,1103,1110,1111,1112,1113(删除)}
S(5)=S(4)(={0,1,2,3,10,11,12,13,100, 101,102,103,110,111,112,113,1000,1001,1002,1003,1010,1011,1012,1013,1100,1101,1102,1103,1110,1111,1112}
求出该实例的解数对为:1112,1112,反向追踪得到最优解
(x1,x2,x3,x4,x5)=(0,1,1,1,1)。
算法复杂度分析,算法很坏,但是可以化腐朽为神奇。
(1)O()=O(2n)
(2)S(i)中数对Pil,Wil的价值量取某个整数值的数对只有一个,所以S(i)中最多有个数对。所以算法时间复杂度为:O(n)。//仅考虑数对个数。
(3)S(i)中重量参数等于一个数值
文档评论(0)