mirror of
https://github.com/krahets/hello-algo.git
synced 2025-07-14 19:41:41 +08:00
deploy
This commit is contained in:
@ -3317,13 +3317,13 @@
|
||||
<!-- Page content -->
|
||||
<h1 id="155">15.5 小结<a class="headerlink" href="#155" title="Permanent link">¶</a></h1>
|
||||
<ul>
|
||||
<li>贪心算法通常用于解决最优化问题,其原理是在每个决策阶段都做出局部最优的决策,以期望获得全局最优解。</li>
|
||||
<li>贪心算法通常用于解决最优化问题,其原理是在每个决策阶段都做出局部最优的决策,以期获得全局最优解。</li>
|
||||
<li>贪心算法会迭代地做出一个又一个的贪心选择,每轮都将问题转化成一个规模更小的子问题,直到问题被解决。</li>
|
||||
<li>贪心算法不仅实现简单,还具有很高的解题效率。相比于动态规划,贪心算法的时间复杂度通常更低。</li>
|
||||
<li>在零钱兑换问题中,对于某些硬币组合,贪心算法可以保证找到最优解;对于另外一些硬币组合则不然,贪心算法可能找到很差的解。</li>
|
||||
<li>适合用贪心算法求解的问题具有两大性质:贪心选择性质和最优子结构。贪心选择性质代表贪心策略的有效性。</li>
|
||||
<li>对于某些复杂问题,贪心选择性质的证明并不简单。相对来说,证伪更加容易,例如零钱兑换问题。</li>
|
||||
<li>求解贪心问题主要分为三步:问题分析、贪心策略确定、正确性证明。其中,贪心策略确定是核心步骤,正确性证明往往是难点。</li>
|
||||
<li>求解贪心问题主要分为三步:问题分析、确定贪心策略、正确性证明。其中,确定贪心策略是核心步骤,正确性证明往往是难点。</li>
|
||||
<li>分数背包问题在 0-1 背包的基础上,允许选择物品的一部分,因此可使用贪心算法求解。贪心策略的正确性可以使用反证法来证明。</li>
|
||||
<li>最大容量问题可使用穷举法求解,时间复杂度为 <span class="arithmatex">\(O(n^2)\)</span> 。通过设计贪心策略,每轮向内移动短板,可将时间复杂度优化至 <span class="arithmatex">\(O(n)\)</span> 。</li>
|
||||
<li>在最大切分乘积问题中,我们先后推理出两个贪心策略:<span class="arithmatex">\(\geq 4\)</span> 的整数都应该继续切分、最优切分因子为 <span class="arithmatex">\(3\)</span> 。代码中包含幂运算,时间复杂度取决于幂运算实现方法,通常为 <span class="arithmatex">\(O(1)\)</span> 或 <span class="arithmatex">\(O(\log n)\)</span> 。</li>
|
||||
|
Reference in New Issue
Block a user