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/Context-Free_Languages.tex
+29-30Lines changed: 29 additions & 30 deletions
Original file line number
Diff line number
Diff line change
@@ -164,7 +164,7 @@ \section{Рекурсивные автоматы и сети}
164
164
Классическое определение рекурсивного автомата выглядит следующим образом.
165
165
166
166
\begin{definition}
167
-
\emph{Рекурсивный автомат}~--- это кортеж $\mathcal{R} = \langle\mathcal{N},\Sigma,B,B_S,Q,Q_S\rangle$where
167
+
\emph{Рекурсивный автомат}~--- это кортеж $\mathcal{R} = \langle\mathcal{N},\Sigma,B,B_S,Q,Q_S\rangle$где
168
168
\begin{itemize}
169
169
\item$N$~--- множество нетерминальных символов,
170
170
\item$\Sigma$~--- множество терминальных символов,
@@ -183,7 +183,7 @@ \section{Рекурсивные автоматы и сети}
183
183
\end{definition}
184
184
185
185
Таким образом, рекурсивный автомат~--- это набор детерминированных конечных автоматов над алфавитом $\Sigma\cup Q_S$.
186
-
В некоторых случаях нам будет удобно рассматривать этот набор как одн конечный автомат.
186
+
В некоторых случаях нам будет удобно рассматривать этот набор как один конечный автомат.
187
187
Однако процесс работы рекурсивного автомата несколько отличается от работы конечного автомата, хотя и похож на него.
188
188
Основное отличие~--- необходимость использовать стек для обработки переходов, помеченных элементами из $Q_S$.
189
189
@@ -195,45 +195,42 @@ \section{Рекурсивные автоматы и сети}
195
195
\item$q \in Q$ текущее состояние RSM,
196
196
\item$\mathcal{S}$ --- текущий стек, элементы которого могут быть двух типов:
197
197
\begin{itemize}
198
-
\item адрес возврата (значение из $Q$) to specify states to continue computation after the call is finished;
199
-
\itemparsing tree node to store fragments of a parsing tree,
198
+
\item адрес возврата (значение из $Q$) для указания состояний, в которых требуется продолжить вычисление после завершения вызова;
199
+
\itemузел дерева разбора для хранения фрагментов дерева разбора,
200
200
\end{itemize}
201
201
\item$v \in V$ --- текущая позиция во входе.
202
202
\end{itemize}
203
203
\end{definition}
204
204
205
205
\begin{definition}\label{def:rsm_transition}
206
-
A \emph{transition step} of the RSM specifies how to get new configurations of RSM, given the current configuration. $C_{\mathcal{R}} \vdash W$denotes that$\mathcal{R}$can go to each configuration in$W$from the configuration$C_{\mathcal{R}}$.
206
+
\emph{Шаг перехода} рекурсивного автомата определяет, как получить новые конфигурации рекурсивного автомата из текущей конфигурации. $C_{\mathcal{R}} \vdash W$обозначает, что$\mathcal{R}$может перейти в каждую конфигурацию из$W$из конфигурации$C_{\mathcal{R}}$.
\item\$ is a special symbol to mark the end of input, $\$\notin\Sigma$,
226
-
\item$q_i'$ are newly added states, $q_i'\notin Q$.
224
+
\item$q_0$~--- стартовое состояние$B_S$,
225
+
\item$\$$~--- специальный символ, обозначающий конец входа, $\$\notin\Sigma$,
226
+
\item$q_i'$~--- новые добавленные состояния, $q_i'\notin Q$.
227
227
\end{itemize}
228
228
\end{definition}
229
229
230
-
Finally, for the given extended RSM $\mathcal{R}$ and the given graph $D$ we say that $v_n$ is reachable from $v_0$ w.r.t. $\mathcal{R}$ if $(q'_0,v_0,[]) \vdash^* C$ such that $(q'_1,v_n,[N_S]) \in C$, where $\vdash^*$ denotes zero or more transition steps, and $N_S$ is a node for the start nonterminal of the original (not extended) RSM. Additionally, $N_S$ represents a respective path.
231
-
232
-
Now we need a way to compute transitions and to build trees efficiently, avoiding recomputation and infinite cycles that are possible with the naive implementation.
233
-
Moreover, we need a compact representation of all paths of interest whose number can be infinite.
Наконец, для данного расширенного рекурсивного автомата $\mathcal{R}$ и данного графа $D$ будем говорить, что $v_n$ достижима из $v_0$ относительно $\mathcal{R}$, если $(q'_0,v_0,[]) \vdash^* C$ и $(q'_1,v_n,[N_S]) \in C$, где $\vdash^*$ обозначает ноль или более шагов перехода, а $N_S$~--- узел для стартового нетерминала исходного (не расширенного) рекурсивного автомата. Дополнительно, $N_S$ представляет соответствующий путь.
236
231
232
+
\begin{example}
233
+
Рассмотрим поиск путей с контекстно-свободными ограничениями с использованием рекурсивного автомата и наивной стратегии вычислений.
In this section, we introduce a step-by-step example of the context-free constrained path querying using RSM and the naive computation strategy.
287
283
288
-
Suppose that the input is a graph $D$ presented in figure~\ref{fig:input-graph} and the grammar $G$ has two productions $S \to a \ b \mid a \ S \ b$. The start vertex is $v_0$ and our goal to find at least one path to each reachable vertex (w.r.t. $G$). The extended RSM for the given grammar is presented in figure~\ref{fig:example-rsm}.
289
284
290
-
The initial configuration is $(q_4,v_0,[])$: we start from the initial state of the box for $S'$, the initial position in the graph is a start vertex $v_0$, the stack is empty. In each step, we apply rules from definition~\ref{def:rsm_transition} to compute new configurations. The sequence of transitions, presented below, allows us to find a path $$v_0\xrightarrow{a} v_0\xrightarrow{b} v_1$$
291
-
from $v_0$ to $v_1$ (step~\ref{eq:naive-rsm-step-res-1}) and a path
285
+
Пусть на вход подан граф $D$, представленный на рисунке~\ref{fig:input-graph}, а грамматика $G$ содержит два правила $S \to a \ b \mid a \ S \ b$.
286
+
Расширенный рекурсивный автомат для данной грамматики показан на рисунке~\ref{fig:example-rsm}.
287
+
Стартовая вершина~--- $v_0$, наша цель~--- найти хотя бы один путь в каждую достижимую (относительно $G$) вершину.
288
+
289
+
Начальная конфигурация~--- $(q_4,v_0,[])$: мы начинаем из начального состояния блока для $S'$, начальная позиция в графе~--- стартовая вершина $v_0$, стек пуст. На каждом шаге мы применяем правила из определения~\ref{def:rsm_transition} для вычисления новых конфигураций. Последовательность переходов, представленная ниже, позволяет найти путь $$v_0\xrightarrow{a} v_0\xrightarrow{b} v_1$$
290
+
из $v_0$ в $v_1$ (шаг~\ref{eq:naive-rsm-step-res-1}) и путь
Note that we have no conditions to stop computation.
311
-
In our example, we can continue computation and get new paths between $v_0$ and $v_1$.
312
-
Moreover, there is an infinite number of such paths.
313
-
Additionally, the selection of the next step is not deterministic.
314
-
One can choose the configuration $(q_0,v_0,[q_2,a,q_2,a,q_5])$ to continue computations after step~\ref{eq:naive-rsm-step-6} with chance to fall into an infinite cycle, but choosing $(q_3,v_1,[b,a,q_2,a,q_5])$ we get a new path.
309
+
Заметим, что у нас нет условий для остановки вычислений\sidenote{Далее мы узнаем, как решить эту проблему, а пока предлагается подумать, почему наивное применение идеи из интерпретатора конечных автоматов (не обрабатывать конфигурацию более одного раза) здесь не работает.}, из-за чего в нашем примере можно продолжить вычисления и получить новые пути между $v_0$ и $v_1$.
310
+
Более того, можно заметить, что таких путей бесконечное количество, а выбор следующего шага не является детерминированным.
311
+
Например, можно выбрать конфигурацию $(q_0,v_0,[q_2,a,q_2,a,q_5])$ для продолжения вычислений после шага~\ref{eq:naive-rsm-step-6} с риском попасть в бесконечный цикл, но выбрав $(q_3,v_1,[b,a,q_2,a,q_5])$, мы получим новый путь.
0 commit comments