- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5讲贪心算法对于0-1背包问题
背包问题数学模型: 背包问题只有一种限制,即背包所能承受的重量(即重量不能超过M kg),但是实际上背包除受重量的限制外,还有体积的限制,这就是不但要求旅行者的背包的重量c不能超过M kg,还要求背包的体积v不能超过V m3,等多种类似的约束,我们把这样的问题称为“多维背包问题”。 第5讲 贪心算法 算法分析: 算法knapsack的主要计算时间在于将各种物品依其单位重量的价值从大到小排序。因此,算法的计算时间上界为O(nlogn)。 当然,为了证明算法的正确性,还必须证明背包问题具有贪心选择性质。 学有余力的同学试证明上述性质。 扩 展 多维背包问题 m 个约束,其中每一个约束条件被称为一个背包约束, 因此多维背包问题也被称为m-维背包问题. 多维背包问题(MKP)是个著名的NP-难问题。 多维背包问题 数学模型 第5讲 贪心算法 第5讲 贪心算法 小 结: 利用贪心策略解题,需要解决两个问题: 首先,确定问题是否能用贪心策略求解;一般来说,适用于贪心策略求解的问题具有以下特点: ①?可通过局部的贪心选择来达到问题的全局最优解.运用贪心策略解题,一般来说需要一步步的进行多次的贪心选择.在经过一次贪心选择之后,原问题将变成一个相似的,但规模更小的问题,而后的每一步都是当前看似最佳的选择,且每一个选择都仅做一次. ②原问题的最优解包含子问题的最优解,即问题具有最优子结构的性质.在背包问题中,第一次选择单位质量最大的货物,它是第一个子问题的最优解,第二次选择剩下的货物中单位重量价值最大的货物,同样是第二个子问题的最优解,依次类推。 其次,如何选择一个贪心策略标准?正确的贪心策略可以得到问题的最优解,在确定采用贪心算法解决问题时,不能随意的判断贪心策略标准是否正确,尤其不要被表面上看似正确的贪心策略标准所迷惑.在得出贪心策略标准之后应给予严格的数学证明(通常比较困难)。 第5讲 贪心算法 课堂讨论提纲: 结合典型的问题实例,讨论迭代算法、蛮力算法、分治算法、贪婪算法解决问题的基本思想框架。 递归技术(方法)与上述算法之间的关系和区别,为什么没有单独的“递归算法策略”? 分析一个算法的时间复杂度的关键思想和步骤。 用“计算思维”解决问题的基本步骤。 第5讲 贪心算法 本节作业: 预习:p166- p185 ,动态规划 第5讲 贪心算法 That’s all for today See you next time Good bye! 第5讲 贪心算法 可绝对贪婪问题 例12.数列级差问题。 在黑板上写了n个正整数排成的一个数列,进行如下操作:每一次擦去其中的两个数a和b,然后在数列中加入一个数a×b+1,如此下去直至黑板上剩下一个数为止,在所有按这种操作方式最后得到的数中,最大的记为max,最小的记为为min,则该数列的极差定义为M=max-min。 第5讲 贪心算法 问题理解:用9以内实例理解(经典)当n=3时,我们来讨论3,5,7为例 3 5 7 16 7 113 去掉16,7 添加 113 去掉3,5 添加 16 去掉3,5 添加 16 去掉3,5 添加 16 3 5 7 22 5 111 去掉22,5 添加 111 去掉3,7 添加 22 3 5 7 36 3 109 去掉36,3 添加 109 去掉5,7 添加 36 从上面不难发现:先运算小数据得到的是最大值 先运算大数据得到的是最小值 第5讲 贪心算法 问题分析:下面用3个数为例来说明贪心策略的合理性,不防设:a<b< c,表示为: b=a+k1,c=a+k1+k2 则计算结果为: (a×b+1)×c+1 =a3+(2k1+k2) a2+(k12+k1k2)a+k1+k2+1 (a×b+1)×c+1 =a3+(2k1+k2)a2+(k12+k1k2)a+k1+1 (a×b+1)×c+1 =a3+(2k1+k2)a2+(k12+k1k2)a+1 当n大于3时,我们可经过n-3次变换后得到3个数。显然此问题适合贪婪策略。求最大数的时候操作较小数;求最小数的时候操作较大数。 第5讲 贪心算法 算法设计思想: 由上述我们可以得到启发:从现有的数据中,选取最大和最小的两个数,计算后的结果继续参加运算,直到最后剩余一个为止。 求max和min的过程必须独立,否则将不能找到最大和 最小数。 第5讲 贪心算法 step1 输入数据 step2 寻找最大数 max: 通过排序法找到当前数列中较小的两个数s1,s2; 删除s1,s2; 把s1×s2
您可能关注的文档
最近下载
- T∕CIECCPA 046-2023 废SCR 脱硝催化剂循环利用技术规范.pdf
- 《烹饪工艺学》教学课件.ppt VIP
- 群落生态学基础生态学.pptx VIP
- 呼吸系统常见疾病及其药物治疗.pptx VIP
- 高三试卷:四川省成都市第七中学2024-2025学年高三上学期11月期中考试化学.docx VIP
- 砖瓦施工职业发展研究报告.pptx VIP
- 南京绿地广场紫峰大厦项目研究报告.ppt VIP
- G10-40SQF钢筋混凝土化粪池明细工程量.xlsx VIP
- 《GB/T 40595-2021并网电源一次调频技术规定及试验导则》.pdf
- 2023年CCAA注册审核员《产品认证基础》真题及答案.docx VIP
文档评论(0)