算法设计策略----动态规划法
2018-03-10 00:00
183 查看
动态规划法:与贪心法类似,动态规划法也是一种求解最优化问题的算法设计策略。它也采取分布决策的方法。但与贪心法不同的是,动态规划法每一步决策依赖子问题的解。直观上,为了在某一步做出决策,需要先求若干子问题,这就使得动态规划法是自底向上的。
按照多部决策方法,一个问题的活动过程可以分成若干阶段,每个阶段可能包含一个或多个状态。多部决策求解方法就是从初始状态开始做出每个阶段的决策,形成一个决策序列,该决策序列也成为策略。对于每一个决策序列,可以用一个数值函数(目标函数)衡量该策略的优劣。问题求解的目标是获取最优决策序列(最优策略)。
重叠子问题:动态规划法的子问题往往是重叠的,如果采用与分治法类似的直接递归会非常费时。为了避免重复计算,动态规划法一般采用自底向上的方式进行计算,并保存已经求解的子问题的值。当这些子最优解值被重复引用时,无需重新计算。
递归定义最优解值;
自底向上方式计算最优解值;
根据计算得到的信息构造一个最优解。
关键路径问题
Floyd(弗洛伊德)算法
最长公共子序列问题
0/1背包问题
按照多部决策方法,一个问题的活动过程可以分成若干阶段,每个阶段可能包含一个或多个状态。多部决策求解方法就是从初始状态开始做出每个阶段的决策,形成一个决策序列,该决策序列也成为策略。对于每一个决策序列,可以用一个数值函数(目标函数)衡量该策略的优劣。问题求解的目标是获取最优决策序列(最优策略)。
动态规划法基本要素:
最优子结构特性:和贪心法相同。重叠子问题:动态规划法的子问题往往是重叠的,如果采用与分治法类似的直接递归会非常费时。为了避免重复计算,动态规划法一般采用自底向上的方式进行计算,并保存已经求解的子问题的值。当这些子最优解值被重复引用时,无需重新计算。
设计动态规划法步骤:
刻画最优解的结构特性;递归定义最优解值;
自底向上方式计算最优解值;
根据计算得到的信息构造一个最优解。
相关算法:
多段图问题关键路径问题
Floyd(弗洛伊德)算法
最长公共子序列问题
0/1背包问题
相关文章推荐
- 0x07算法设计与分析复习(二):算法设计策略-动态规划法1
- 0x07算法设计与分析复习(二):算法设计策略-动态规划法2
- 0x07算法设计与分析复习(二):算法设计策略-动态规划法3
- 0x07算法设计与分析复习(二):算法设计策略-动态规划法4
- 算法设计策略----贪心法
- 南邮算法分析与设计实验2 动态规划法
- 在算法设计中使用策略模式
- 0x08算法设计与分析复习(二):算法设计策略-回溯法2
- 算法设计策略----分治法
- 常见的缓存算法设计策略
- 设计模式(十)-策略模式(Strategy Pattern)——整体的替换算法
- 0x06算法设计与分析复习(二):算法设计策略-贪心法1
- 0x08算法设计与分析复习(二):算法设计策略-回溯法3
- 常见的缓存算法设计策略
- 0x06算法设计与分析复习(二):算法设计策略-贪心法2
- 0x09算法设计与分析复习(二):算法设计策略-分枝限界法1
- 0x06算法设计与分析复习(二):算法设计策略-贪心法3
- 设计模式:算法封装(模板方法,策略)
- 常用算法设计方法之动态规划法
- 0x06算法设计与分析复习(二):算法设计策略-贪心法4