Skip to content

Commit 6db8190

Browse files
committed
Update 01.Dynamic-Programming-Basic.md
1 parent 0f6e963 commit 6db8190

1 file changed

Lines changed: 10 additions & 12 deletions

File tree

Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434

3535
为了避免重复计算,我们可以使用动态规划中的「表格处理方法」来处理。
3636

37-
这里我们使用「自底向上的递推方法」求解出子问题 $f(n - 2)$ 和 $f(n - 1)$ 的解,然后把结果存储在表格中,供随后的计算查询使用,从而避免大量的重复计算。具体过程如下:
37+
这里我们使用「自底向上的递推方法」求解出子问题 $f(n - 2)$ 和 $f(n - 1)$ 的解,然后把结果存储在表格中,供随后的计算查询使用。具体过程如下:
3838

3939
1. 定义一个数组 $dp$,用于记录斐波那契数列中的值。
4040
2. 初始化 $dp[0] = 0,dp[1] = 1$。
@@ -69,9 +69,9 @@ class Solution:
6969

7070
首先,能够使用动态规划方法解决的问题必须满足以下三个特征:
7171

72-
1. 最优子结构性质
73-
2. 重叠子问题性质
74-
3. 无后效性
72+
1. **最优子结构性质**
73+
2. **重叠子问题性质**
74+
3. **无后效性**
7575

7676
### 2.1 最优子结构性质
7777

@@ -85,7 +85,7 @@ class Solution:
8585

8686
### 2.2 重叠子问题性质
8787

88-
> **重叠子问题性质**:指的是在求解子问题的过程中,有大量的子问题是重复的,一个子问题会在下一阶段的决策中可能会被多次用到。如果有大量重复的子问题,那么只需要对求解一次,然后用表格将结果存储下来,以后使用时可以直接查询,不需要再次求解。
88+
> **重叠子问题性质**:指的是在求解子问题的过程中,有大量的子问题是重复的,一个子问题在下一阶段的决策中可能会被多次用到。如果有大量重复的子问题,那么只需要对其求解一次,然后用表格将结果存储下来,以后使用时可以直接查询,不需要再次求解。
8989
9090
![](https://qcdn.itcharge.cn/images/20230307175804.png)
9191

@@ -95,16 +95,14 @@ class Solution:
9595

9696
> **无后效性**:指的是子问题的解(状态值)只与之前阶段有关,而与后面阶段无关。当前阶段的若干状态值一旦确定,就不再改变,不会再受到后续阶段决策的影响。
9797
98-
换句话说**一旦某一个子问题的求解结果确定以后,就不会再被修改**
98+
也就是说**一旦某一个子问题的求解结果确定以后,就不会再被修改**
9999

100-
举个例子,下图是一个有向无环带权图,我们在求解从 $A$ 点到第 $F$ 点的最短路径问题时,假设当前已知从 $A$ 点到 $D$ 点的最短路径($2 + 7 = 11$)。那么无论之后的路径如何选择,都不会影响之前从 $A$ 点到 $D$ 点的最短路径长度。这就是「无后效性」。
100+
举个例子,下图是一个有向无环带权图,我们在求解从 $A$ 点到 $F$ 点的最短路径问题时,假设当前已知从 $A$ 点到 $D$ 点的最短路径($2 + 7 = 11$)。那么无论之后的路径如何选择,都不会影响之前从 $A$ 点到 $D$ 点的最短路径长度。这就是「无后效性」。
101101

102-
如果一个问题具有「后效性」,则可能需要先将其转化或者逆向求解来消除后效性,然后才可以使用动态规划算法。
102+
而如果一个问题具有「后效性」,则可能需要先将其转化或者逆向求解来消除后效性,然后才可以使用动态规划算法。
103103

104104
![](https://qcdn.itcharge.cn/images/202303072158573.png)
105105

106-
107-
108106
## 3. 动态规划的基本思路
109107

110108
如下图所示,我们在使用动态规划方法解决某些最优化问题时,可以将解决问题的过程按照一定顺序(时间顺序、空间顺序或其他顺序)分解为若干个相互联系的「阶段」。然后按照顺序对每一个阶段做出「决策」,这个决策既决定了本阶段的效益,也决定了下一阶段的初始状态。依次做完每个阶段的决策之后,就得到了一个整个问题的决策序列。
@@ -141,9 +139,9 @@ class Solution:
141139

142140
#### 4.1.2 题目大意
143141

144-
**描述**:给定一个整数 `n`
142+
**描述**:给定一个整数 $n$
145143

146-
**要求**:计算第 `n` 个斐波那契数。
144+
**要求**:计算第 $n$ 个斐波那契数。
147145

148146
**说明**
149147

0 commit comments

Comments
 (0)