- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
提高篇——动态规划专题
动态规划?递归递推一种精妙的算法思想。特点:没有固定的写法具体问题具体分析需要:多练习、多思考、多总结
什么是动态规划最优化问题1复杂问题2分解子问题3记录每个解4DynamicProgramming动态规划是一种用来解决一类最优化问题的算法思想。将一个复杂的问题分解成若干个子问题,通过综合子问题的最优解来得到原问题的最优解。动态规划会将每个求解过的子问题的解记录下来,这样可以提高计算效率,但不能说这种做法就是动态规划的核心。
【理解】如何记录子问题的解,来避免下次遇到相同的子问题时的重复计算。intF(intn){if(n==0||n==1)return1;elsereturnF(n-1)+F(n-2);}缺点:重复计算。当n==5时,F(5)=F(4)+F(3),接下来计算F(4)=F(3)+F(2),这样F(3)就被计算了两次。如果n很大,时间复杂度会高达O(2n)。斐波那契数列:F0=1,F1=1,Fn=Fn-1+Fn-2(n=2)一般可以使用递归或者递推的写法来实现动态规划,其中递归写法在此处又称作记忆化搜索。12345动态规划的递归写法
避免重复计算开一个一维数组dp,用于保存已经计算过的结果,其中dp[n]记录F(n)的结果,并用dp[n]=-1表示F(n)当前还没有被计算过。intdp[maxn];intF(intn){if(n==0||n==1)return1;//递归边界if(dp[n]!=-1)returndp[n];//已经计算过,直接返回结果,不再重复计算else{dp[n]=F(n-1)+F(n-2);//计算F(n),并保存至dp[n]returndp[n];//返回F(n)的结果}}记忆化搜索时间复杂度O(2n)降到了O(n)
01斐波那契数列递归图O(2n)02斐波那契数列记忆化搜索O(n)时间复杂度对比图
重叠子问题(OverlappingSubproblems)01如果一个问题可以被分解为若干个子问题,且这些子问题会重复出现,那么就称这个问题拥有重叠子问题。02一个问题必须拥有重叠子问题,才能使用动态规划去解决。
动态规划的递推写法【数塔问题】将一些数字排成数塔的形状,其中第一层有一个数字,第二层有两个数字……第n层有n个数字。现在要从第一层走到第n层,每次只能走向下一层连接的两个数字中的一个,问:最后将路径上所有数字相加后得到的和最大是多少?5837124910516113694
动态规划的递推写法如果开一个二维数组f,其中f[i][j]存放第i层的第j个数字,那么就有f[1][1]=5,f[2][1]=8,f[2][2]=3,f[3][1]=12,……,f[5][4]=9,f[5][5]=4。如果尝试穷举所有路径,然后记录路径上的数字和的最大值,那么由于每层中的每个数字都会有两条分支路径,因此时间复杂度为O(2n),这在n很大的情况下是不可以接受的。那么,产生这么大复杂度的原因是什么?从5出发,按5?8?7的路线来到7,并枚举从7出发的到达最底层的所有路径。但是,之后当按5?3?7的路线再次来到7时,又会去枚举从7出发的到达最底层的所有路径,这就导致了从7出发的到达最底层的所有路径都被反复地访问。其实,可以把路径上能产生的最大和记录下来,这样就可以避免重复计算。所以令dp[i][j]表示从第i行第j个数字出发的到达最底层的所有路径中能得到的最大和,例如dp[3][2]就是7的最大和。那么dp[1][1]就是最终答案,现在想办法求出它。注意一个细节:如果要求出“从位置(1,1)到达最底层的最大和”dp[1][1],那么一定要先求出它的两个子问题“从位置(2,1)到达最底层的最大和dp[2][1]”和“从位置(2,2)到达最底层的最大和dp[2][2]”,即进行了一次决策:走数字5的左下还是右下。于是dp[1][1]就是dp[2][1]和dp[2][2]的较大值加上5。公式:dp[1][1]=max(dp[2][1],dp[2][2])+f[1][1]
动态规划的递推写法归纳:如果要求出dp[i][j],那么一定要求出它的两个子问题“从位置(i+1,j)到达最底层的最大和dp[i+1][j]”和“从位置(i+1,j+1)到达最底层的最大和dp[i+1][j+1]”,即进行了一次决策:走位置(i,j)的左下还是右下。公式:dp[i][j]=max(dp[i+1][j],dp[i+
您可能关注的文档
- 公路施工安全监理资料痕迹化管理PPT课件.pptx
- 园林树木的分类.pptx
- 《微生物制药》课件.pptx
- 分子与细胞复习.pptx
- 学习无捷径,成功当奋斗主题班会课件.pptx
- 手术中输血指标的评估.pptx
- 学校急救知识培训.pptx
- 仓储装备及操作.pptx
- 动词时态和语态(高一).pptx
- 作物生产与环境.pptx
- 2025至2030光缆行业市场占有率及有效策略与实施路径评估报告.docx
- 2025-2030非制冷红外成像行业市场现状供需分析及重点企业投资评估规划分析研究报告.docx
- 2025至2030中国一次性气道诊断设备行业市场占有率及有效策略与实施路径评估报告.docx
- 2025至2030中国医学成像中的人工智能行业市场占有率及有效策略与实施路径评估报告.docx
- 2025至2030工业园区建设行业市场发展分析及有效策略与实施路径评估报告.docx
- 2025至2030中国虚拟电厂行业市场占有率及有效策略与实施路径评估报告.docx
- 2025至2030中国医用解冻系统行业市场深度研究与战略咨询分析报告.docx
- 2025至2030中国压片工装行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030中国医药园区行业细分市场及应用领域与趋势展望研究报告.docx
- 开展2026年春节节后复工复产工作实施方案 (2份)_58.docx
最近下载
- 《供求关系解析》课件.ppt VIP
- TB 10420-2018铁路电力工程施工质量验收标准_(高清-无水印).pdf VIP
- 2023年资料员资格考试题库附参考答案(完整版).docx
- 标准图集-22ZTJ012 2H全效凝胶隔热保温墙体及隔声楼板构造.pdf VIP
- 母婴保健助产技术考试试卷.doc VIP
- 水头损失计算.xls VIP
- 公共建筑设计原理 配套课件.pptx
- 医务工作者医德医风培训专题课件——恪守医者初心 筑牢医德防线.pptx VIP
- (正式版)D-L∕T 5783-2019 水电水利地下工程地质超前预报技术规程.docx VIP
- 污水处理厂安全生产培训资料课件.pptx VIP
原创力文档


文档评论(0)