Skip to content

Commit 61fecad

Browse files
WoWastergsvgit
authored andcommitted
Misc changes in RPQ
1 parent 252b9b1 commit 61fecad

File tree

1 file changed

+27
-17
lines changed

1 file changed

+27
-17
lines changed

tex/RPQ.tex

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,28 +21,35 @@ \section{Достижимость с несколькими источникам
2121
Покажем на примере, как данный метод может быть использован, когда мы накладываем дополнительные ограничения в виде регулярного языка на путь в графе.
2222

2323
Для этого, во-первых, предъявим булевые представления для матриц смежности графа и автомата для регулярного языка.
24+
\marginnote{TODO: Подумать над разбиением на разделы и подразделы}
2425
Затем, введем специальную блочно-диагональную матрицу для синхронизации обхода в ширину по двум матрицам смежности.
2526
Далее, попробуем наивно реализовать обход в ширину, и посмотрим, почему наивная реализация может выдавать некорректный результат.
2627
После этого перейдем к реализации обхода в ширину более продвинутым методом, который решает проблему наивного подхода.
2728

2829
\subsection{Пример работы алгоритма}
29-
\marginnote{TODO: Подумать над разбиением на разделы и подразделы}
30-
Возьмём следующий граф.
31-
\begin{center}
32-
\label{input_rpq}
33-
\begin{tikzpicture}[node distance=2cm,shorten >=1pt,on grid,auto]
34-
\node[state] (q_0) {$1$};
35-
\node[state] (q_1) [above=of q_0] {$2$};
36-
\node[state] (q_2) [right=of $(q_0)!0.5!(q_1)$] {$0$};
37-
\node[state] (q_3) [right=of q_2] {$3$};
38-
\path[->]
39-
(q_0) edge node {b} (q_1)
40-
(q_1) edge node[pos=0.3] {a} (q_2)
41-
(q_2) edge node[pos=0.7] {a} (q_0)
42-
(q_2) edge[bend left] node[above] {b} (q_3)
43-
(q_3) edge[bend left] node {b} (q_2);
44-
\end{tikzpicture}
45-
\end{center}
30+
\begin{marginfigure}
31+
\caption{Входной граф.}
32+
\label{fig:ms_rpq_graph}
33+
\begin{center}
34+
\begin{tikzpicture}[
35+
shorten >=1pt,
36+
auto]
37+
\node[state] (q_0) {$0$};
38+
\node[state] (q_1) [below left = of q_0] {$1$};
39+
\node[state] (q_2) [above left = of q_0] {$2$};
40+
\node[state] (q_3) [right = of q_0]{$3$};
41+
42+
\path[->]
43+
(q_0) edge [bend left] node {$b$} (q_3)
44+
(q_3) edge [bend left] node {$b$} (q_0)
45+
(q_0) edge node {$a$} (q_1)
46+
(q_1) edge node {$b$} (q_2)
47+
(q_2) edge node {$a$} (q_0);
48+
\end{tikzpicture}
49+
\end{center}
50+
\end{marginfigure}
51+
Возьмём граф изображенный на рисунке~\ref{fig:ms_rpq_graph}.
52+
4653

4754
Его матрица смежности имеет следующий вид.
4855
\marginnote{TODO: Точка внизу или снизу?}
@@ -540,6 +547,7 @@ \subsection{Процесс обхода графа}
540547
Далее, с помощью операций перестановки и сложения векторов $M'$ преобразуется к виду матрицы $M$ и присваивается ей.
541548
Итерации продолжаются пока $M'$ содержит новые вершины, не содержащиеся в $M$. На листинге~\ref{BFSRPQ1} представлен этот алгоритм.
542549

550+
%% FIXME: Переверстать алгоритм
543551
% \begin{algorithm}[t]
544552
% \caption{Алгоритм достижимости в графе с регулярными ограничениями на основе поиска в ширину, выраженный с помощью операций матричного умножения}\label{BFSRPQ1}
545553
% \begin{algorithmic}[1]
@@ -575,6 +583,7 @@ \subsection{Процесс обхода графа}
575583
То есть, имела единицы на главной диагонали, а все остальные значения в первых $k$ столбцах были нулями.
576584
Подробнее эта процедура описана в листинге~\ref{AlgoTransformRows}.
577585

586+
%% FIXME: Переверстать алгоритм
578587
% \begin{algorithm}[H]
579588
% \caption{Алгоритм трансформации строчек}\label{AlgoTransformRows}
580589
% \begin{algorithmic}[1]
@@ -604,6 +613,7 @@ \subsection{Модификации алгоритма}
604613

605614
Матрица $\mfrakM$ собирается из множества матриц $M(V_{\mathrm{src}}^i)$ и позволяет хранить информацию о том, из какой начальной вершины достигаются новые вершины во время обхода.
606615

616+
%% FIXME: Переверстать алгоритм
607617
% \begin{algorithm}[t]
608618
% \caption{Модификация алгоритма для поиска конкретной исходной вершины}\label{BFSRPQ2}
609619
% \begin{algorithmic}[1]

0 commit comments

Comments
 (0)