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
Специальные понятия, необходимые для изложения конкретного материала, будут даны в соответствующих главах.
143
143
144
+
\section{Графы и линейная алгебра}
145
+
146
+
В данной главе мы рассмотрим некоторые связи\footnote{Связь между графами и линейной алгеброй --- обширная область, в которой можно даже выделить отдельные направления, такие как спектральная теория графов. С точки зрения практики данная связь также подмечена давно и более полно с ней сожно ознакомиться, например, в работах~\cite{doi:10.1137/1.9780898719918, Davis2018Algorithm9S}. Кроме этого, много полезной информации можно найти на сайте \url{https://graphblas.github.io/GraphBLAS-Pointers/}.} между графами и операциями над ними и матрицами и операциями над матрицами.
147
+
148
+
Матрицы --- рёбра. Операции над матрицами --- операции над рёбрами.
149
+
150
+
151
+
Носитель структуры для матриц сложно связан с тем, откуда веса на рёбрах графа.
152
+
153
+
Про умножение. Конкатенация рёбер, выбор из нескольких возможных вариантов: как раз две операции в полукольце. Красивая картинка про то, как умножение матриц работает с рёбрами.
154
+
155
+
Про Кронекера и произведение графов.
156
+
144
157
\section{Задачи поиска путей}
145
158
146
159
Одна из классических задач анализа графов --- это задача поиска путей между вершинами с различными ограничениями.
Copy file name to clipboardExpand all lines: tex/LinearAlgebra.tex
+7-1Lines changed: 7 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -219,7 +219,7 @@ \section{Полукольцо}
219
219
\end{definition}
220
220
221
221
\begin{example}\label{exmpl:semiring}
222
-
Рассмотрим пример полукольца, а заодно покажем, что левая и правая дистрибутивность могут существовать независимо для некоммутативного умножения\footnote{Хороший пример того, почему левую и правую дистрибутивнойть в случае некоммутативного умножения нужно проверять независимо (правда, для колец), приведён Николаем Александровичем Вавмловым в книге ``Конкретная теория колец'' на странице 6~\cite{VavilovRings}.}.
222
+
Рассмотрим пример полукольца, а заодно покажем, что левая и правая дистрибутивность могут существовать независимо для некоммутативного умножения\footnote{Хороший пример того, почему левую и правую дистрибутивнойть в случае некоммутативного умножения нужно проверять независимо (правда, для колец), приведён Николаем Александровичем Вавиловым в книге ``Конкретная теория колец'' на странице 6~\cite{VavilovRings}.}.
223
223
224
224
В качестве $R$ возьмём множество множеств строк конечной длины над некоторым алфавитом $\Sigma$. В качестве сложения возьмём теоретико-множественное объединение: $\oplus\equiv\cup$. Нейтральный элемент по сложению --- это пустое множество ($\varnothing$).
225
225
В качесве умножения возьмём конкатенацию множеств ($\otimes\equiv\odot$) и оперделим её следующим образом:
@@ -558,6 +558,12 @@ \section{Матрицы и вектора}
558
558
559
559
\end{definition}
560
560
561
+
\begin{note}\label{note:KronIsNotCommutative}
562
+
Отметим, что произведение Кронекера не является коммутативным.
563
+
При этом всегда существуют две матрицы перестоновок $P$ и $Q$ такие, что $A \otimes B = P(B \otimes A)Q$.
Copy file name to clipboardExpand all lines: tex/TensorProduct.tex
+1-56Lines changed: 1 addition & 56 deletions
Original file line number
Diff line number
Diff line change
@@ -60,61 +60,6 @@ \section{Рекурсивные автоматы и сети}
60
60
\section{Тензорное произведение}
61
61
\label{section2}
62
62
63
-
Тензорное произведение матриц или произведение Кронекера --- это бинарная операция, обозначаемая $\otimes$ и определяемая следующим образом.
64
-
65
-
\begin{definition}
66
-
Пусть даны две матрицы: $A$ размера $m\times n$ и $B$ размера $p\times q$.
67
-
Произведение Кронекера или тензорное произведение матриц $A$ и $B$ --- это блочная матрица $C$ размера $mp \times nq$, вычисляемая следующим образом:
68
-
$$
69
-
C = A \otimes B =
70
-
\begin{pmatrix}
71
-
A_{0,0}B & \cdots & A_{0,n-1}B \\
72
-
\vdots & \ddots & \vdots\\
73
-
A_{m-1,0}B & \cdots & A_{m-1,n-1}B
74
-
\end{pmatrix}
75
-
$$
76
-
\end{definition}
77
-
78
-
%\newcommand{\examplemtrx}
79
-
%{
80
-
%\begin{pmatrix}
81
-
%5 & 6 & 7 & 8 \\
82
-
%9 & 10 & 11 & 12 \\
83
-
%13 & 14 & 15 & 16
84
-
%\end{pmatrix}
85
-
%}
86
-
87
-
\begin{example}
88
-
\begin{align}
89
-
\begin{pmatrix}
90
-
1 & 2 \\
91
-
3 & 4
92
-
\end{pmatrix}
93
-
\otimes
94
-
\examplemtrx &=
95
-
\begin{pmatrix}
96
-
1\examplemtrx & 2\examplemtrx\\
97
-
3\examplemtrx & 4\examplemtrx
98
-
\end{pmatrix}
99
-
=\notag\\
100
-
&=
101
-
\left(\begin{array}{c c c c | c c c c}
102
-
5 & 6 & 7 & 8 & 10 & 12 & 14 & 16 \\
103
-
9 & 10 & 11 & 12 & 18 & 20 & 22 & 24 \\
104
-
13 & 14 & 15 & 16 & 26 & 28 & 30 & 32 \\
105
-
\hline
106
-
15 & 18 & 21 & 24 & 20 & 24 & 28 & 32 \\
107
-
27 & 30 & 33 & 36 & 36 & 40 & 44 & 48 \\
108
-
39 & 42 & 45 & 48 & 52 & 56 & 60 & 64
109
-
\end{array}\right)
110
-
\end{align}
111
-
\end{example}
112
-
113
-
Заметим, что для определения тензорного произведения матриц достаточно определить операцию умножения на элементах исходных матриц.
114
-
Также отметим, что произведение Кронекера не является коммутативным.
115
-
При этом всегда существуют две матрицы перестоновок $P$ и $Q$ такие, что $A \otimes B = P(B \otimes A)Q$.
116
-
Это свойство потребуется нам в дальнейшем.
117
-
118
63
Теперь перейдём к графам.
119
64
Сперва дадим классическое определение тензорного произведения двух неориентированных графов.
120
65
@@ -221,7 +166,7 @@ \section{Алгоритм}
221
166
Идея алгоритма основана на обобщении пересечения двух конечных автоматов до пересечения рекурсивного автомата, построенного по грамматике, со входным графом.
222
167
223
168
Пересечение двух конечных автоматов --- тензорное произведение соответствующих графов.
224
-
Пересечение языков коммутативно, тензорное произведение нет, но, как было сказано в разделе~\ref{section2}, существует решение этой проблемы.
169
+
Пересечение языков коммутативно, тензорное произведение нет, но, как было сказано в замечании~\ref{note:KronIsNotCommutative}, существует решение этой проблемы.
225
170
226
171
Будем рассматривать два конечных автомата: одни получан из входного графа, второй из грамматики.
227
172
Можно найти их пересечение, вычислив тензорное произведение матриц смежности соответствующих графов.
0 commit comments