博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态规划
阅读量:6852 次
发布时间:2019-06-26

本文共 627 字,大约阅读时间需要 2 分钟。

1 可以用动态规划解决的问题的两个条件

最优子结构和重叠的子问题。最优子结构很难定义,定义了也很难理解。就看原问题可不可以被分解从更小规模的子问题,并且解决了子问题后就可以从逻辑上解决原问题,这样的分解就是有效的,就是具有最优子结构的。至于重叠的子问题,这个是为了构造一个表来保存更小规模的子问题的解,然后加速更大规模的问题的解决的。

2 关于表

规模小的子问题先计算出来放在表中,规模大的子问题要用到的时候去查表,然后计算出来之后再填入表中,供规模更大的子问题使用。所以,这个表在循环的过程中逐渐填满的,填满的时候最终的结果也就计算出来了。

3 动态规划的子问题和原问题的的关系

子问题和原问题是同一类问题,不是说把某个子问题解决了,原问题就可以解决,而是要把所有的不同规模的子问题都解决了,才能解决原问题,并且更小规模的子问题的结果是更大规模的子问题所公用的,它们需要一个表来记录下来。当思考一个问题时,发现从当个的子问题和原问题很相关,但是通过解决单个的子问题又不能解决原问题时,就应该想到用动态规划的方法来解决,即解决所有的子问题,最终谋求原问题的解决。

解决动态规划问题分两步:

第一,明确这是一个动态规划问题,最明显的特征就是要解决原问题,必须要解决所有的子问题,并且可以用表来记录这些子问题。

第二,用表来记录子问题,最终谋求原问题的解决。

 

转载于:https://www.cnblogs.com/hustdc/p/8038570.html

你可能感兴趣的文章
Echarts 使用遇到的问题
查看>>
ubuntu16.04环境下安装配置openface人脸识别程序
查看>>
【HDOJ】4426 Palindromic Substring
查看>>
第十一周仿真作业
查看>>
VOC Segmentation GT图像颜色表生成分析
查看>>
第三次实验报告
查看>>
Visitor设计模式
查看>>
测试文档文档要求
查看>>
个人关于模块化的理解
查看>>
柴夥說算法(3)--交替迭代
查看>>
iscroll.js实现上拉刷新,下拉加载更多,应用技巧项目实战
查看>>
动画的timing-function比较
查看>>
java输出各种学生成绩
查看>>
uva 10020 Minimal coverage (greedy)
查看>>
LA 4973 Ardenia (3D Geometry + Simulation)
查看>>
微信开发学习(二)
查看>>
JS中的“!!”
查看>>
python之MySQL操作
查看>>
radioButton添加试题选项webview(二)
查看>>
Centos7 linux 安装 redis 遇到的几个问题
查看>>