动态规划程序设计是对解最优化问题的一种途径、一种方法,最终问题的最优解可以通过前面子问题的最优解推导出来。

对于动态规划这个算法,自己学习的还不是很透彻,简单的总结自己学习的感受是:

动态规划思想中融合了递归和分治的思想,但不同于分治的是,动态规划求解中会通过状态记录求解过程中每一个分支的最优解法,以此节省了许多分支的重复计算。

动态规划最重要同样也是最难的两步是找到描述子问题的状态以及状态间的推导关系。

比较可能使用动态规划的问题:求最大最小值、是否有可行方案以及可行方案个数。

先来一个最常见的题体验一下,求斐波那契数列(不知道的同学请自行百度一下)某个位置的值?

应用分治法求解代码

分治求解过程中,会有许多重复的运算,如下图3和2都被重复运算了两次,index值越大重复计算的次数就越多。

ok,下面我们看一下动态规划如何进行优化。

我们定义了一个数组来记录斐波那契每个位置的值,这就相当于我们定义了一个状态;每个位置的值等于它前面两个的加和,这就相当于一个状态转移方程。

这里通过数组记录状态就是一种以空间换时间的思想,其实和我们平时开发用到的缓存的设计很像。

总结动态规划求解可以分为4步:

1、确定要解决的子问题,即状态的定义。

2、列出状态转移方程。

3、根据给定条件,初始化已知状态值。

4、求解最终问题解。

下面再来解一道比较有意思的问题,爬楼梯:

以上就是php算法学习之动态规划的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php算法学习,php算法学习之动态规划相关推荐

  1. 动态规划算法php,php算法学习之动态规划

    动态规划程序设计是对解最优化问题的一种途径.一种方法,最终问题的最优解可以通过前面子问题的最优解推导出来.下面小编为大家整理了,希望能帮到大家! 对于动态规划这个算法,自己学习的还不是很透彻,简单的总 ...

  2. 学习进度2012-6-26(动态规划算法、Prim算法、Dijkstra算法)

    今天学习下三个算法:动态规划算法.Prim算法.Dijkstra算法,将自己理解的逻辑略作总结. 1.动态规划算法是选取两个字符串的最长子序列的解法作为切入点学习,在公司午休时间将代码写了下,初步测试 ...

  3. 动手学强化学习(三):动态规划算法 (Dynamic Programming)

    动手学强化学习(三):动态规划算法 (Dynamic Programming) 1. 简介 2. 悬崖漫步环境 3. 策略迭代算法 3.1 策略评估 3.2 策略提升 3.3 策略迭代算法 4.价值迭 ...

  4. 从电影《蝴蝶效应》中学习回溯算法的核心思想

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 关注我们丨文末赠书 深度优先搜索算法利用的是回溯算法思想.这个算法思 ...

  5. ACM如何入门,ACM竞赛需要学习哪些算法?

    #################成绩################## 大一:2017年4月份"玲珑杯"河南工业大学2017年ACM程序设计大赛暨河南高校邀请赛,获得银奖 20 ...

  6. 别头疼了,你要的算法和数据结构的学习路线来了!

    随着科学技术的发展,人工智能已经逐渐渗透到各个行业,这是一个相当有前景的专业领域. 其中,算法工程师这一职位更是非常火爆,在急缺大量人才的同时,也吸引了众多求职者,那么,初学者该如何学好算法呢? 算法 ...

  7. 强化学习——强化学习的算法分类

    1. 算法分类 现代强化学习算法分类 ---图片来自Open AI Spinning up 项目--- 由于强化学习是一个更新速度非常快的领域,所以准确地全面地分类是相当困难的,Spinning up ...

  8. 强化学习-Q-Learning算法

    参考:https://blog.csdn.net/qq_41959920/article/details/109222969 一.Q-Learning的更新Q值的公式 在基础阶段我们已经学习了基于模型 ...

  9. 【笔记总结】计算机系期末复习、专业课学习、算法与其他笔记

    2022.4.18 整理了一下自己写的乱七八糟的博客. 2022.6.12整理了一些大二下的期末复习. 2022.7.22更新Java学习笔记. 2022.8.30更新LeetCode笔记. 2022 ...

最新文章

  1. 【记录】台式机的组装
  2. 【AudioVideo】视频媒体会话回调(11)
  3. 水晶报表主子报表分页问题
  4. Linux下的buffer与cache
  5. 探索Julia(part11)--自定义函数
  6. [ASP,VB] - 利用ASP调用API COM接口实现开关机
  7. git 创建tag , 查看tag , 删除tag
  8. Nginx Image缩略图模块加强网站运行速度
  9. 动圈耳机振膜_动圈耳机和动铁耳机区别,以及选择
  10. 两种不同编码规则的查询
  11. dispatch作用 react_javascript – redux-react中的dispatch函数
  12. 西门子PLC_s7-200免费学习视频教程
  13. ubuntu永久修改mac地址
  14. 深度学习论文-DAnetExFuseDFN
  15. 如何隐藏电脑硬盘分区
  16. z-index使用以及失效的处理方法
  17. explorer被微信企业版劫持一例
  18. 猜数游戏(详细讲解)
  19. cadworx可以画设备流程图吗,CADWORX中心线法绘制管道
  20. 程序人生 - 为什么说车险千万不要提前买?真相原来在这里

热门文章

  1. html里table的遍历,js遍历table中的tr
  2. matlab都有什么接口,介绍MATLAB与C++的几种接口方式
  3. 常用正则表达 (转)
  4. js获取checkbox多选表单
  5. Junit单元测试学习笔记一
  6. [数分提高]2014-2015-2第7教学周第2次课 (2015-04-16)
  7. 一些C和C++的常见问题集锦 ----不停更新
  8. java中的hashcode方法作用以及内存泄漏问题
  9. “天昌”的挽歌——逝去的背影(一)
  10. 统计rgb与yuv文件中各分量的熵