Skip to content

Commit 83ddbf9

Browse files
committed
Чуть более аккуратное определение матрицы смежности. Унификация примеров под это определение.
1 parent 38207a5 commit 83ddbf9

File tree

2 files changed

+63
-40
lines changed

2 files changed

+63
-40
lines changed

tex/GraphTheoryIntro.tex

Lines changed: 57 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,15 @@ \chapter{Некоторые сведения из теории графов}\lab
66
\section{Основные определения}
77

88
\begin{definition}
9-
\textit{Граф} $\mathcal{G} = \langle V, E, L \rangle$, где $V$ --- конечное множество вершин, $E$ --- конечное множество рёбер, т.ч. $E \subseteq V \times L \times V$, $L$ --- конечное множество меток на рёбрах.
9+
\textit{Помеченный ориентированный граф} $\mathcal{G} = \langle V, E, L \rangle$, где $V$ --- конечное множество вершин, $E$ --- конечное множество рёбер, т.ч. $E \subseteq V \times L \times V$, $L$ --- конечное множество меток на рёбрах. В некоторых случаях метки называют \textit{весами}\footnote{Весами метки называют ,как правило, тогда, когда они берутся из какого-либо поля, например $\mathbb{R}$ или $\mathbb{N}$.} и тогда говорят о \textit{взвешенном} графе.
1010
\end{definition}
1111

12+
13+
\begin{definition}
14+
В случае, если для любого ребра $(u,l,v)$ в графе также содержится ребро $(v,l,u)$, говорят, что граф \textit{неориентированный}.
15+
\end{definition}
16+
17+
1218
В дальнейшем речь будет идти о конечных ориентированных помеченных графах.
1319
Мы будем использовать термин \textit{граф} подразумевая именно конечный ориентированный помеченный граф, если только не оговорено противное.
1420

@@ -29,10 +35,6 @@ \section{Основные определения}
2935
\end{center}
3036
\end{example}
3137

32-
\begin{definition}
33-
\textit{Ребро} ориентированного помеченного графа $\mathcal{G} = \langle V, E, L \rangle$ это упорядоченная тройка $e = (v_i,l,v_j) \in V \times L \times V$.
34-
\end{definition}
35-
3638
\begin{example}[Пример рёбер графа]
3739
$(0,a,1)$ и $(3,b,2)$ --- это рёбра графа $\mathcal{G}_1$. При этом, $(3,b,2)$ $(2,b,3)$ --- это разные рёбра.
3840
\end{example}
@@ -62,66 +64,83 @@ \section{Основные определения}
6264
$(v_i,v_j) \in P \iff \exists v_i \pi v_j$.
6365
\end{definition}
6466

65-
Отметим, что рефлексивность этого отношения часто зависит от контекста.
66-
В некоторых задачах по-умолчанию $(v_i,v_i) \notin P$, а чтобы это было верно, требуется явное наличие ребра-петли.
67+
Отметим, что в некоторых задачах удобно считать по-умолчанию, что $(v_i,v_i) \in P$, однако наше определение такого не допускает. Исправить ситуацию можно явно добавив петли $(v_i,l,v_i)$ для всех вершин.
6768

6869
Один из способов задать граф --- это задать его \textit{матрицу смежности}.
6970

7071
\begin{definition}
71-
\textit{Матрица смежности} графа $\mathcal{G}=\langle V,E,L \rangle$ --- это квадратная матрица $M$ размера $n \times n$, где $|V| = n$ и ячейки которой содержат множества.
72-
При этом $l \in M[i,j] \iff \exists e = (i,l,j) \in E$.
73-
\end{definition}
72+
\textit{Матрица смежности} графа $\mathcal{G}=\langle V,E,L \rangle$ --- это квадратная матрица $M$ размера $n \times n$, где $|V| = n$, построенная над алгебраической структурой $\mathbb{G} = (S,\circ\colon S \times S \to S)$, которая конструируется следующим образом.
7473

75-
Заметим, что наше определение матрицы смежности отличается от классического, в котором матрица отражает лишь факт наличия хотя бы одного ребра и, соответственно, является булевой. То есть $M[i,j] = 1 \iff \exists e = (i,\_,j) \in E$.
74+
\begin{enumerate}
75+
\item $L \subseteq S$.
76+
\item $\circ$ --- коммутативная бинарная операция.
77+
\item Существует $ \mathbb{0} \in (S \setminus L)$ --- нейтральный элемент относительно $\circ$.
78+
\end{enumerate}
7679

80+
При этом $M[i,j] = \bigcirc_{(i,l,j) \in E}l$, где $\bigcirc_\varnothing = \mathbb{0}$.
81+
\end{definition}
7782

78-
Также можно встретить матрицы смежности, в ячейках которых всё же хранится некоторая информация, однако, в единственном экземпляре. То есть запрещены параллельные рёбра.
79-
Такой подход часто можно встретить в задачах о кратчайших путях: в этом случае в ячейке хранится расстояние между двумя вершинами.
80-
При этом, так как в качестве весов часто рассматривают произвольные (в том числе отрицательные) числа, то в задачах о кратчайших путях отдельно вводят значение ``бесконечность'' для обозначения ситуации, когда между двумя вершинами нет пути или его длина ещё не известна.
81-
Всё это приводит к тому, что \textit{матрица смежности} --- это обобщённое понятие, нежели конкретный специальный тип матриц.
82-
Данная конструкция даёт общее представление о том, как в матричном виде хранить различную информацию о смежности вершин в графе.
83+
Заметим, что наше определение матрицы смежности отличается от классического, в котором матрица является булевой и отражает лишь факт наличия хотя бы одного ребра и. То есть $M[i,j] = 1 \iff \exists e = (i,\_,j) \in E$.
8384

84-
\begin{example}[Пример матрицы смежности неориентированного графа]
85-
Неориентированный граф:
85+
\begin{example}[Пример матрицы смежности неориентированного графа]\label{exmpl:undirectedGraphMatrix}
86+
Пусть дан следующий неориентированный граф.
8687
\begin{center}
8788
\input{figures/graph/graph1.tex}
8889
\end{center}
8990

90-
И его матрица смежности:
91+
$\mathbb{G} = (S,\circ)$ в этом случае конструируется следующим образом. Во-первых, придётся предположить, что $L$ --- множество с одним элементом, скажем $s$, и считать, что все рёбра помечены им\footnote{А раз все рёбра имеют одинаковый заранее известный вес, то можно его и не писать для каждого ребра при задании графа. Поэтому привычное нам изображение получается достаточно логичным.}. Далее, $S = L \cup{\{n\}} = \{s,n\}$, где $n$ --- нейтральный элемент относительно $\circ$. Тогда $\circ$ можно определить поточечно следующим образом.
92+
\begin{itemize}
93+
\item $s \circ s = s$
94+
\item $s \circ n = n \circ s = s$
95+
\item $n \circ n = n$
96+
\end{itemize}
97+
98+
Таким образом, матрица смежности данного графа выглядит следующим образом:
99+
$$
100+
\begin{pmatrix}
101+
n & s & s & n \\
102+
s & n & s & n \\
103+
s & s & n & s \\
104+
n & n & s & n
105+
\end{pmatrix}
106+
$$
107+
, что может показаться несколько непривычным. Однако заметим, что построенная нами структура $\mathbb{G} = (\{s,n\}, \circ)$ изоморфна $\mathbb{G}' = (\{1,0\}, \vee)$. При переходе к $\mathbb{G}'$ мы получим привычную нам булеву матрицу смежности:
91108
$$
92109
\begin{pmatrix}
93-
1 & 1 & 1 & 0 \\
94-
1 & 1 & 1 & 0 \\
95-
1 & 1 & 1 & 1 \\
96-
0 & 0 & 1 & 1
110+
0 & 1 & 1 & 0 \\
111+
1 & 0 & 1 & 0 \\
112+
1 & 1 & 0 & 1 \\
113+
0 & 0 & 1 & 0
97114
\end{pmatrix}
98115
$$
116+
Заметим, что матрица смежности неориентированного графа всегда симметрична относительно главной диагонали.
99117
\end{example}
100118

101119
\begin{example}[Пример матрицы смежности ориентированного графа]\label{example:diGraph}
102-
Ориентированный граф:
120+
Дан ориентированный граф:
103121
\begin{center}
104122
\input{figures/graph/graph2.tex}
105123
\end{center}
106124

107-
И его матрица смежности:
125+
Построить его булеву матрицу смежности можно применив рассуждения из предыдущего примера (\ref{exmpl:undirectedGraphMatrix}) и выглядеть она будет следующим образом:
108126
$$
109127
\begin{pmatrix}
110-
1 & 1 & 0 & 0 \\
111-
0 & 1 & 1 & 0 \\
112-
1 & 0 & 1 & 1 \\
113-
0 & 0 & 1 & 1
128+
0 & 1 & 0 & 0 \\
129+
0 & 0 & 1 & 0 \\
130+
1 & 0 & 0 & 1 \\
131+
0 & 0 & 1 & 0
114132
\end{pmatrix}
115133
$$
116134
\end{example}
117135

118136
\begin{example}[Пример матрицы смежности помеченного графа]
119-
Помеченный граф:
137+
Пусть дан следующий помеченный граф.
120138
\begin{center}
121139
\input{figures/graph/graph3.tex}
122140
\end{center}
123141

124-
И его матрица смежности:
142+
В данном случае $L = \{\{a\},\{b\}\}$, а $\mathbb{G} = ( \{\{a\},\{b\},\{a,b\},\varnothing\} ,\cup)$, где $\varnothing$ --- нейтральный элемент.
143+
Тогда матрица матрица смежности исходного графа выглядит следующим образом:
125144
$$
126145
\begin{pmatrix}
127146
\varnothing & \{a\} & \varnothing & \varnothing \\
@@ -132,13 +151,17 @@ \section{Основные определения}
132151
$$
133152
\end{example}
134153

154+
Необходимо заметить, что свойства $\mathbb{G}$, а значит и детали её построения, зависят от задачи, в рамках которой рассматривается граф. В примерах выше мф строили $\mathbb{G}$ из некоторых общих соображений, не специфицируя решаемую задачу, стараясь получить ожидаемый результат. Далее мы рассмотрим пример, в котором видно, как решаемая задача влияет на построение $\mathbb{G}$.
155+
135156
\begin{example}[Пример матрицы смежности взвешенного графа]\label{example:apspGraph}
136-
Взвешенный граф для задачи о кратчайших путях:
157+
Пусть дан следующий взвешенный граф:
137158
\begin{center}
138159
\input{figures/graph/graph4.tex}
139160
\end{center}
140161

141-
И его матрица смежности (для задачи о кратчайших путях):
162+
Будем считать, что веса берутся из $\mathbb{R}$, а решаемая задача --- поиск кратчайших путей между вершинами. В таком случае естественно предположить, что для любой вершины $v_i$ существует петля $v_i,0,v_i$, хоть она явно и не изображена. Далее, $\mathbb{G} = ( \mathbb{R}\cup \{\infty\} , \min)$, где $\infty$ --- нейтральный элемент относительно операции $\min$.
163+
164+
В результате мы получим следующую матрицу смежности:
142165
$$
143166
\begin{pmatrix}
144167
0 & -1.4 & \infty & \infty \\
@@ -365,7 +388,7 @@ \section{APSP и произведение матриц}
365388

366389
%\section{Вопросы и задачи}
367390
%\begin{enumerate}
368-
% \item Реализуйте абстракцию полукльца, позволяющую конструировать полукольца с произвольными операциями.
391+
% \item Реализуйте абстракцию полукольца, позволяющую конструировать полукольца с произвольными операциями.
369392
% \item Реализуйте алгоритм произведения матриц над произвольным полукольцом. Используйте результат решения предыдущей задачи.
370393
% \item Используя результаты предыдущих задач, реализуйте алгоритм построения транзитивного замыкания через произведение матриц.
371394
% \item Используя результаты предыдущих задач, реализуйте алгоритм решения задачи APSP для ориентированного через произведение матриц.

tex/figures/graph/graph3.tex

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
\node[state] (q_2) at (T60.apex) {$2$};
1212
\node[state] (q_3) [right=1.5cm of q_2] {$3$};
1313
\path[->]
14-
(q_0) edge[left] node {a} (q_1)
15-
(q_1) edge[above] node {a} (q_2)
16-
(q_2) edge[below] node {a} (q_0)
17-
(q_2) edge[bend left = 20, above] node {a} (q_3)
18-
(q_2) edge[bend left = 60, above] node {b} (q_3)
19-
(q_3) edge[bend left, below] node {b} (q_2);
14+
(q_0) edge[left] node {$\{a\}$} (q_1)
15+
(q_1) edge[above] node {$\{a\}$} (q_2)
16+
(q_2) edge[below] node {$\{a\}$} (q_0)
17+
(q_2) edge[bend left = 15, above] node {$\{a\}$} (q_3)
18+
(q_2) edge[bend left = 65, above] node {$\{b\}$} (q_3)
19+
(q_3) edge[bend left, below] node {$\{b\}$} (q_2);
2020
\end{tikzpicture}

0 commit comments

Comments
 (0)