迭代自适应动态规划理论及应用(魏庆来,宋睿卓,孙秋野)思维导图
- 格式:xmin
- 大小:4.88 KB
- 文档页数:1
第三章:动态规划3.1 动态规划的基本概念一、动态决策问题:决策过程具有阶段性和时序性(与时间有关)的决策问题。
即决策过程可划分为明显的阶段。
二、什么叫动态规划(D.P.–Dynamic Program):多阶段决策问题最优化的一种方法。
广泛应用于工业技术、生产管理、企业管理、经济、军事等领域。
三、动态规划(D.P.)的起源:1951年,(美)数学家R.Bellman等提出最优化原理,从而建立动态规划,名著《动态规划》于1957年出版。
四、动态决策问题分类:1、按数据给出的形式分为:•离散型动态决策问题。
•连续型动态决策问题。
2、按决策过程演变的性质分为:•确定型动态决策问题。
•随机型动态决策问题。
五1、阶段(stage)n :作出决策的若干轮次。
n = 1、2、3、4、5。
2、状态(state)S n :每一阶段的出发位置。
构成状态集,记为S nS 1={A},S 2={B 1,B 2,B 3},S 3={C 1,C 2,C 3},S 4={D 1,D 2,D 3},S 5={E 1,E 2}。
阶段的起点。
3、决策(decision)X n :从一个阶段某状态演变到下一个阶段某状态的选择。
构成决策集,记为D n (S n )。
阶段的终点。
D 1(S 1)={X 1(A)}={B 1,B 2,B 3}= S 2,D 2(S 2)={X 2(B 1),X 2(B 2),X 2(B 3)}={C 1,C 2,C 3}=S 3,D 3(S 3)={X 3(C 1),X 3(C 2),X 3(C 3)}={D 1,D 2,D 3}=S 4,D 4(S 4)={X 4(D 1),X 4(D 2),X 4(D 3)}={E 1,E 2}=S 5D 5(S 5)={X 5(E 1),X 5(E 2)}={F;F}={F}。
4、策略(policy):全过程中各个阶段的决策Xn 组成的有序总体{Xn }。
如 A àB2àC1àD1àE2àF5、子策略(sub-policy):剩下的n个阶段构成n子过程,相应的决策系列叫n子策略。
动态规划的基本思想动态规划是一种常见的解决问题的算法思想,它通过将复杂的问题分解成一个个子问题,逐步求解并记录下每个子问题的解,最终得到原问题的解。
这种思想在很多领域都有广泛的应用,例如计算机科学、经济学、物理学等。
一、动态规划的定义与特点动态规划是一种分治法的改进方法,它主要用于解决具有重叠子问题和最优子结构性质的问题。
它的基本思想可以概括为“记住中间结果,以便在需要的时候直接使用”。
动态规划算法的特点包括:1. 问题可以分解为若干个重叠的子问题;2. 子问题的解可以通过已知的子问题解来求解,且子问题的解可以重复使用;3. 需要使用一个数据结构(通常是一个矩阵)来存储子问题的解,以便在需要时直接取出。
二、动态规划的基本步骤动态规划算法通常可以分为以下几个基本步骤:1. 确定问题的状态:将原问题转化为一个或多个子问题,并定义清楚每个子问题的状态是什么。
2. 定义问题的状态转移方程:找出子问题之间的关系,即如何通过已知的子问题解来解决当前问题。
3. 设置边界条件:确定最简单的子问题的解,即边界条件。
4. 计算子问题的解并记录:按顺序计算子问题的解,并将每个子问题的解记录下来,以便在需要时直接使用。
5. 由子问题的解得到原问题的解:根据子问题的解和状态转移方程,计算得到原问题的解。
三、动态规划的实例分析为了更好地理解动态规划的基本思想,我们以求解斐波那契数列为例进行分析。
问题描述:斐波那契数列是一个经典的数学问题,它由以下递推关系定义:F(n) = F(n-1) + F(n-2),其中F(0) = 0,F(1) = 1。
解决思路:根据递推关系,可以将问题分解为求解F(n-1)和F(n-2)两个子问题,并将子问题的解累加得到原问题的解。
根据以上思路,可以得到以下的动态规划算法实现:1. 确定问题的状态:将第n个斐波那契数定义为一个状态,记为F(n)。
2. 定义问题的状态转移方程:由递推关系F(n) = F(n-1) + F(n-2)可得,F(n)的值等于前两个斐波那契数之和。
动态规划法动态规划法(Dynamic Programming)是一种常用的算法思想,主要用于解决具有重叠子问题性质和最优子结构性质的问题。
动态规划法通过把问题分解为更小的子问题,并将子问题的解存储起来,以避免重复计算,从而提高了算法的效率。
动态规划法有两个核心概念:状态和状态转移方程。
在动态规划过程中,我们需要定义状态,即问题的子问题解,以及状态之间的关系,即状态转移方程。
动态规划法的一般步骤如下:1. 定义问题的子问题:将问题划分为更小的子问题,并明确子问题的解是什么。
2. 定义状态:将问题的子问题解抽象为状态,即用一个变量或者数组表示子问题的解。
3. 定义状态转移方程:根据子问题的关系,定义状态之间的转移方程,即如何根据已知的子问题解计算出更大的问题的解。
4. 缓存子问题解:为了避免重复计算,我们需要将已经计算过的子问题解存储起来,以便后续使用。
5. 递推计算:通过状态转移方程和缓存的子问题解,逐步计算出更大的问题的解,直到计算出最终的问题解。
动态规划法的关键在于找到正确的状态转移方程和合理的存储子问题解的方式。
有些问题的状态转移方程比较容易找到,比如斐波那契数列,每个数都是前两个数的和;而有些问题的状态转移方程可能比较复杂,需要通过观察问题的特点和具体分析来确定。
动态规划法的时间复杂度通常为O(n),其中n 表示问题规模。
由于利用了子问题的解,避免了重复计算,因此动态规划法相对于暴力求解法能够大大提高算法的效率。
但是,动态规划法的空间复杂度通常较高,需要存储大量的子问题解,因此在实际应用中需要权衡时间和空间的消耗。
总的来说,动态规划法是一种非常灵活且强大的算法思想,能够解决许多复杂的问题,特别适用于具有重叠子问题性质和最优子结构性质的问题。
通过正确定义状态和状态转移方程,并结合缓存子问题解和递推计算,我们可以高效地求解这类问题,提高算法的效率。
动态规划的基本思想动态规划是一种常用于解决具有重叠子问题和最优子结构特征的问题的算法思想。
它将问题分解成一系列子问题,并通过解决子问题构建出整个问题的最优解。
动态规划的基本思想是将原始问题转化成一个或多个相似的子问题,然后通过解决这些子问题获得原始问题的解。
这种思想在很多实际问题中都能够得到应用。
动态规划的基本流程一般包括以下几个步骤:1. 将原始问题分解为子问题:首先需要将原问题划分为多个子问题,并且确保这些子问题之间有重叠的部分。
2. 定义状态:确定每个子问题需要求解的状态,也即问题需要达成的目标。
3. 确定状态转移方程:根据子问题之间的关系,确定子问题之间的状态转移方程,即如何将子问题的解转移到原问题的解。
4. 解决首个子问题:解决最基本的子问题,获得初始状态下的解。
5. 填充状态表格:根据状态转移方程,依次求解其他子问题,并且填充状态表格。
6. 求解原问题:通过填充状态表格,在保证状态转移方程的基础上求解原问题的最优解。
动态规划的关键在于将原问题转化为子问题,通过递归或者迭代的方式求解子问题,最终获得原问题的最优解。
在这个过程中,重叠子问题的求解是动态规划的特点之一。
由于问题的子问题存在重叠,所以在求解的过程中我们可以保存已经求解过的子问题的解,避免重复计算,从而提高效率。
动态规划还要求问题具有最优子结构特征,即问题的最优解可以通过子问题的最优解构建出来。
通过利用已解决的子问题的最优解,可以有效地解决原问题。
动态规划算法在实际应用中有着广泛的应用。
它可以用于解决很多经典的问题,如最长公共子序列、0-1背包问题、最大子数组和等。
动态规划算法可以有效地解决这些问题,使得它们的时间复杂度得到了有效的降低。
总结来说,动态规划的基本思想是将原始问题转化为子问题,并通过解决子问题构建整个问题的最优解。
动态规划算法通过保存已经解决的子问题的解来避免重复计算,从而提高算法的效率。
动态规划算法在实际应用中具有广泛的应用,是解决具有重叠子问题和最优子结构特征的问题的常用算法思想。