php算法学习之动态规划

黄舟
发布: 2017-02-06 09:52:30
原创
3218人浏览过

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


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

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

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

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

立即学习PHP免费学习笔记(深入)”;

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

863.jpg

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

864.jpg

豆包爱学
豆包爱学

豆包旗下AI学习应用

豆包爱学 674
查看详情 豆包爱学

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

865.jpg

 我们定义了一个数组来记录斐波那契每个位置的值,这就相当于我们定义了一个状态;每个位置的值等于它前面两个的加和,这就相当于一个状态转移方程。
这里通过数组记录状态就是一种以空间换时间的思想,其实和我们平时开发用到的缓存的设计很像。

总结动态规划求解可以分为4步:
1、确定要解决的子问题,即状态的定义。
2、列出状态转移方程。
3、根据给定条件,初始化已知状态值。
4、求解最终问题解。

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

866.jpg

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

相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号