动态规划初步

动态规划的核心是状态状态转移方程

 

计算状态转移方程的方法:

   1、递归计算。

   用直接递归的方法计算状态转移方程,效率往往十分低下。其原因是相同的子问题被重复计算了多次。

   2、递推计算。

   递推的关键是边界和计算顺序。

   3、记忆化搜索。

   不必事先确定各状态的计算顺序,但需要记录每个状态“是否已经计算过”。

 

动态规划基础:DAG上的动态规划

   1、矩阵嵌套。(看清题意,是<,不是<=)

   2、硬币问题。

 

多阶段决策问题

    DAG看成多阶段决策问题就是,每走一步对应一个阶段,这一步可以选择那几条路径对应几个决策。

    多阶段决策的最优化问题往往可以用动态规划解决,状态及状态转移类似于解答树,阶段就是解答树中的层数,几个决策对应几个分支。

    1、多段图的最短路。

    2、0-1背包问题。

 

更多经典模型

    1、线性结构上的动态规划。

       1>最长上升子序列问题。

       2>最长公共子序列问题。

    2、树上的动态规划。

       1>树的最大独立集。

       2>树的重心。

       3>树的最长路径。

    3、复杂状态的动态规划。

       1>最优配对问题。

       2>货郎担问题。

       3>图的色数。

      

 

 

  

 

 

  

 

 

  

 

posted @ 2017-10-26 21:59  哲贤  阅读(177)  评论(0编辑  收藏  举报