mirror of
https://github.com/krahets/hello-algo.git
synced 2026-02-10 22:25:30 +08:00
Add subtitles to docs
This commit is contained in:
@@ -2,7 +2,13 @@
|
||||
|
||||
在上节中,我们学习了动态规划问题的暴力解法,从递归树中观察到海量的重叠子问题,以及了解到动态规划是如何通过记录解来优化时间复杂度的。
|
||||
|
||||
实际上,动态规划最常用来求解最优方案问题,例如寻找最短路径、最大利润、最少时间等。**这类问题不仅包含重叠子问题,往往还具有另外两大特性:最优子结构、无后效性**。
|
||||
总的看来,**子问题分解是一种通用的算法思路,在分治、动态规划、回溯中各有特点**:
|
||||
|
||||
- 分治算法将原问题划分为几个独立的子问题,然后递归解决子问题,最后合并子问题的解得到原问题的解。
|
||||
- 动态规划也是将原问题分解为多个子问题,但与分治算法的主要区别是,**动态规划中的子问题往往不是相互独立的**,原问题的解依赖于子问题的解,而子问题的解又依赖于更小的子问题的解。
|
||||
- 回溯算法在尝试和回退中穷举所有可能的解,并通过剪枝避免不必要的搜索分支。原问题的解由一系列决策步骤构成,我们可以将每个决策步骤之前的子序列看作为一个子问题。
|
||||
|
||||
实际上,动态规划最常用来求解最优化问题。**这类问题不仅包含重叠子问题,还具有另外两大特性:最优子结构、无后效性**。
|
||||
|
||||
## 最优子结构
|
||||
|
||||
|
||||
Reference in New Issue
Block a user