动态规划算法就是分阶段进行决策,其基本思想如下:
根据时空的特点,将复杂的问题划分为互相联系的若干个阶段,在选定系统行进方向之后,逆向从终点向起点计算,逐次对每个阶段寻找某种决策,使整个过程达到最优,所以又称为逆序决策过程。
划分阶段:按照问题的时间或空间特征,把问题分为若干阶段。在此需要注意,这若干个阶段一定要是有序的或者是可排序的,否则问题就无法用动态规划求解。
选择阶段:将问题发展到各个阶段时所处于的各种客观情况用不同的状态表达出来。
为了节约重复求相同子问题的时间,引入一个数组,不管他们是否最最终有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。
无后效性:
将各阶段按照一定的次序排序好之后,对于某个给定的阶段状态,它以前各阶段的状态无法直接影响它未来的决策,而只能通过当前的这个状态。
换句话说,每个状态都是过去历史的一个完美总结。