- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
贪心法 (Greedy Algorithm) 贪心算法的基本思想是从小的方案推广到大的解决方法。它分阶段工作,在每一个阶段选择最好的方案,而不考虑其后的结果如何。 贪心法主要用于求解最优问题,但它已经发展成为一种通用的算法设计技术:核心是: 可行性——每一步选择必须满足问题的约束; 局部最优——它是当前可选择的方案中最优的; 不可取消性——选择一旦做出,在算法的其后步骤中不能被取消。 贪心法不能确定得到的最后解是最优的,也不能用于求解最大或最小问题。在算法的效率上,贪心法快速,程序实现需要的内存开销也较小。但遗憾的是,它们往往是不正确的。然而一旦被证明是正确的,其执行效率和速度有很大的优势。 30 ? 背包问题(分数背包问题) 假设有一个体积为M的背包以及n种物品,价值是 pi的第i 种物品的体积是 wi 。假设每种物品都可以取其一部分装入背包, xi 是取第i 种物品装进背包的百分比, 那么装入背包的总价值是 pi xi 。 所谓一个最优装包方法,就是要找到一组 xi 使得在约束条件 下,背包中物品总价值 达到最大。 Q: 每步该做些什么? A: 把某种物品的一部分放进包里. Q: 以什么标准来确定“贪心”? ? 最大价值 ? 最小体积 ? 最大的价值密度pi / wi 例如 : n = 3, M = 20, (p1, p2, p3) = (25, 24, 15) (w1, w2, w3)= (18, 15, 10) 答案是...? ( 0, 1, 1/2 ) P = 31.5 * 分治法 (Divide and Conquer ) 基本思想就是,将一个较大规模的问题分解为若干个较小规模的子问题,找出子问题的解,然后把各个子问题的解合并成整个问题的解。 分治法的分(Divide)是指划分较大问题为若干个较小问题,递归求解子问题;分治法的治(Conquer)是指从小问题的解构建大问题的解。 L型三方块覆盖方阵问题 金块问题 求一个整数序列的第k个大数问题 分治法的实现很可能可以采用递归的形式 32 金块问题: (挑出最重和最轻的两个金块) n=8时,普通方法需要的比较次数:(n-1)+(n-2) = 13。 分治法的比较次数: 8 4 4 2 2 2 2 L H L H L H L H L H L H L H 比较次数 4 4 2 10 n=16时,普通方法需要的比较次数: (n-1)+(n-2) = 29。 分治法的比较次数:10+10+2 = 22 C(n) = 2 C(n/2) + 2 (当n2) = 3n/2 -2 (当n为2的幂) 33 S N个元素 S1 N1个元素 S2 N2个元素 元素 e 元素 e ? 基于问题分解 ?求解集合S的第K大整数问题的一种递归思路 e N0个 基准元素e 元素 = e 当kN0+N1时,转化成:求S2的第k - (N0+N1)个大问题 当k=N1时,转化成:求S1的第k 个大问题 当N1k=N0+N1时,S的第k个大整数就是e * 动态规划法 (Dynamic Programming) 动态规划被描述为:如果一个较大问题可以被分解为若干个子问题,且子问题具有重叠,可以将每个子问题的解存放到一个表中,这样就可以通过查表解决问题。 核心思想是以空间换时间! 第n个Fibonacci数的计算 0-1背包问题 钢条切割问题 35 第n个Fibonacci数的计算 F(N) = F(N – 1) + F(N – 2) int Fib( int N ) { if ( N = 1 ) return 1; else return Fib( N - 1 ) + Fib( N - 2 ); } F6 F2 F1 F0 F3 F1 F2 F1 F0 F2 F1 F0 F3 F1 F2 F1 F0 F3 F1 F2 F1 F0 F4 F4 F5 麻烦之处: 大量重复子问题的计算,计算量呈爆发式增长! 解决方法: 从小算到大,记录最近两个数据,就可以计算后一个数据。 36 钢条切割问题 长度: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |10 价格: 1 | 5 | 8 | 9 |10|17|17
您可能关注的文档
- 第5课爱琴文明与古希腊城邦制度.ppt
- 第5课八国联军侵华战争.ppt
- 第5章MicrosoftAccess2002.ppt
- 第5章变数、常数与资料型态[我的主控台程式].ppt
- 第5章程序的基本控制结构.ppt
- 第5章电子支付与网上银行.ppt
- 第5章工厂电力线路.ppt
- 第5章公司战略.ppt
- 第5章价值观与态度.ppt
- 第5章建设项目投资估算.ppt
- 2023年9月林芝地区直机关遴选公务员面试真题带题目详解.docx
- 2023年9月湖州市直机关遴选公务员面试真题带答案详解.docx
- 2024年11月四川省直遴选面试真题回忆版汇总.docx
- 2024年11月上饶市直机关遴选公务员面试真题附解析.docx
- 2024年2月辽源市税务系统遴选面试真题回忆版汇总.docx
- 2023年9月遵义市税务系统遴选面试真题回忆版.docx
- 2023年9月襄樊市直机关遴选公务员面试真题带详解.docx
- 2023年9月石嘴山市直机关遴选公务员面试真题带详解.docx
- 2024年11月喀什地区直遴选面试真题回忆版.docx
- 2024年11月内蒙古自治区直机关遴选公务员面试真题带详细解析.docx
文档评论(0)