动态规划算法

定义

从字面意义上去看,动态规划觉得比较难,对于动态规划来说,动态规划理解了思想,掌握基本的模型,然后再加上写代码的套路,动态规划就游刃有余。

本质

求解决策过程最优化的数学方法

适用条件

1、最优化原理(最优子结构性质)
一个最优化策略具有这样的性质,不抡过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须是最优策略。简而言之,一个最优的子策略也是最优的,一个问题满足最优化原理又称其具有最优子结构性质。
2、无后效性
将各阶段按照一定的次序排列好之后,对于某个给定的阶段状态,它之前各阶段的状态无法直接影响它未来的决策,而只能通过当前这个状态。换句话说,每个状态都是过去历史的一个完整总结。 这就是午后向性,又称为无后效性。
3、子问题的重叠性
动态规划算法的关键在于解决冗余,这是动态规划算法的根本目的。动态规划实质上是一种空间换时间的技术,它在实现的过程中,不得不存储产生过程中的各种状态,所以它的空间复杂度要大于其他的算法。选择动态规划算法是因为动态规划算法在空间上可以承受,而搜索算法在时间上却无法承受,所以我们舍空间而取时间。

思想和性质

首先,动态规划最重要的是掌握他的思想,动态规划的核心思想是把原问题分解成子问题进行求解,也就是所谓的分治的思想。
什么问题适合动态规划呢?我们通过一个现实的例子

组织架构图
首先是重叠子问题,不同的问题,可能都要求1个相同问题的解。假如A经理2想知道他下

你可能感兴趣的:(java)