mirror of
https://github.com/krahets/hello-algo.git
synced 2026-08-14 04:30:58 +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
|
||||
|
||||
|
||||
|
||||
@@ -2226,7 +2226,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
Глава 9. Граф
|
||||
Глава 9. Графы
|
||||
|
||||
|
||||
|
||||
@@ -2248,7 +2248,7 @@
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
|
||||
|
||||
Глава 9. Граф
|
||||
Глава 9. Графы
|
||||
|
||||
|
||||
</label>
|
||||
@@ -2407,7 +2407,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
9.2 Базовые операции над графами
|
||||
9.2 Базовые операции графа
|
||||
|
||||
|
||||
|
||||
@@ -2463,7 +2463,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
9.4 Резюме
|
||||
9.4 Краткие итоги
|
||||
|
||||
|
||||
|
||||
@@ -2602,7 +2602,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
10.2 Точка вставки двоичного поиска
|
||||
10.2 Двоичный поиск точки вставки
|
||||
|
||||
|
||||
|
||||
@@ -2630,7 +2630,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
10.3 Граничные случаи двоичного поиска
|
||||
10.3 Двоичный поиск границ
|
||||
|
||||
|
||||
|
||||
@@ -2658,7 +2658,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
10.4 Стратегия оптимизации через хеширование
|
||||
10.4 Стратегии оптимизации хеширования
|
||||
|
||||
|
||||
|
||||
@@ -2686,7 +2686,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
10.5 Алгоритмы поиска: новый взгляд
|
||||
10.5 Переосмысление алгоритмов поиска
|
||||
|
||||
|
||||
|
||||
@@ -2891,7 +2891,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
11.3 Пузырьковая сортировка
|
||||
11.3 Сортировка пузырьком
|
||||
|
||||
|
||||
|
||||
@@ -2919,7 +2919,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
11.4 Сортировка вставкой
|
||||
11.4 Сортировка вставками
|
||||
|
||||
|
||||
|
||||
@@ -3224,7 +3224,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
12.1 Алгоритмы разделяй и властвуй
|
||||
12.1 Стратегия разделяй и властвуй
|
||||
|
||||
|
||||
|
||||
@@ -3252,7 +3252,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
12.2 Стратегия поиска разделяй и властвуй
|
||||
12.2 Поисковая стратегия разделяй и властвуй
|
||||
|
||||
|
||||
|
||||
@@ -3529,7 +3529,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
13.4 Задача о $n$ ферзях
|
||||
13.4 Задача о n ферзях
|
||||
|
||||
|
||||
|
||||
@@ -3670,7 +3670,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
14.1 Введение в динамическое программирование
|
||||
14.1 Первое знакомство с динамическим программированием
|
||||
|
||||
|
||||
|
||||
@@ -3782,7 +3782,7 @@
|
||||
<span class="md-ellipsis">
|
||||
|
||||
|
||||
14.5 Задача о неограниченном рюкзаке
|
||||
14.5 Задача о полном рюкзаке
|
||||
|
||||
|
||||
|
||||
@@ -4433,7 +4433,7 @@
|
||||
|
||||
<!-- Page content -->
|
||||
<h1 id="91">9.1 Граф<a class="headerlink" href="#91" title="Permanent link">¶</a></h1>
|
||||
<p><u>Граф (graph)</u> - это нелинейная структура данных, состоящая из <u>вершин (vertex)</u> и <u>ребер (edge)</u>. Мы можем абстрактно представить граф <span class="arithmatex">\(G\)</span> как множество вершин <span class="arithmatex">\(V\)</span> и множество ребер <span class="arithmatex">\(E\)</span> . В примере ниже показан граф, содержащий 5 вершин и 7 ребер.</p>
|
||||
<p><u>Граф (graph)</u> - это нелинейная структура данных, состоящая из <u>вершин (vertex)</u> и <u>ребер (edge)</u>. Граф <span class="arithmatex">\(G\)</span> можно абстрактно представить как множество вершин <span class="arithmatex">\(V\)</span> и множество ребер <span class="arithmatex">\(E\)</span> . Ниже приведен пример графа, содержащего 5 вершин и 7 ребер.</p>
|
||||
<div class="arithmatex">\[
|
||||
\begin{aligned}
|
||||
V & = \{ 1, 2, 3, 4, 5 \} \newline
|
||||
@@ -4441,61 +4441,61 @@ E & = \{ (1,2), (1,3), (1,5), (2,3), (2,4), (2,5), (4,5) \} \newline
|
||||
G & = \{ V, E \} \newline
|
||||
\end{aligned}
|
||||
\]</div>
|
||||
<p>Если рассматривать вершины как узлы, а ребра как ссылки (указатели), соединяющие эти узлы, то граф можно считать структурой данных, выросшей из связного списка. Как показано на рисунке 9-1, <strong>по сравнению с линейными отношениями (связный список) и отношениями разделения (дерево), сетевые отношения (граф) обладают большей свободой</strong> , а потому и сложнее.</p>
|
||||
<p>Если рассматривать вершины как узлы, а ребра как ссылки, соединяющие узлы, граф можно считать структурой данных, расширяющей связный список. Как показано на рисунке 9-1, <strong>по сравнению с линейными отношениями (связный список) и отношениями разделения (дерево), сетевые отношения (граф) обладают большей свободой</strong> и потому являются более сложными.</p>
|
||||
<p><img alt="Связь между связным списком, деревом и графом" class="animation-figure" src="../graph.assets/linkedlist_tree_graph.png" /></p>
|
||||
<p align="center"> Рисунок 9-1 Связь между связным списком, деревом и графом </p>
|
||||
|
||||
<h2 id="911">9.1.1 Распространенные типы и термины графов<a class="headerlink" href="#911" title="Permanent link">¶</a></h2>
|
||||
<p>В зависимости от того, имеют ли ребра направление, графы делятся на <u>неориентированные графы (undirected graph)</u> и <u>ориентированные графы (directed graph)</u> , как показано на рисунке 9-2.</p>
|
||||
<p>В зависимости от наличия направления у ребер графы делятся на <u>неориентированные графы (undirected graph)</u> и <u>ориентированные графы (directed graph)</u> , как показано на рисунке 9-2.</p>
|
||||
<ul>
|
||||
<li>В неориентированном графе ребро означает "двустороннюю" связь между двумя вершинами, например отношение "друзья" в WeChat или QQ.</li>
|
||||
<li>В ориентированном графе ребро имеет направление, то есть ребра <span class="arithmatex">\(A \rightarrow B\)</span> и <span class="arithmatex">\(A \leftarrow B\)</span> независимы друг от друга, как, например, отношения "подписка" и "подписчик" в Weibo или Douyin.</li>
|
||||
<li>В неориентированном графе ребро представляет двустороннюю связь между двумя вершинами, например дружеские отношения в социальных сетях.</li>
|
||||
<li>В ориентированном графе ребро имеет направление, то есть ребра <span class="arithmatex">\(A \rightarrow B\)</span> и <span class="arithmatex">\(A \leftarrow B\)</span> независимы друг от друга, например отношения подписки и подписчиков.</li>
|
||||
</ul>
|
||||
<p><img alt="Ориентированный и неориентированный графы" class="animation-figure" src="../graph.assets/directed_graph.png" /></p>
|
||||
<p align="center"> Рисунок 9-2 Ориентированный и неориентированный графы </p>
|
||||
|
||||
<p>В зависимости от того, достижимы ли все вершины друг из друга, граф делится на <u>связный граф (connected graph)</u> и <u>несвязный граф (disconnected graph)</u> , как показано на рисунке 9-3.</p>
|
||||
<p>В зависимости от того, связаны ли все вершины между собой, граф делится на <u>связный граф (connected graph)</u> и <u>несвязный граф (disconnected graph)</u> , как показано на рисунке 9-3.</p>
|
||||
<ul>
|
||||
<li>В связном графе, начиная из некоторой вершины, можно добраться до любой другой вершины.</li>
|
||||
<li>В несвязном графе, начиная из некоторой вершины, по крайней мере одна вершина оказывается недостижимой.</li>
|
||||
<li>В связном графе из любой вершины можно достичь любой другой вершины.</li>
|
||||
<li>В несвязном графе существует по крайней мере одна вершина, недостижимая из текущей.</li>
|
||||
</ul>
|
||||
<p><img alt="Связный и несвязный графы" class="animation-figure" src="../graph.assets/connected_graph.png" /></p>
|
||||
<p align="center"> Рисунок 9-3 Связный и несвязный графы </p>
|
||||
|
||||
<p>Мы также можем добавить к ребрам переменную "вес" и тем самым получить <u>взвешенный граф (weighted graph)</u> , показанный на рисунке 9-4. Например, в мобильных играх вроде Honor of Kings система может вычислять "степень близости" между игроками по времени, проведенному в совместных играх; такую сеть близости можно описать взвешенным графом.</p>
|
||||
<p>Мы также можем добавить к ребрам переменную "вес" и получить показанный ниже <u>взвешенный граф (weighted graph)</u>. Например, в мобильных играх вроде Honor of Kings система рассчитывает "близость" между игроками по времени совместной игры, и такую сеть близости можно представить взвешенным графом.</p>
|
||||
<p><img alt="Взвешенный и невзвешенный графы" class="animation-figure" src="../graph.assets/weighted_graph.png" /></p>
|
||||
<p align="center"> Рисунок 9-4 Взвешенный и невзвешенный графы </p>
|
||||
|
||||
<p>Для структуры данных "граф" используются следующие распространенные термины.</p>
|
||||
<p>Со структурой данных "граф" связаны следующие основные термины.</p>
|
||||
<ul>
|
||||
<li><u>Смежность (adjacency)</u>: если между двумя вершинами существует ребро, то эти вершины называются "смежными". На рисунке 9-4 вершинам 2, 3, 5 смежна вершина 1.</li>
|
||||
<li><u>Путь (path)</u>: последовательность ребер, ведущая из вершины A в вершину B, называется "путем" от A до B. На рисунке 9-4 последовательность ребер 1-5-2-4 представляет один из путей от вершины 1 к вершине 4.</li>
|
||||
<li><u>Степень (degree)</u>: число ребер, принадлежащих вершине. Для ориентированного графа <u>входящая степень (in-degree)</u> показывает число ребер, ведущих в вершину, а <u>исходящая степень (out-degree)</u> показывает число ребер, исходящих из вершины.</li>
|
||||
<li><u>Смежность (adjacency)</u>: если между двумя вершинами существует ребро, то такие вершины называются смежными. На рисунке 9-4 с вершиной 1 смежны вершины 2, 3 и 5.</li>
|
||||
<li><u>Путь (path)</u>: последовательность ребер от вершины A до вершины B называется путем из A в B. На рисунке 9-4 последовательность ребер 1-5-2-4 является одним из путей от вершины 1 к вершине 4.</li>
|
||||
<li><u>Степень (degree)</u>: количество ребер, принадлежащих вершине. Для ориентированного графа <u>входящая степень (in-degree)</u> показывает, сколько ребер входит в вершину, а <u>исходящая степень (out-degree)</u> показывает, сколько ребер из нее выходит.</li>
|
||||
</ul>
|
||||
<h2 id="912">9.1.2 Представление графа<a class="headerlink" href="#912" title="Permanent link">¶</a></h2>
|
||||
<p>Распространенные способы представления графа включают "матрицу смежности" и "список смежности". Ниже в качестве примера используется неориентированный граф.</p>
|
||||
<p>Распространенные способы представления графа включают "матрицу смежности" и "список смежности". Ниже для примера рассматривается неориентированный граф.</p>
|
||||
<h3 id="1">1. Матрица смежности<a class="headerlink" href="#1" title="Permanent link">¶</a></h3>
|
||||
<p>Пусть число вершин графа равно <span class="arithmatex">\(n\)</span> ; тогда <u>матрица смежности (adjacency matrix)</u> использует матрицу размера <span class="arithmatex">\(n \times n\)</span> для представления графа: каждая строка и каждый столбец соответствуют вершине, а элементы матрицы отражают наличие ребра, то есть показывают, существует между двумя вершинами связь или нет.</p>
|
||||
<p>Как показано на рисунке 9-5, пусть матрица смежности обозначается как <span class="arithmatex">\(M\)</span> , а список вершин - как <span class="arithmatex">\(V\)</span> ; тогда элемент матрицы <span class="arithmatex">\(M[i, j] = 1\)</span> означает, что между вершинами <span class="arithmatex">\(V[i]\)</span> и <span class="arithmatex">\(V[j]\)</span> существует ребро, а элемент <span class="arithmatex">\(M[i, j] = 0\)</span> означает, что ребра между ними нет.</p>
|
||||
<p>Пусть число вершин графа равно <span class="arithmatex">\(n\)</span> ; тогда <u>матрица смежности (adjacency matrix)</u> использует матрицу размера <span class="arithmatex">\(n \times n\)</span> для представления графа, где каждая строка и каждый столбец соответствуют вершине, а элементы матрицы показывают наличие или отсутствие ребра.</p>
|
||||
<p>Как показано на рисунке 9-5, обозначим матрицу смежности через <span class="arithmatex">\(M\)</span> , а список вершин через <span class="arithmatex">\(V\)</span> ; тогда элемент матрицы <span class="arithmatex">\(M[i, j] = 1\)</span> означает наличие ребра между вершинами <span class="arithmatex">\(V[i]\)</span> и <span class="arithmatex">\(V[j]\)</span> , а элемент <span class="arithmatex">\(M[i, j] = 0\)</span> означает отсутствие ребра.</p>
|
||||
<p><img alt="Представление графа матрицей смежности" class="animation-figure" src="../graph.assets/adjacency_matrix.png" /></p>
|
||||
<p align="center"> Рисунок 9-5 Представление графа матрицей смежности </p>
|
||||
|
||||
<p>Матрица смежности обладает следующими особенностями.</p>
|
||||
<ul>
|
||||
<li>В простом графе вершина не может соединяться сама с собой, поэтому элементы на главной диагонали матрицы смежности не имеют смысла.</li>
|
||||
<li>Для неориентированного графа ребра в двух направлениях эквивалентны, поэтому матрица смежности симметрична относительно главной диагонали.</li>
|
||||
<li>Если заменить в матрице смежности значения <span class="arithmatex">\(1\)</span> и <span class="arithmatex">\(0\)</span> на веса, то можно представить и взвешенный граф.</li>
|
||||
<li>В простом графе вершина не может соединяться сама с собой, поэтому элементы на главной диагонали матрицы смежности не имеют значения.</li>
|
||||
<li>Для неориентированного графа ребра в обоих направлениях эквивалентны, поэтому матрица смежности симметрична относительно главной диагонали.</li>
|
||||
<li>Если заменить в матрице смежности значения <span class="arithmatex">\(1\)</span> и <span class="arithmatex">\(0\)</span> на веса, то можно представить взвешенный граф.</li>
|
||||
</ul>
|
||||
<p>При представлении графа матрицей смежности мы можем напрямую обращаться к элементам матрицы, чтобы получить информацию о ребрах, поэтому операции добавления, удаления, поиска и изменения обладают высокой эффективностью, равной <span class="arithmatex">\(O(1)\)</span> . Однако пространственная сложность матрицы равна <span class="arithmatex">\(O(n^2)\)</span> , поэтому она занимает заметный объем памяти.</p>
|
||||
<p>При представлении графа матрицей смежности можно напрямую обращаться к элементам матрицы и получать сведения о ребрах, поэтому операции добавления, удаления, поиска и изменения обладают высокой эффективностью и выполняются за <span class="arithmatex">\(O(1)\)</span> . Однако пространственная сложность матрицы составляет <span class="arithmatex">\(O(n^2)\)</span> , поэтому она требует значительных затрат памяти.</p>
|
||||
<h3 id="2">2. Список смежности<a class="headerlink" href="#2" title="Permanent link">¶</a></h3>
|
||||
<p><u>Список смежности (adjacency list)</u> использует <span class="arithmatex">\(n\)</span> связанных списков для представления графа, где узлы списка обозначают вершины. <span class="arithmatex">\(i\)</span>-й список соответствует вершине <span class="arithmatex">\(i\)</span> и хранит все вершины, смежные с ней, то есть все вершины, соединенные с этой вершиной. На рисунке 9-6 показан пример графа, представленного списком смежности.</p>
|
||||
<p><u>Список смежности (adjacency list)</u> использует <span class="arithmatex">\(n\)</span> списков для представления графа, где узлы списка обозначают вершины. <span class="arithmatex">\(i\)</span>-й список соответствует вершине <span class="arithmatex">\(i\)</span> и хранит все смежные с ней вершины, то есть все вершины, соединенные с данной вершиной. На рисунке 9-6 показан пример графа, представленного списком смежности.</p>
|
||||
<p><img alt="Представление графа списком смежности" class="animation-figure" src="../graph.assets/adjacency_list.png" /></p>
|
||||
<p align="center"> Рисунок 9-6 Представление графа списком смежности </p>
|
||||
|
||||
<p>Список смежности хранит только реально существующие ребра, а общее число ребер обычно значительно меньше <span class="arithmatex">\(n^2\)</span> , поэтому этот способ существенно экономит пространство. Однако для поиска ребра в списке смежности нужно проходить по списку, поэтому по времени он уступает матрице смежности.</p>
|
||||
<p>Если посмотреть на рисунок 9-6, можно заметить, что <strong>структура списка смежности очень похожа на "метод цепочек" в хеш-таблице, поэтому для оптимизации эффективности здесь можно использовать сходные идеи</strong>. Например, когда список становится слишком длинным, его можно преобразовать в AVL-дерево или красно-черное дерево, чтобы улучшить временную сложность с <span class="arithmatex">\(O(n)\)</span> до <span class="arithmatex">\(O(\log n)\)</span> ; можно также превратить его в хеш-таблицу и снизить сложность до <span class="arithmatex">\(O(1)\)</span> .</p>
|
||||
<p>Список смежности хранит только реально существующие ребра, а общее число ребер обычно значительно меньше <span class="arithmatex">\(n^2\)</span> , поэтому он лучше экономит память. Однако для поиска ребра в списке смежности требуется обходить список, поэтому по времени он уступает матрице смежности.</p>
|
||||
<p>Если посмотреть на рисунок 9-6, можно заметить, что <strong>структура списка смежности очень похожа на цепную адресацию в хеш-таблицах, поэтому здесь можно использовать похожие методы оптимизации эффективности</strong>. Например, если список слишком длинный, его можно преобразовать в AVL-дерево или красно-черное дерево, чтобы снизить временную сложность с <span class="arithmatex">\(O(n)\)</span> до <span class="arithmatex">\(O(\log n)\)</span> ; также список можно преобразовать в хеш-таблицу, чтобы довести временную сложность до <span class="arithmatex">\(O(1)\)</span> .</p>
|
||||
<h2 id="913">9.1.3 Типичные применения графов<a class="headerlink" href="#913" title="Permanent link">¶</a></h2>
|
||||
<p>Как показано в таблице 9-1, многие реальные системы можно моделировать графами, а соответствующие задачи затем сводить к задачам вычислений на графах.</p>
|
||||
<p>Как показано в таблице 9-1, многие реальные системы можно моделировать с помощью графов, а соответствующие задачи затем сводить к задачам вычислений на графах.</p>
|
||||
<p align="center"> Таблица 9-1 Распространенные графы в реальной жизни </p>
|
||||
|
||||
<div class="center-table">
|
||||
@@ -4518,7 +4518,7 @@ G & = \{ V, E \} \newline
|
||||
<tr>
|
||||
<td>Линии метро</td>
|
||||
<td>Станция</td>
|
||||
<td>Связность между станциями</td>
|
||||
<td>Связь между станциями</td>
|
||||
<td>Рекомендация кратчайшего маршрута</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -4576,7 +4576,7 @@ aria-label="Нижний колонтитул"
|
||||
<a
|
||||
href="../graph_operations/"
|
||||
class="md-footer__link md-footer__link--next"
|
||||
aria-label="Вперед: 9.2 Базовые операции над графами"
|
||||
aria-label="Вперед: 9.2 Базовые операции графа"
|
||||
rel="next"
|
||||
>
|
||||
<div class="md-footer__title">
|
||||
@@ -4584,7 +4584,7 @@ aria-label="Нижний колонтитул"
|
||||
Вперед
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
9.2 Базовые операции над графами
|
||||
9.2 Базовые операции графа
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
Reference in New Issue
Block a user