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/part_01_Prep/chapter_02_SetTheory/01_BasicDefinitions.tex
+1Lines changed: 1 addition & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,7 @@ \section{Основные определения}
10
10
\end{definition}
11
11
12
12
\begin{definition}[Индексация множества]
13
+
\label{def:SetIndexing}
13
14
Пусть дано множество $M$, такое что $|M| = n$.
14
15
Будем говорить, что множество $M$\emph{проиндексировано} если задано биективное отображение $g$ между отрезком натурального ряда $[0\ldots n-1]$ и $M$.
15
16
Если $g(i) = m$, то $i$ будем называть \emph{индексом} или \emph{номером} $m$.
Copy file name to clipboardExpand all lines: tex/part_01_Prep/chapter_03_GraphTheoryIntro/01_BasicDefinitions.tex
+55-7Lines changed: 55 additions & 7 deletions
Original file line number
Diff line number
Diff line change
@@ -35,8 +35,7 @@ \section{Основные определения}
35
35
В дальнейшем речь будет идти о конечных ориентированных помеченных графах.
36
36
Мы будем использовать термин \emph{граф} подразумевая именно конечный ориентированный помеченный граф, если только не оговорено противное.
37
37
38
-
Также мы будем считать, что все вершины занумерованы подряд с нуля.
39
-
То есть можно считать, что $V$~--- это отрезок $[0\rng |V| - 1]$, где $|V|$~--- мощность множества $V$.
38
+
Также мы будем считать, что множество вершин $V$ проиндексировано\sidenote{Более того, часто мы будем считать, что множество врешин~--- это просто отрезок $[0\rng |V|-1]$} (см. определение~\ref{def:SetIndexing}).
Пусть дан помеченный граф (см. рисунок \ref{gr:graph3}).
131
131
В данном случае $L = \{a,b\}$.
132
132
Так как мы не будем в данном примере запрещать параллельные рёбра, то ячейки матрицы будут содержать множества меток: метки для всех параллельных рёбер между парой вершин.
Во-вторых, матрица смежности редко нужна <<сама по себе>>.
192
192
Как правило, над ней необходимо выполнять какие-либо операции в рамках решения какой-то задачи.
193
-
Более того, часто операции над элементами матрицы нужны просто для того, чтобы аккуратно определить, как именно сохраняется информация о метках параллельных рёбер.
193
+
Более того, часто операции над элементами матрицы нужны просто для того, чтобы аккуратно определить, как именно сохраняется информация о метках параллельных рёбер\sidenote{В примере~\ref{exmpl:matrix_for_labelled_graph} мы решили эту проблему используя множества, но это не всегда уместно.}.
194
194
Дабы обеспечить эту возможность, мы будем либо сразу говорить, что матрица определена над какой-либо алгебраической структурой\sidenote{
195
195
Конкретный тип структуры будет зависеть от решаемой задачи. Где-то хватит моноида, где-то потребуется полукольцо, а где-то ещё более сложная структура.
196
196
}, использующей в качестве носителя $\Opt{L}$, либо определять соответствующую структуру отдельно\sidenote{
197
197
Такой подход может быть удобен с точки рения разделения данных и операций над ними.
198
198
В частности, мы можем опеределить несколько структур с одинаковым носителем и разными операциями.
199
199
}.
200
200
201
-
Нам будет удобно пользоваться первым вариантом, так как он позволяет естественным образом получить представление для параллельных рёбер.
202
-
В итоге мы получим следующее определение.
201
+
Для определения обобщённой матрицы смежности нам будет удобно пользоваться первым вариантом, так как он позволяет естественным образом получить представление для параллельных рёбер\sidenote{Хотя при решении прикладных задач чаще используется второй, так как во многих языках программирования удобнее разделить стуктуру данных и функции работы с ней.}.
203
202
204
203
\begin{definition}[Матрица смежности]
205
-
\emph{Матрица смежности} графа $\mbfscrG = \langle V, E, L \rangle$~--- это квадратная матрица $M$ размера $n \times n$, где $|V| = n$, построенная над коммутативным моноидом $\BbbG = (\Opt{L}, \circ)$.
204
+
\emph{Матрица смежности} графа $\mbfscrG = \langle V, E, L \rangle$~--- это квадратная матрица $M$ размера $n \times n$, где $|V| = n$, построенная над коммутативным\sidenote{Коммутативность нам нужна для того, чтобы при построении матрицы не думать, в каком порядке добавлять параллельные рёбра.} моноидом $\BbbG = (\Opt{L}, \circ)$.
206
205
При этом \[M[i,j] = \underset{{(i, l, j) \in E}}{\bigcirc} l\], где $\underset{\varnothing}{\bigcirc} = \Bbbzero$ и $\Bbbzero$~--- нейтральный элемент относительно $\circ$.
207
206
\end{definition}
208
207
209
208
Заметим, что наше определение матрицы смежности требует некоторой аккуратности при соотнесении с ним данных выше примеров.
210
209
Во-первых, в нашем определении присутствует моноид, который в примерах не фигурировал вовсе.
211
-
Во-вторых, выбор специального значения и способ представления информации о параллельных рёбрах в примерах выбирался исходя из некоторой интуитивной <<естественности>>, но в реальности нам необходимо аккуратно согласовывать даный выбор с решаемой задачей и соответствующими алгебраическими структурами.
210
+
Во-вторых, выбор специального значения и способ представления информации о параллельных рёбрах в примерах выбирался исходя из некоторой интуитивной <<естественности>>, но в реальности нам необходимо аккуратно согласовывать данный выбор с решаемой задачей и соответствующими алгебраическими структурами.
212
211
Таким образом, свойства структуры $\BbbG$, а значит и детали её построения, зависят от задачи, в рамках которой рассматривается граф.
213
212
А значит, и матрица смежности конструируется исходя из задачи.
214
213
214
+
В ряде случаев граф удобно представлять не одной матрицей смежности, а набором матриц.
215
+
Рассмотрим частный случай, в котором матрица смежности строится над моноидом $\BbbG = (\mathcal{P}(L), \cup)$, где $\mathcal{P}(L)$~--- множество всех подмножеств $L$, операция $\cup$~--- объединение множеств, а $\Bbbzero = \varnothing$.
216
+
Иными словами, ячейка $M[i,j]$ содержит множество всех меток рёбер, соединяющих вершину $i$ с вершиной $j$.
217
+
Именно такую матрицу мы построили в примере~\ref{exmpl:matrix_for_labelled_graph}.
218
+
219
+
Далее, для каждого элемента $l \in L$ можно построить отдельную булеву матрицу, несущую информацию о том, существует ли в графе ребро с меткой $l$.
\emph{Булевой декомпозицией} матрицы смежности $M$ графа $\mbfscrG = \langle V, E, L \rangle$ (построенной над $\mathcal{P}(L)$) называется семейство булевых матриц $\mathcal{M} = \{M_l \mid l \in L \}$, где каждая $M_l$ размера $|V| \times |V|$ определена как
224
+
\[ M_l[i,j] = \begin{cases}
225
+
1, & \text{если } l \in M[i,j] \\
226
+
0, & \text{иначе}.
227
+
\end{cases} \]
228
+
\end{definition}
229
+
230
+
Иными словами, $M_l[i,j] = 1$ тогда и только тогда, когда в исходном графе существует ребро $(i,l,j)$.
231
+
232
+
\begin{example}[Булева декомпозиция для матрицы из примера~\ref{exmpl:matrix_for_labelled_graph}]
233
+
\label{exmpl:bool_decomposition}
234
+
Напомним матрицу смежности $M$ из примера~\ref{exmpl:matrix_for_labelled_graph}:
235
+
\[
236
+
\begin{pmatrix}
237
+
\varnothing & \{a\} & \varnothing & \varnothing\\
238
+
\varnothing & \varnothing & \{a\} & \varnothing\\
239
+
\{a\} & \varnothing & \varnothing & \{a,b\}\\
240
+
\varnothing & \varnothing & \{b\} & \varnothing
241
+
\end{pmatrix}.
242
+
\]
243
+
244
+
Так как $L = \{a, b\}$, булева декомпозиция состоит из двух матриц~--- $M_a$ и $M_b$:
245
+
\[
246
+
M_a = \begin{pmatrix}
247
+
0 & 1 & 0 & 0 \\
248
+
0 & 0 & 1 & 0 \\
249
+
1 & 0 & 0 & 1 \\
250
+
0 & 0 & 0 & 0
251
+
\end{pmatrix},
252
+
\quad
253
+
M_b = \begin{pmatrix}
254
+
0 & 0 & 0 & 0 \\
255
+
0 & 0 & 0 & 0 \\
256
+
0 & 0 & 0 & 1 \\
257
+
0 & 0 & 1 & 0
258
+
\end{pmatrix}.
259
+
\]
260
+
То есть $\mathcal{M}_G = \{M_a, M_b\}$.
261
+
\end{example}
262
+
215
263
Как итог, уже можно заметить, что введение алгебраических структур как абстракции позволяет достаточно унифицированным образом смотреть на различные графы и их матрицы смежности.
216
264
Далее мы увидим, что данный путь позволит решать унифицированным образом достаточно широкий круг задач, связанных с анализом путей в графах.
217
265
Но сперва мы рассмотрим некоторые классические задачи анализа графов, которые понадобятся нам далее, и покажем их связь с линейной алгеброй.
0 commit comments