动态规划算法

Posted ym99

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划算法相关的知识,希望对你有一定的参考价值。

1、动态规划算法:

1)求解过程使用多阶段决策过程,每一步处理一个子问题,可用于求解组合优化问题;

2)适用条件:问题需要满足优化原则或最优子结构性质,既:一个最优决策序列的任何子序列本身一定是相对于子序列的初试和结束状态是最优决策序列。

 

2.动态规划设计要素:

1)问题建模:优化的目标函数是什么,约束条件是什么?

2)如何划分子问题(边界)?

3)问题的优化函数值与子问题的优化函数值存在的依赖关系?

4)是否满足优化原则?

5)最小子问题该如何界定?其优化函数值,即初值是什么?

 

3、动态规划的递归实现:

1)与蛮力法相比,动态规划算法利用了子问题优化函数间的依赖关系,时间复杂度有所降低;

2)动态规划算法的递归实现效率不高,原因在于同一个子问题在递归中多次重复的出现,每一次出现都得重复计算;

3)采用空间换时间的策略,记录每一个子问题首次计算结果,后面再用时就直接取值,每一个子问题只计算一次。(相当于空间换时间)

 

4、动态规划的迭代的实现:

1) 每一个问题只计算一次;

2)迭代的顺序

 -从最小子问题计算;

 -考虑计算顺序,以保证后面用到值,在前面以及计算出来存储;

-存储结构保存计算结果;

3)解的追踪:

-设计标记函数标记每步的决策;

-考虑根据标记函数追踪的算法;(相当于每一步是什么,可以回溯)

 

k-

 

以上是关于动态规划算法的主要内容,如果未能解决你的问题,请参考以下文章

算法动态规划 ② ( 动态规划四要素 | 动态规划状态 State | 动态规划初始化 Initialize | 动态规划方程 Function | 动态规划答案 Answer )

算法动态规划 ① ( 动态规划简介 | 自底向上的动态规划示例 | 自顶向下的动态规划示例 )

算法动态规划 ① ( 动态规划简介 | 自底向上的动态规划示例 | 自顶向下的动态规划示例 )

Python之动态规划算法

算法题套路总结(三)——动态规划

动态规划分析总结——怎样设计和实现动态规划算法