mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-13 15:56:05 +00:00
deploy
This commit is contained in:
@@ -4708,7 +4708,7 @@
|
||||
<p>У вас может невольно вырваться: «Эврика!» Жадный алгоритм решает задачу размена монет всего примерно десятью строками кода.</p>
|
||||
<h2 id="1511">15.1.1 Преимущества и ограничения жадного алгоритма<a class="headerlink" href="#1511" title="Permanent link">¶</a></h2>
|
||||
<p><strong>Жадный алгоритм не только прост в реализации, но и обычно очень эффективен</strong>. В приведенном выше коде обозначим минимальный номинал монеты через <span class="arithmatex">\(\min(coins)\)</span>, тогда жадный выбор выполняется не более чем <span class="arithmatex">\(amt / \min(coins)\)</span> раз, а временная сложность равна <span class="arithmatex">\(O(amt / \min(coins))\)</span>. Это на порядок меньше, чем временная сложность решения через динамическое программирование <span class="arithmatex">\(O(n \times amt)\)</span>.</p>
|
||||
<p>Однако <strong>для некоторых наборов номиналов монет жадный алгоритм не может найти оптимальный ответ</strong>. Ниже показаны два примера.</p>
|
||||
<p>Однако <strong>для некоторых наборов номиналов монет жадный алгоритм не может найти оптимальный ответ</strong>. На рисунке 15-2 показаны два примера.</p>
|
||||
<ul>
|
||||
<li><strong>Положительный пример <span class="arithmatex">\(coins = [1, 5, 10, 20, 50, 100]\)</span></strong>: для такого набора монет при любом <span class="arithmatex">\(amt\)</span> жадный алгоритм находит оптимальное решение.</li>
|
||||
<li><strong>Отрицательный пример <span class="arithmatex">\(coins = [1, 20, 50]\)</span></strong>: пусть <span class="arithmatex">\(amt = 60\)</span>. Жадный алгоритм найдет только комбинацию <span class="arithmatex">\(50 + 1 \times 10\)</span>, то есть всего <span class="arithmatex">\(11\)</span> монет, тогда как динамическое программирование находит оптимум <span class="arithmatex">\(20 + 20 + 20\)</span>, где требуется лишь <span class="arithmatex">\(3\)</span> монеты.</li>
|
||||
|
||||
Reference in New Issue
Block a user