重新理解动态规划的切入点

时间:2021-08-12 12:13:04

重新理解动态规划的切入点

         动态规划(Dynamic Programing)这里我们不讨论能做什么,或者该如何优化,只讨论从分析的角度看动态规划是什么,如何切入建立基本模型。

         动态规划是对于一个系列的决策问题提供寻求最优解的方法。类似中学课本中学到的,“我是应该先烧水还是应该先看书所花的时间更少”这样的决策问题都可以通过动态规划解决。为什么我们不使用穷举考虑所有方案?DP优化了求解子问题过程中所造成的计算冗余,为我们提供了不同的角度去思考问题。

         令决策的过程分为N步,每一次决策的结果S(n),简单的思考后,我们发现只要获得S(n)与S(n -1)之间的初等函数关系就可以通过递归的方式计算获得S(n)。而通过决策结果S(n-1)和n是很难描述下一步决策的,这时候问题变的难于入手,因其对决策的描述是不充分的。那么我们要充分描述以前的状态,这里需要我们分析决策跟哪些状态的变量相关,通过对决策的抽象,建立对状态的描述,例如F(x,y,z..)(有些像模糊数学,并没有具体公式,而是小心的把因素放在一起对问题进行描述),因为DP求解的问题是决策问题,所以最基本的状态因素就是时刻(注1),这里DP用了非常巧妙的方法,将状态的维度扩展到了2维。我们可以看到对于任何时刻的决策描述都可以变成D(i,j),如果我们能够通过(i,j-1),(i-1,j)时刻运用数学方法进行描述D(i,j),那么说明我们从F(x,y,z..)到D(i,j)的抽象是可行的动态规划方案。

         为什么要使用2维呢,通过2维可以引入矩阵的概念,矩阵的很多特征性质,在演化算法中是重要的启发式算子。

         以此我们可以看到,假设对基本算子通过多维的描述,D(i,j,k),通过所有周边时刻能够对其描述,则其是动态规划多维的一种推广。

        

         注1:时刻的描述方法是多样的,根据具体问题来确定。一般情况下,假设问题空间为m*n,则D(m,n)描述了正个问题空间。

 

BTW:发发牢骚,我们的教育方式缺乏差异化,以及对个性化的包容度很低,导致教育的一元化。之所以说我们的教育方式和课本不入流,是其缺乏分析的过程,更多的时候是教授公式和方法,记忆的填鸭,而不是教授思考的方式和分析的过程,那些教人抄课本的人简直就是误人子弟。引用某老师的话来说,copy别人的东西再多也没有用,就算再怎么有天赋,不去创造学科,创立学问,永远只是在炒冷饭,这样的生活一点意思都没有。

 

参考文献:DynamicProgramming: a different perspective , SharonCurtis

         How to DesignDynamic Programming Algorithms Sans Recursion, Kirk Pruhs

       DynamicProgramming via Static Incrementalization , YanhongA. Liu, Scott D. Stoller

       Dynamic Programming in a Generalized Decision Mode , Ulrich Huckenbeck, December, 1993

         后边两篇没仔细读,感觉不错,留作记录

 


重新理解动态规划的切入点重新理解动态规划的切入点重新理解动态规划的切入点 重新理解动态规划的切入点重新理解动态规划的切入点重新理解动态规划的切入点 重新理解动态规划的切入点重新理解动态规划的切入点重新理解动态规划的切入点 重新理解动态规划的切入点重新理解动态规划的切入点重新理解动态规划的切入点