动态编程

动态规划(Dynamic Programming)是一种通过使用穷举(Enumeration)算法来寻找最优解(Optimal Solutions)的方法。动态规划在许多现实工程中有用,如网络路由、生物信息学、计算机视觉等。它往往用于解决许多复杂的数学定义的问题。

动态规划的步骤可以分为两个:模型建模和算法设计。

模型建模是指对要求的问题进行建模,通过正常的数学运算表达需要求解的问题,并将其化简成以某种目标函数为最小或最大的线性整数规划问题,这其实就是动态规划最重要的一步。

算法设计指的是采用规划理论来求解上述目标函数,即利用贪心算法、回溯法、动态规划等不同的数学方法来求解模型。

具体而言,动态规划是一个基于模型动态变化而自动调整其决策行动及未来状态的优化算法。它属于试探性搜索(Trial-and-Error Search)的类别中,以“划分”和“求最优”两个步骤为核心,通过对问题的“递归分解”完成整个问题的求解。

动态规划的设计强调每一步的最优解,并将每一步的解作为另一步的出发点,从而慢慢得出结果。动态规划的建模将问题分解成最优的单元,利用单元间相互之间的关联性,合理分析其中的最优解,来获得整体问题的处理方案。

动态规划在实际问题中有很广泛的应用,动态规划中有很多种算法可以求解复杂的问题,它是以最小化代价函数为指标来搜索出最优解的,这些优点使得它在解决复杂的问题(如许多搜索问题、优化问题)方面有着很大的优势。

与“动态编程”相关热搜词:动态编程、动态规划、目标函数、算法设计、每一步

  • Komodo Edit是什么

    Komodo Edit是一个用于动态编程语言的免费开源文本编辑器。以补充ActiveState的商业Komodo IDE。从版本4.3开始,Komodo Edit构建在Open Komodo项目的顶部。
    2019年08月 0
  • julia 是什么

    Julia是一种高级通用动态编程语言,它最初是为了满足高性能数值分析和计算科学的需要而设计的,不需要分别编译速度快,也可用于客户端和服务器的Web用途、低级系统编程或用作规约语言。主要用于数值计算。
    2018年12月 00