动态规划-数据结构-最全介绍及代码

目录

动态规划简介:

具有什么特征的问题可以用动态规划求解:

和其他同类算法相比动态规划有什么样的特点:

动态规划常用来解决的问题类型:

参考链接:


动态规划简介:

动态规划算法的基本思想是:将带求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解中得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,并把答案保存起来,避免重复求解。该思想与记忆化搜索类似,即将计算步骤中的过程保存下来,避免重复运算


具有什么特征的问题可以用动态规划求解:

  • 该问题应该能够分成较小的重叠子问题。

  • 通过使用较小子问题的最佳解决方案可以实现最佳解决方案。

  • 动态算法使用Memoization。


和其他同类算法相比动态规划有什么样的特点:

  • 与解决局部优化的贪婪算法相反,动态算法被激励用于问题的整体优化。
  • 与分而治之的算法相比,其中解决方案被组合以实现整体解决方案,动态算法使用较小子问题的输出,然后尝试优化更大的子问题。动态算法使用Memoization来记住已经解决的子问题的输出。
  • 对于递归,只要写好了退出条件,之后不停的调用自身即可,最终到达退出条件时,逐个退出函数。动态规划则是从头开始,用循环达到目的。动态规划和递归的最大的区别,就是在碰到重叠子问题(Overlap Sub-problem)时,是否只需要计算一次。


动态规划常用来解决的问题类型:

  • 斐波纳契数系列
  • 背包问题
  • 河内塔
  • 由Floyd-Warshall完成的所有最短路径
  • Dijkstra的最短路径
  • 项目安排

参考链接:

原理及案例介绍:https://wenku.baidu.com/view/fc387897fbd6195f312b3169a45177232e60e408.html

原理介绍及C代码:https://www.cnblogs.com/kika/p/10851492.html

原理介绍及Python代码:https://blog.youkuaiyun.com/weixin_40787712/article/details/89702437

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值