From d8531110e48dee41e3216d8bb12e81021647d876 Mon Sep 17 00:00:00 2001 From: estomm Date: Thu, 1 Apr 2021 00:06:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=A7=84=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 算法/A类:基本算法/5 动态规划.md | 41 +++++++++++++--------------- 算法/A类:基本算法/5.9 01背包问题.md | 17 ++++++++++++ 2 files changed, 36 insertions(+), 22 deletions(-) diff --git a/算法/A类:基本算法/5 动态规划.md b/算法/A类:基本算法/5 动态规划.md index 04c05d14..e070cd5c 100644 --- a/算法/A类:基本算法/5 动态规划.md +++ b/算法/A类:基本算法/5 动态规划.md @@ -17,10 +17,9 @@ 2. **无后效性**:即某阶段状态一旦确定,就不受这个状态以后决策的影响。也就是说,某状态以后的过程不会影响以前的状态,只与当前状态有关。 3. **有重叠子问题**:即子问题之间是**不独立**的,一个子问题在下一阶段决策中可能被多次使用到。(该性质并不是动态规划适用的必要条件,但是如果没有这条性质,动态规划算法同其他算法相比就不具备优势) -### 要素 -* 最优子结构 -* 重叠子问题 -* 备忘录方法(矩阵表格) + + +## 2 构建动态规划模型 ### 基本概念 @@ -29,25 +28,13 @@ * 决策:明确状态从一个阶段到另一个阶段的变化。实现状态转移方程。 * 最优指标函数:用来判断决策过程中的优劣问题,淘汰不好的解,留下最优子结构。决策就是某阶段状态给定以后,从该状态演变到下一阶段某状态的选择。描述决策的变量,称为决策变量。 -### 可逆过程 -* 顺序解法:以G为始端,以A为终端的左行解法程序称为顺序解法 -* 逆序解法可以把段次颠倒过来求最优解的多阶段决策过程称为可逆过程。 -* 顺序解法和逆序解法只表示行进方向的不同或始端的颠倒。但用动态规划方法求最优解时,都是在行进方向规定后,均要逆着这个规定的行进方向,从最后一段向前逆推计算,逐段找出最优途径 +### 方法 -## 2 构建动态规划模型 - -### 动态规划问题的分析 -1. 找出**最优解的性质**,刻画其结构特征。 -2. 递推地定义最优值。需要给出**状态转移变量** -$$ -f(n)=f(n-1)+f(n-2) -$$ -3. 以自底向上的方式**计算出最优解**。 -4. 根据计算最优值时的到的信息,**构造最有解**。 +* 备忘录方法(矩阵表格) ### 动态规划算法的步骤 -1. **选择状态变量$x_k$**:描述过程的状态,又要满足无后效性。动态规划中的状态与一般所说的状态概念是不同的,它必须具有三个特性: +1. **确定状态变量$x_k$**:描述过程的状态,又要满足无后效性。动态规划中的状态与一般所说的状态概念是不同的,它必须具有三个特性: * 要能够用来描述受控过程的演变特征。 * 要满足无后效性。 所谓无后效性是指:如果某段状态给定,则在这段以后过程的发展不受前面各阶段状态的影响。 * 可知性。即是规定的各段状态变量的值,由直接或间接都是可以知道的。 @@ -55,13 +42,23 @@ $$ 3. **确定状态转移方程** :如果给定第k段状态变量$x_k$的值,则该段的决策变量uk一经确定,第k+1段状态变量$x_{k+1}$的值也就完全确定。 4. **确定指标函数$v_k$**:写出$v_k$和$n$关系,并要满足递推性。 -### 动态规划最关键的部分 + +### 可逆过程 +* 顺序解法:以G为始端,以A为终端的左行解法程序称为顺序解法 +* 逆序解法可以把段次颠倒过来求最优解的多阶段决策过程称为可逆过程。 + +* 顺序解法和逆序解法只表示行进方向的不同或始端的颠倒。但用动态规划方法求最优解时,都是在行进方向规定后,均要逆着这个规定的行进方向,从最后一段向前逆推计算,逐段找出最优途径 + + +## 3 动态规划分类 +### 规模增长 * 确定规模的增长方向。一般在动态规划问题中。规模可变的并不只有一个。比如在正则表达式与字符串的匹配问题中。字符串的规模可以变化,正则表达式的规模也可以变化。 - -## 1 常见问题 +* 根据规模增长的可以将动态规划分为三类:线性动态规划、矩阵动态规划、序列动态规划。 + +## 4 常见问题 ### 1矩阵连乘问题 ### 2凸多边形最优三角剖分 diff --git a/算法/A类:基本算法/5.9 01背包问题.md b/算法/A类:基本算法/5.9 01背包问题.md index e69de29b..f5269306 100644 --- a/算法/A类:基本算法/5.9 01背包问题.md +++ b/算法/A类:基本算法/5.9 01背包问题.md @@ -0,0 +1,17 @@ +## 01 背包问题 + +### 问题描述 +有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? + +### 问题分析 + +### 策略选择 + + +### 算法设计 + + +### 算法分析 + +### 算法实现 +