mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-09 05:56:06 +00:00
deploy
This commit is contained in:
@@ -65,8 +65,8 @@
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Sans:300,300i,400,400i,500,500i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"Noto Sans";--md-code-font:"JetBrains Mono"}</style>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=PT+Sans:300,300i,400,400i,500,500i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback">
|
||||
<style>:root{--md-text-font:"PT Sans";--md-code-font:"JetBrains Mono"}</style>
|
||||
|
||||
|
||||
|
||||
@@ -574,7 +574,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
Глава 1. Знакомство с алгоритмами
|
||||
Глава 1. Введение в алгоритмы
|
||||
|
||||
|
||||
|
||||
@@ -596,7 +596,7 @@
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
|
||||
|
||||
Глава 1. Знакомство с алгоритмами
|
||||
Глава 1. Введение в алгоритмы
|
||||
|
||||
|
||||
</label>
|
||||
@@ -646,7 +646,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
1.2 Что такое структуры данных и алгоритмы
|
||||
1.2 Что такое алгоритм
|
||||
|
||||
|
||||
|
||||
@@ -1181,7 +1181,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
Глава 4. Массив и связный список
|
||||
Глава 4. Массивы и списки
|
||||
|
||||
|
||||
|
||||
@@ -1203,7 +1203,7 @@
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
|
||||
|
||||
Глава 4. Массив и связный список
|
||||
Глава 4. Массивы и списки
|
||||
|
||||
|
||||
</label>
|
||||
@@ -1309,7 +1309,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
4.4 Память и кеш *
|
||||
4.4 Оперативная память и кэш *
|
||||
|
||||
|
||||
|
||||
@@ -1591,7 +1591,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
Глава 6. Хеширование
|
||||
Глава 6. Хеш-таблицы
|
||||
|
||||
|
||||
|
||||
@@ -1613,7 +1613,7 @@
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
|
||||
|
||||
Глава 6. Хеширование
|
||||
Глава 6. Хеш-таблицы
|
||||
|
||||
|
||||
</label>
|
||||
@@ -1691,7 +1691,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
6.3 Хеш-алгоритмы
|
||||
6.3 Алгоритмы хеширования
|
||||
|
||||
|
||||
|
||||
@@ -1786,7 +1786,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
Глава 7. Дерево
|
||||
Глава 7. Деревья
|
||||
|
||||
|
||||
|
||||
@@ -1808,7 +1808,7 @@
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
|
||||
|
||||
Глава 7. Дерево
|
||||
Глава 7. Деревья
|
||||
|
||||
|
||||
</label>
|
||||
@@ -1886,7 +1886,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
7.3 Представление дерева массивом
|
||||
7.3 Представление двоичного дерева массивом
|
||||
|
||||
|
||||
|
||||
@@ -1970,7 +1970,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
7.6 Резюме
|
||||
7.6 Краткие итоги
|
||||
|
||||
|
||||
|
||||
@@ -2133,7 +2133,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
8.3 Задача Top-K
|
||||
8.3 Задача Top-k
|
||||
|
||||
|
||||
|
||||
@@ -2224,7 +2224,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
Глава 9. Граф
|
||||
Глава 9. Графы
|
||||
|
||||
|
||||
|
||||
@@ -2246,7 +2246,7 @@
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
|
||||
|
||||
Глава 9. Граф
|
||||
Глава 9. Графы
|
||||
|
||||
|
||||
</label>
|
||||
@@ -2296,7 +2296,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
9.2 Базовые операции над графами
|
||||
9.2 Базовые операции графа
|
||||
|
||||
|
||||
|
||||
@@ -2352,7 +2352,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
9.4 Резюме
|
||||
9.4 Краткие итоги
|
||||
|
||||
|
||||
|
||||
@@ -2491,7 +2491,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
10.2 Точка вставки двоичного поиска
|
||||
10.2 Двоичный поиск точки вставки
|
||||
|
||||
|
||||
|
||||
@@ -2519,7 +2519,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
10.3 Граничные случаи двоичного поиска
|
||||
10.3 Двоичный поиск границ
|
||||
|
||||
|
||||
|
||||
@@ -2547,7 +2547,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
10.4 Стратегия оптимизации через хеширование
|
||||
10.4 Стратегии оптимизации хеширования
|
||||
|
||||
|
||||
|
||||
@@ -2575,7 +2575,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
10.5 Алгоритмы поиска: новый взгляд
|
||||
10.5 Переосмысление алгоритмов поиска
|
||||
|
||||
|
||||
|
||||
@@ -2780,7 +2780,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
11.3 Пузырьковая сортировка
|
||||
11.3 Сортировка пузырьком
|
||||
|
||||
|
||||
|
||||
@@ -2808,7 +2808,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
11.4 Сортировка вставкой
|
||||
11.4 Сортировка вставками
|
||||
|
||||
|
||||
|
||||
@@ -3115,7 +3115,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
12.1 Алгоритмы разделяй и властвуй
|
||||
12.1 Стратегия разделяй и властвуй
|
||||
|
||||
|
||||
|
||||
@@ -3143,7 +3143,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
12.2 Стратегия поиска разделяй и властвуй
|
||||
12.2 Поисковая стратегия разделяй и властвуй
|
||||
|
||||
|
||||
|
||||
@@ -3225,10 +3225,10 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#1-divide-and-conquer" class="md-nav__link">
|
||||
<a href="#1" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
1. Проверка, является ли это задачей divide and conquer
|
||||
1. Проверка, является ли это задачей "разделяй и властвуй"
|
||||
|
||||
</span>
|
||||
</a>
|
||||
@@ -3512,7 +3512,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
13.4 Задача о $n$ ферзях
|
||||
13.4 Задача о n ферзях
|
||||
|
||||
|
||||
|
||||
@@ -3653,7 +3653,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
14.1 Введение в динамическое программирование
|
||||
14.1 Первое знакомство с динамическим программированием
|
||||
|
||||
|
||||
|
||||
@@ -3765,7 +3765,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
14.5 Задача о неограниченном рюкзаке
|
||||
14.5 Задача о полном рюкзаке
|
||||
|
||||
|
||||
|
||||
@@ -4318,10 +4318,10 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#1-divide-and-conquer" class="md-nav__link">
|
||||
<a href="#1" class="md-nav__link">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
1. Проверка, является ли это задачей divide and conquer
|
||||
1. Проверка, является ли это задачей "разделяй и властвуй"
|
||||
|
||||
</span>
|
||||
</a>
|
||||
@@ -4406,15 +4406,15 @@
|
||||
<p><img alt="Пример данных для построения двоичного дерева" class="animation-figure" src="../build_binary_tree_problem.assets/build_tree_example.png" /></p>
|
||||
<p align="center"> Рисунок 12-5 Пример данных для построения двоичного дерева </p>
|
||||
|
||||
<h3 id="1-divide-and-conquer">1. Проверка, является ли это задачей divide and conquer<a class="headerlink" href="#1-divide-and-conquer" title="Permanent link">¶</a></h3>
|
||||
<p>Исходная задача - построить двоичное дерево по <code>preorder</code> и <code>inorder</code> - является типичной задачей divide and conquer.</p>
|
||||
<h3 id="1">1. Проверка, является ли это задачей "разделяй и властвуй"<a class="headerlink" href="#1" title="Permanent link">¶</a></h3>
|
||||
<p>Исходная задача - построить двоичное дерево по <code>preorder</code> и <code>inorder</code> - является типичной задачей для стратегии "разделяй и властвуй".</p>
|
||||
<ul>
|
||||
<li><strong>Задача раскладывается на части</strong>: если смотреть с точки зрения divide and conquer, исходную задачу можно разбить на две подзадачи: построение левого поддерева и построение правого поддерева, плюс одно действие: инициализация корневого узла. Для каждого поддерева (подзадачи) можно использовать тот же способ разбиения, пока не будет достигнута наименьшая подзадача (пустое поддерево).</li>
|
||||
<li><strong>Задача раскладывается на части</strong>: если смотреть с точки зрения стратегии "разделяй и властвуй", исходную задачу можно разбить на две подзадачи: построение левого поддерева и построение правого поддерева, плюс одно действие: инициализация корневого узла. Для каждого поддерева (подзадачи) можно использовать тот же способ разбиения, пока не будет достигнута наименьшая подзадача (пустое поддерево).</li>
|
||||
<li><strong>Подзадачи независимы</strong>: левое и правое поддеревья независимы друг от друга и не пересекаются. При построении левого поддерева нам нужно смотреть только на ту часть прямого и симметричного обходов, которая соответствует левому поддереву. Для правого поддерева рассуждение аналогично.</li>
|
||||
<li><strong>Решения подзадач можно объединить</strong>: когда левое и правое поддеревья (решения подзадач) уже построены, их можно присоединить к корневому узлу и тем самым получить решение исходной задачи.</li>
|
||||
</ul>
|
||||
<h3 id="2">2. Как разделить поддеревья<a class="headerlink" href="#2" title="Permanent link">¶</a></h3>
|
||||
<p>Из анализа выше видно, что эта задача действительно решается через divide and conquer, <strong>но как именно, имея прямой обход <code>preorder</code> и симметричный обход <code>inorder</code>, разделить левое и правое поддеревья</strong>?</p>
|
||||
<p>Из анализа выше видно, что эта задача действительно решается через "разделяй и властвуй", <strong>но как именно, имея прямой обход <code>preorder</code> и симметричный обход <code>inorder</code>, отделить левое и правое поддеревья</strong>?</p>
|
||||
<p>По определению и <code>preorder</code> , и <code>inorder</code> можно разбить на три части.</p>
|
||||
<ul>
|
||||
<li>Прямой обход: <code>[ корневой узел | левое поддерево | правое поддерево ]</code> , например для дерева на рисунке 12-5 это <code>[ 3 | 9 | 2 1 7 ]</code> .</li>
|
||||
@@ -4467,7 +4467,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p>Обратите внимание, что <span class="arithmatex">\((m-l)\)</span> в индексе корневого узла правого поддерева означает "число узлов в левом поддереве"; лучше всего понимать это выражение вместе с рисунком ниже.</p>
|
||||
<p>Стоит отметить, что <span class="arithmatex">\((m-l)\)</span> в индексе корневого узла правого поддерева означает число узлов в левом поддереве; лучше всего понимать это выражение вместе с рисунком ниже.</p>
|
||||
<p><img alt="Представление индексных интервалов корня и поддеревьев" class="animation-figure" src="../build_binary_tree_problem.assets/build_tree_division_pointers.png" /></p>
|
||||
<p align="center"> Рисунок 12-7 Представление индексных интервалов корня и поддеревьев </p>
|
||||
|
||||
@@ -4959,7 +4959,7 @@ aria-label="Нижний колонтитул"
|
||||
<a
|
||||
href="../binary_search_recur/"
|
||||
class="md-footer__link md-footer__link--prev"
|
||||
aria-label="Назад: 12.2 Стратегия поиска разделяй и властвуй"
|
||||
aria-label="Назад: 12.2 Поисковая стратегия разделяй и властвуй"
|
||||
rel="prev"
|
||||
>
|
||||
<div class="md-footer__button md-icon">
|
||||
@@ -4971,7 +4971,7 @@ aria-label="Нижний колонтитул"
|
||||
Назад
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
12.2 Стратегия поиска разделяй и властвуй
|
||||
12.2 Поисковая стратегия разделяй и властвуй
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
Reference in New Issue
Block a user