mirror of
https://github.com/krahets/hello-algo.git
synced 2025-07-24 10:14:44 +08:00
deploy
This commit is contained in:
@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
|
||||
<title>13.2. DP 问题特性(New) - Hello 算法</title>
|
||||
<title>14.2. DP 问题特性(New) - Hello 算法</title>
|
||||
|
||||
|
||||
|
||||
@ -79,7 +79,7 @@
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#132" class="md-skip">
|
||||
<a href="#142" class="md-skip">
|
||||
跳转至
|
||||
</a>
|
||||
|
||||
@ -113,7 +113,7 @@
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
13.2. DP 问题特性(New)
|
||||
14.2. DP 问题特性(New)
|
||||
|
||||
</span>
|
||||
</div>
|
||||
@ -1771,6 +1771,87 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="md-nav__link md-nav__link--index ">
|
||||
<a href="../../chapter_divide_and_conquer/">12. 分治</a>
|
||||
|
||||
<label for="__nav_13">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
</div>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_13">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
12. 分治
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_divide_and_conquer/divide_and_conquer/" class="md-nav__link">
|
||||
12.1. 分治算法(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_divide_and_conquer/build_binary_tree/" class="md-nav__link">
|
||||
12.2. 构建树问题(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_14" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1782,18 +1863,18 @@
|
||||
|
||||
|
||||
<div class="md-nav__link md-nav__link--index ">
|
||||
<a href="../../chapter_backtracking/">12. 回溯</a>
|
||||
<a href="../../chapter_backtracking/">13. 回溯</a>
|
||||
|
||||
<label for="__nav_13">
|
||||
<label for="__nav_14">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
</div>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_13">
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_14">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
12. 回溯
|
||||
13. 回溯
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@ -1806,7 +1887,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
|
||||
12.1. 回溯算法
|
||||
13.1. 回溯算法
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@ -1820,7 +1901,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_backtracking/permutations_problem/" class="md-nav__link">
|
||||
12.2. 全排列问题
|
||||
13.2. 全排列问题
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@ -1834,7 +1915,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_backtracking/subset_sum_problem/" class="md-nav__link">
|
||||
12.3. 子集和问题
|
||||
13.3. 子集和问题
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@ -1848,7 +1929,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_backtracking/n_queens_problem/" class="md-nav__link">
|
||||
12.4. N 皇后问题
|
||||
13.4. N 皇后问题
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@ -1862,7 +1943,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_backtracking/summary/" class="md-nav__link">
|
||||
12.5. 小结
|
||||
13.5. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@ -1890,7 +1971,7 @@
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_14" checked>
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_15" checked>
|
||||
|
||||
|
||||
|
||||
@ -1917,18 +1998,18 @@
|
||||
|
||||
|
||||
<div class="md-nav__link md-nav__link--index ">
|
||||
<a href="../">13. 动态规划</a>
|
||||
<a href="../">14. 动态规划</a>
|
||||
|
||||
<label for="__nav_14">
|
||||
<label for="__nav_15">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
</div>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="true">
|
||||
<label class="md-nav__title" for="__nav_14">
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="true">
|
||||
<label class="md-nav__title" for="__nav_15">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
13. 动态规划
|
||||
14. 动态规划
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@ -1941,7 +2022,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../intro_to_dynamic_programming/" class="md-nav__link">
|
||||
13.1. 初探动态规划(New)
|
||||
14.1. 初探动态规划(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@ -1964,12 +2045,12 @@
|
||||
|
||||
|
||||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||||
13.2. DP 问题特性(New)
|
||||
14.2. DP 问题特性(New)
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<a href="./" class="md-nav__link md-nav__link--active">
|
||||
13.2. DP 问题特性(New)
|
||||
14.2. DP 问题特性(New)
|
||||
</a>
|
||||
|
||||
|
||||
@ -1988,15 +2069,15 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#1321" class="md-nav__link">
|
||||
13.2.1. 最优子结构
|
||||
<a href="#1421" class="md-nav__link">
|
||||
14.2.1. 最优子结构
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#1322" class="md-nav__link">
|
||||
13.2.2. 无后效性
|
||||
<a href="#1422" class="md-nav__link">
|
||||
14.2.2. 无后效性
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@ -2017,7 +2098,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../dp_solution_pipeline/" class="md-nav__link">
|
||||
13.3. DP 解题思路(New)
|
||||
14.3. DP 解题思路(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@ -2031,7 +2112,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../knapsack_problem/" class="md-nav__link">
|
||||
13.4. 0-1 背包问题(New)
|
||||
14.4. 0-1 背包问题(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@ -2045,7 +2126,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../unbounded_knapsack_problem/" class="md-nav__link">
|
||||
13.5. 完全背包问题(New)
|
||||
14.5. 完全背包问题(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@ -2059,7 +2140,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../edit_distance_problem/" class="md-nav__link">
|
||||
13.6. 编辑距离问题(New)
|
||||
14.6. 编辑距离问题(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@ -2073,76 +2154,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../summary/" class="md-nav__link">
|
||||
13.7. 小结(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_15" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
|
||||
14. 附录
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_15">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
14. 附录
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/installation/" class="md-nav__link">
|
||||
14.1. 编程环境安装
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
|
||||
14.2. 一起参与创作
|
||||
14.7. 小结(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@ -2173,6 +2185,75 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_16" id="__nav_16_label" tabindex="0">
|
||||
15. 附录
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_16">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
15. 附录
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/installation/" class="md-nav__link">
|
||||
15.1. 编程环境安装
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
|
||||
15.2. 一起参与创作
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_17" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -2185,8 +2266,8 @@
|
||||
|
||||
</div>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_16">
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_17_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_17">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
参考文献
|
||||
</label>
|
||||
@ -2227,15 +2308,15 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#1321" class="md-nav__link">
|
||||
13.2.1. 最优子结构
|
||||
<a href="#1421" class="md-nav__link">
|
||||
14.2.1. 最优子结构
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#1322" class="md-nav__link">
|
||||
13.2.2. 无后效性
|
||||
<a href="#1422" class="md-nav__link">
|
||||
14.2.2. 无后效性
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@ -2263,10 +2344,10 @@
|
||||
|
||||
|
||||
|
||||
<h1 id="132">13.2. 动态规划问题特性<a class="headerlink" href="#132" title="Permanent link">¶</a></h1>
|
||||
<h1 id="142">14.2. 动态规划问题特性<a class="headerlink" href="#142" title="Permanent link">¶</a></h1>
|
||||
<p>在上节中,我们学习了动态规划问题的暴力解法,从递归树中观察到海量的重叠子问题,以及了解到动态规划是如何通过记录解来优化时间复杂度的。</p>
|
||||
<p>实际上,动态规划最常用来求解最优方案问题,例如寻找最短路径、最大利润、最少时间等。<strong>这类问题不仅包含重叠子问题,往往还具有另外两大特性:最优子结构、无后效性</strong>。</p>
|
||||
<h2 id="1321">13.2.1. 最优子结构<a class="headerlink" href="#1321" title="Permanent link">¶</a></h2>
|
||||
<h2 id="1421">14.2.1. 最优子结构<a class="headerlink" href="#1421" title="Permanent link">¶</a></h2>
|
||||
<p>我们对爬楼梯问题稍作改动,使之更加适合展示最优子结构概念。</p>
|
||||
<div class="admonition question">
|
||||
<p class="admonition-title">爬楼梯最小代价</p>
|
||||
@ -2484,7 +2565,7 @@ dp[i] = \min(dp[i-1], dp[i-2]) + cost[i]
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h2 id="1322">13.2.2. 无后效性<a class="headerlink" href="#1322" title="Permanent link">¶</a></h2>
|
||||
<h2 id="1422">14.2.2. 无后效性<a class="headerlink" href="#1422" title="Permanent link">¶</a></h2>
|
||||
<p>「无后效性」是动态规划能够有效解决问题的重要特性之一,定义为:<strong>给定一个确定的状态,它的未来发展只与当前状态有关,而与当前状态过去所经历过的所有状态无关</strong>。</p>
|
||||
<p>以爬楼梯问题为例,给定状态 <span class="arithmatex">\(i\)</span> ,它会发展出状态 <span class="arithmatex">\(i+1\)</span> 和状态 <span class="arithmatex">\(i+2\)</span> ,分别对应跳 <span class="arithmatex">\(1\)</span> 步和跳 <span class="arithmatex">\(2\)</span> 步。在做出这两种选择时,我们无需考虑状态 <span class="arithmatex">\(i\)</span> 之前的状态,即它们对状态 <span class="arithmatex">\(i\)</span> 的未来没有影响。</p>
|
||||
<p>然而,如果我们向爬楼梯问题添加一个约束,情况就不一样了。</p>
|
||||
@ -2713,7 +2794,7 @@ dp[i, 2] = dp[i-2, 1] + dp[i-2, 2]
|
||||
<nav class="md-footer__inner md-grid" aria-label="页脚" >
|
||||
|
||||
|
||||
<a href="../intro_to_dynamic_programming/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 13.1. &nbsp; 初探动态规划(New)" rel="prev">
|
||||
<a href="../intro_to_dynamic_programming/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 14.1. &nbsp; 初探动态规划(New)" rel="prev">
|
||||
<div class="md-footer__button md-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
</div>
|
||||
@ -2722,20 +2803,20 @@ dp[i, 2] = dp[i-2, 1] + dp[i-2, 2]
|
||||
上一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
13.1. 初探动态规划(New)
|
||||
14.1. 初探动态规划(New)
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<a href="../dp_solution_pipeline/" class="md-footer__link md-footer__link--next" aria-label="下一页: 13.3. &nbsp; DP 解题思路(New)" rel="next">
|
||||
<a href="../dp_solution_pipeline/" class="md-footer__link md-footer__link--next" aria-label="下一页: 14.3. &nbsp; DP 解题思路(New)" rel="next">
|
||||
<div class="md-footer__title">
|
||||
<span class="md-footer__direction">
|
||||
下一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
13.3. DP 解题思路(New)
|
||||
14.3. DP 解题思路(New)
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-footer__button md-icon">
|
||||
|
Reference in New Issue
Block a user