You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: tex/GraphTheoryIntro.tex
+42-6Lines changed: 42 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
-
\chapter{Общие сведения теории графов}\label{chpt:GraphTheoryIntro}
1
+
\chapter{Некоторые сведения из теории графов}\label{chpt:GraphTheoryIntro}
2
2
3
-
В данном разделе мы дадим определения базовым понятиям из теории графов, рассмотрим несколько классических задач из области анализа графов и алгоритмы их решения.
3
+
В данном разделе мы дадим определения базовым понятиям из теории графов, рассмотрим несколько классических задач из области анализа графов и алгоритмы их решения. Кроме этого, поговорим о связи между линейной алгеброй и неокторыми задачами анализа графов.
@@ -145,10 +145,46 @@ \section{Графы и линейная алгебра}
145
145
146
146
В данной главе мы рассмотрим некоторые связи\footnote{Связь между графами и линейной алгеброй --- обширная область, в которой можно даже выделить отдельные направления, такие как спектральная теория графов. С точки зрения практики данная связь также подмечена давно и более полно с ней сожно ознакомиться, например, в работах~\cite{doi:10.1137/1.9780898719918, Davis2018Algorithm9S}. Кроме этого, много полезной информации можно найти на сайте \url{https://graphblas.github.io/GraphBLAS-Pointers/}.} между графами и операциями над ними и матрицами и операциями над матрицами.
147
147
148
-
Матрицы --- рёбра. Операции над матрицами --- операции над рёбрами.
148
+
Как мы видели в пердыдущем разделе, достаточно естественное представление графа --- это его матрица смежности. Заметим, что говоря о графе, как о графе с весами из некоторого множества на рёбрах, и о его матрице смежности, как о матрице над некоторой структурой, нужно быть аккуратным.
149
149
150
+
С одной стороны, когда мы говорим о весах на рёбрах, мы, как правило, ожидаем, что множество из которого берутся веса снабжено и некоторыми операциями. Например, если мы хотим трактовать веса как расстояния, то мы ожидаем, что веса можно складывать. Таким образом, веса, очевидно должны рассматриваться не просто как элементы какого-то множества, но как элементы носителья некоторой алгебраической структуры.
150
151
151
-
Носитель структуры для матриц сложно связан с тем, откуда веса на рёбрах графа.
152
+
С другой стороны, алгебраическая структура, задающая веса в графе, и алгебраическая структура, над которой строится матрица смежности данного графа --- не одно и то же. Проще всего это заметить в примере~\ref{example:apspGraph}. Веса на рёбрах в данном случае из $\mathbb{R}$\footnote{В некоторых случаях логично даже требовать, чтобы веса были из $\mathbb{R} \setminus \{0\}$.}, в то время как носитель структуры, над которой построена матрица, содержит ещё и элеиент $\infty$, то есть носитель уже $\mathbb{R}\cup\{\infty\}$. Ещё более запутанная ситуация с примером~\ref{example:diGraph}. Матрица смежности содержит булевы значения, в то время как граф, вообще говоря, весов не рёбрах не имеет.
153
+
154
+
Так как же связаны алгебраическая структура, над которой строится матрица смежности, и структура, определяющая веса на рёбрах?
155
+
156
+
Первое, что необходимо уяснить --- это то, что обе структуры зависят от того, в каком контексте мы рассматриваем граф, какую задачу мы собираемся решать. Это естественным образом накладывает ограничения и на носитель и на операции. Например, если мы собираемся обсуждать задачу поиска кратчайших путей, то один из логичных вопросов, которые надо решить, допускаем ли мы отрицательные веса? Далее, раз речь идет о поиске кратчайшего (наиментшего) пути, то нам нобходима операция взятия минимума. Далее, нам необходимо уметь получать длину пути на основе длин его состовляющих, а значит нам нужна операция сложения весов.
157
+
158
+
Интуитивно мы ожидаем, что в алгебраической структуре будут те же самые операции (по крайней мере по своему смыслу), что и в структуре для весов. Действительно, задачу мы решаем одну и ту же. Однако аккуратное рассмотрение данного вопроса приводит нас к тому, что формально операции будут всё же разные. Произойдёт это по следующей причине. В графе информация об отсутсвии ребра представдена (в каком-то смысле) неявно, однако в матрице смежности все ячейки должны содержать какие-то явные значения. Логичное решение --- расширить множество весов каким-то специальным значением. Так обычно и поступают. Но после этого надо доопределить действие операций над весами до действия на новом множестве (фактически, задать поведение для нового элемента).
159
+
160
+
В большинстве задач нам будут требоваться две опреации, появляющиеся из следующих соображений. Во-первых, изначально у нас есть только рёбра, а дальше мы будем ``собирать'' путь из частей: сперва из рёбер, затем и из других путей. Элементарный шаг здесь --- это соединить две часть пути с общей вершиной в новый путь. При этом неодходимо по весам двух подпутей получить вес нового пути. За это будет отвечать операция $\otimes$ на множестве весов\footnote{При первом рассмотрении такой выбор кажется контринтуитивным. Действительно, ведь при соединении путей мы как бы ``складываем'' их веса. Но при более детальном анализе поведения этой опреации, в частности, относительно нейтрального элемента, становится понятно, что она ведёт себя очень похоже на умножение. Вероятно, стоит обратить внимение на операцию конкатенации, которая, с одной стороны, ``делает то, что нам нужно'', а с другой, (и неспроста) часто обозначается $\cdot$.}. Во-вторых, нам необходимо как-то обрабатывать ситуации, когда между двумя вершинами существует несколько различных путей. Иными словами, необходимо уметь агрегировать информацию по множеству путей. И за это будет отвечать операция $\oplus$. Таким образом, когда мы говорим о графе, достаточно естественным образом появляется структура $R=(S,\oplus,\otimes)$.
161
+
162
+
\begin{example} Построим такую структуру для ориентированного графа без весов и задачи достижисмости. В качестве $S$ можно взять множество с одним элементом, скажем $s$, и считать, что все рёбра помечены им\footnote{А раз все рёбра имеют одинаковый заранее известный вес, то можно его и не писать для каждого ребра при задании графа. Поэтому привычное нам изображение получается достаточно логичным.}.
163
+
164
+
Какое поведение мы ожидаем от $\otimes$? Нас интересует только факт наличия пути, а наличие метки $s$ ровно это обозначает. Таким образом, если мы собираем путь из двух рёбер, то мы получаем путь с весом $s$. Иными словами, $s \otimes s = s$.
165
+
166
+
Из аналогичных соображений зададим поведение операции $\otimes$. Сколько бы путей не существовало между двумя вершинами, на важно знать, существует ли хотя бы один или не существует ниодного. То есть $s \oplus s = s$.
167
+
168
+
В результате получаем, что $R=(\{s\}, \oplus, \otimes)$, где $s \oplus s = s, s \otimes s = s$.
169
+
170
+
Теперь перейдём к матрице смежности. Так как нам необходмо обозначать факт отсутствия пути, то нам потребуется ещё один элемент. Скажем, $n$. Таким образом, носитель у нас теперь состоит из двух элементов: $S' = \{s,n\}$. Посмотрим, как можно доопределить поведение операий для того, чтобы они корректно обрабатывали новое значение на входе.
171
+
172
+
Вот этот переход не очевиден.
173
+
174
+
Умножение должно обрабатывать
175
+
\begin{itemize}
176
+
\item$s \otimes s = s$ : если существует путь $i \pi j$ и путь $j \pi k$, то существует путь $i \pi k$.
177
+
\item$s \otimes n = n$ : если существует путь $i \pi j$ и не существует пути $j \pi k$, то не существует и пути $i \pi k$.
178
+
\item$n \otimes s = n$ : если не существует пути $i \pi j$ и существует путь $j \pi k$, то не существует и пути $i \pi k$.
179
+
\item$n \otimes n = n$ : если не существует пути $i \pi j$ и не существует пути $j \pi k$, то не существует и пути $i \pi k$.
180
+
\end{itemize}
181
+
Предположим, что мы решаем задачу достижимости, а заначит нас интересует только ф
182
+
183
+
Нам просто повезло, что получившаяся структура изоморфна булеву полукольцу.
184
+
185
+
\end{example}
186
+
187
+
Матрицы --- рёбра. Операции над матрицами --- операции над рёбрами.
152
188
153
189
Про умножение. Конкатенация рёбер, выбор из нескольких возможных вариантов: как раз две операции в полукольце. Красивая картинка про то, как умножение матриц работает с рёбрами.
0 commit comments