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/FormalLanguageConstrainedReachabilityLectureNotes.bib
+18Lines changed: 18 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1478,3 +1478,21 @@ @book{Courcelle2009
1478
1478
}
1479
1479
1480
1480
@INPROCEEDINGS{9286186, author={Elekes, Márton and Nagy, Attila and Sándor, Dávid and Antal, János Benjamin and Davis, Timothy A. and Szárnyas, Gábor}, booktitle={2020 IEEE High Performance Extreme Computing Conference (HPEC)}, title={A GraphBLAS solution to the SIGMOD 2014 Programming Contest using multi-source BFS}, year={2020}, volume={}, number={}, pages={1-7}, doi={10.1109/HPEC43674.2020.9286186}}
1481
+
1482
+
@inproceedings{10.1145/3315454.3329962,
1483
+
author = {Spampinato, Daniele G. and Sridhar, Upasana and Low, Tze Meng},
1484
+
title = {Linear Algebraic Depth-First Search},
1485
+
year = {2019},
1486
+
isbn = {9781450367172},
1487
+
publisher = {Association for Computing Machinery},
1488
+
address = {New York, NY, USA},
1489
+
url = {https://doi.org/10.1145/3315454.3329962},
1490
+
doi = {10.1145/3315454.3329962},
1491
+
abstract = {There is a recent push by a segment of the graph community to implement graph algorithms in the language of linear algebra. However, graph algorithms that depend on depth-first search (DFS) techniques are often highlighted as limitations of the linear algebraic approach as linear algebraic formulation of DFS algorithms are few, if any. This paper provides a linear algebraic approach for developing DFS graph algorithms and demonstrates its use for defining three classical DFS-based computations: Binary tree traversal, topological sort, and biconnected components.},
1492
+
booktitle = {Proceedings of the 6th ACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming},
Таким образом, уже можно заметить, что введение моноида как абстракции позволяет достаточно унифицированным образом смотреть на различные графы и их матрицы смежности. Далее мы увидим, что данный путь позволит решать унифицированным образом достаточно широкий круг задач, связанных с анализом путей в графах. Но сперва мы сформулируем различные варианты задачи поиска путей в графе. % Это необходимо для формулировки задач, на решение которых мы в конечном итоге нацелены.
177
177
178
+
178
179
\section{Обход графа в ширину}
179
180
180
-
Обход графа в ширину --- это одна из фундаментальных задач анализа графов, для решения которой существует соответствующий алгоритм, изложенный в классической литературе (см., например,~\cite{} или ~\cite{}).
181
+
Обход графа в ширину (Breadth-First Search, BFS) --- это одна из фундаментальных задач анализа графов, для решения которой существует соответствующий алгоритм, изложенный в классической литературе (подробнее, например, в~\cite{} или ~\cite{}).
182
+
Данный алгоритм является основой для многих алгоритмов поиска в графе.
181
183
182
-
В общих чертах, задача заключается в том, чтобы начиная с некоторой вершины графа (источника) обойти все достижимые из неё вершины в некотором порядке. Шаг --- просмотр все смежных. И так для всего фронта. Главное не посещать одну и ту же вершину несколько раз.
184
+
В общих чертах, задача заключается в том, чтобы начиная с некоторой заданной вершины графа (источника) обойти все достижимые из неё вершины в некотором порядке.
185
+
Шаг --- просмотр все смежных. И так для всего фронта. Главное не посещать одну и ту же вершину несколько раз.
183
186
184
187
Псевдокод классического алгоритма
185
188
186
189
Пример.
187
190
188
-
Алгоритм обхода в ширину может быть переформулирован в терминах матрично-векторных операций. Решение через линейную алгебру.
191
+
Алгоритм обхода в ширину может быть переформулирован в терминах матрично-векторных операций следующим образом\footnote{
192
+
Стоит отметить, что ситуация со не менее известным обходом в глубину (Depth-First Search, DFS) более сложная:
193
+
на момент написания текста не известно естественного выражения данного обхода в терминах линейной алгебры.
194
+
Доказательство невозможности такого построения также не предъявлены.
195
+
При этом, решения для частных случаев (деревья, ориентированные графы без циклов) предложены, например, в работе~\cite{10.1145/3315454.3329962}}.
196
+
Пусть фронт --- вектор размера $n$, а сам граф представлен матрицей смежности.
197
+
Тогда один шаг --- получение нового фронта --- это умножение текущего фронта на матрицу смежности.
198
+
Для того, чтобы отслеживать посещённые вершины нужна маска.
189
199
190
200
Псевдокод алгоритма на ЛА
191
201
192
-
Пример.
202
+
\begin{example}
203
+
204
+
В качестве примера рассмотрим обход в ширину графа из примера~\ref{example:diGraph} начиная с вершины 2.
205
+
Для обозначения текущего фронта будем использовать зелёный цвет, а для достижимых из него за один шаг --- жёлтый.
206
+
207
+
\begin{tabular}[t]{c | c }
208
+
\input{figures/graph/graph_BFS_1.tex}
209
+
&
210
+
\begin{minipage}{0.7\textwidth}
211
+
$
212
+
\text{visited} =
213
+
\begin{pmatrix}
214
+
0 & 0 & 0 & 0
215
+
\end{pmatrix}
216
+
$
217
+
\\
218
+
$
219
+
\begin{pmatrix}
220
+
0 & 0 & 1 & 0
221
+
\end{pmatrix}
222
+
\begin{pmatrix}
223
+
0 & 1 & 0 & 0\\
224
+
0 & 0 & 1 & 0\\
225
+
1 & 0 & 0 & 1\\
226
+
0 & 0 & 1 & 0
227
+
\end{pmatrix} =
228
+
\begin{pmatrix}
229
+
1 & 0 & 0 & 1
230
+
\end{pmatrix}
231
+
$
232
+
\\
233
+
$
234
+
\text{new\_front} =
235
+
\begin{pmatrix}
236
+
1 & 0 & 0 & 1
237
+
\end{pmatrix}
238
+
\begin{pmatrix}
239
+
0 & 0 & 0 & 0
240
+
\end{pmatrix}
241
+
=
242
+
\begin{pmatrix}
243
+
1 & 0 & 0 & 1
244
+
\end{pmatrix}
245
+
$
246
+
\end{minipage}
247
+
\\ \hline
248
+
\input{figures/graph/graph_BFS_2.tex}
249
+
&
250
+
$
251
+
\begin{pmatrix}
252
+
1 & 0 & 0 & 1
253
+
\end{pmatrix}
254
+
\begin{pmatrix}
255
+
0 & 1 & 0 & 0\\
256
+
0 & 0 & 1 & 0\\
257
+
1 & 0 & 0 & 1\\
258
+
0 & 0 & 1 & 0
259
+
\end{pmatrix} =
260
+
\begin{pmatrix}
261
+
0 & 1 & 1 & 0
262
+
\end{pmatrix}
263
+
$
264
+
\\ \hline
265
+
\input{figures/graph/graph_BFS_3.tex}
266
+
&
267
+
$
268
+
\begin{pmatrix}
269
+
0 & 1 & 0 & 0
270
+
\end{pmatrix}
271
+
\begin{pmatrix}
272
+
0 & 1 & 0 & 0\\
273
+
0 & 0 & 1 & 0\\
274
+
1 & 0 & 0 & 1\\
275
+
0 & 0 & 1 & 0
276
+
\end{pmatrix} =
277
+
\begin{pmatrix}
278
+
0 & 0 & 1 & 0
279
+
\end{pmatrix}
280
+
$
281
+
\end{tabular}
282
+
283
+
\end{example}
284
+
193
285
194
286
multiple-source BFS. Тот же обход в ширину, только источников несколько и надо помнить, какая из вершин из какого источника достижима. Постановка задачи. Решение через линейную алгебру~\cite{9286186} Уже не вектор, а матрица: храним информацию про каждую стартовую вершину отдельно.
195
287
196
288
Псевдокод алгоритма на ЛА
197
289
198
290
Пример.
199
291
292
+
200
293
\section{Задачи поиска путей}
201
294
202
295
Одна из классических задач анализа графов --- это задача поиска путей между вершинами с различными ограничениями.
0 commit comments