Skip to content

Commit f175c08

Browse files
committed
Первая версия перевода раздела про RSM.
1 parent a4ef9d3 commit f175c08

1 file changed

Lines changed: 29 additions & 30 deletions

File tree

tex/Context-Free_Languages.tex

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ \section{Рекурсивные автоматы и сети}
164164
Классическое определение рекурсивного автомата выглядит следующим образом.
165165

166166
\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$ где
168168
\begin{itemize}
169169
\item $N$~--- множество нетерминальных символов,
170170
\item $\Sigma$~--- множество терминальных символов,
@@ -183,7 +183,7 @@ \section{Рекурсивные автоматы и сети}
183183
\end{definition}
184184

185185
Таким образом, рекурсивный автомат~--- это набор детерминированных конечных автоматов над алфавитом $\Sigma \cup Q_S$.
186-
В некоторых случаях нам будет удобно рассматривать этот набор как одн конечный автомат.
186+
В некоторых случаях нам будет удобно рассматривать этот набор как один конечный автомат.
187187
Однако процесс работы рекурсивного автомата несколько отличается от работы конечного автомата, хотя и похож на него.
188188
Основное отличие~--- необходимость использовать стек для обработки переходов, помеченных элементами из $Q_S$.
189189

@@ -195,45 +195,42 @@ \section{Рекурсивные автоматы и сети}
195195
\item $q \in Q$ текущее состояние RSM,
196196
\item $\mathcal{S}$ --- текущий стек, элементы которого могут быть двух типов:
197197
\begin{itemize}
198-
\item адрес возврата (значение из $Q$) to specify states to continue computation after the call is finished;
199-
\item parsing tree node to store fragments of a parsing tree,
198+
\item адрес возврата (значение из $Q$) для указания состояний, в которых требуется продолжить вычисление после завершения вызова;
199+
\item узел дерева разбора для хранения фрагментов дерева разбора,
200200
\end{itemize}
201201
\item $v \in V$ --- текущая позиция во входе.
202202
\end{itemize}
203203
\end{definition}
204204

205205
\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}}$.
207207
\begin{align*}
208208
(q,v,w_0::s::\mathcal{S}) \vdash & \{ (q',v',t::w_0::s::\mathcal{S}) \mid (q,t,q') \in \delta, (v,t,v') \in E\} \\
209209
& \cup \{(s', v, q'::w_0::s::\mathcal{S}) \mid (q,s',q') \in \delta, s' \in Q_S \} \\
210210
& \cup \{(s,v,\emph{Node}(N_i, w_0)::\mathcal{S}) \mid q \in Q_F^{N_i}\}
211211
\end{align*}
212-
where $w_0$ is a possibly empty sequence of terminals and nonterminal nodes.
212+
где $w_0$~--- возможно пустая последовательность терминалов и нетерминальных узлов.
213213
\end{definition}
214214

215-
To simplify the acceptance condition, we introduce the concept of an \textit{extended RSM}.
215+
Для упрощения условия принятия введём понятие \textit{расширенного рекурсивного автомата}.
216216

217217
\begin{definition}
218-
For the given RSM $\mathcal{R}=\langle \mathcal{N},\Sigma,B,B_S,Q,Q_S\rangle$,
219-
the \textit{extended RSM}
218+
Для данного рекурсивного автомата $\mathcal{R}=\langle \mathcal{N},\Sigma,B,B_S,Q,Q_S\rangle$
219+
\textit{расширенный рекурсивный автомат}
220220
$$\mathcal{R}'=\langle \mathcal{N} \cup \{S'\},\Sigma \cup\{\$\},B \cup {B'_S},B'_S,Q \cup \{q_0',q_1',q_2'\},Q_S \cup \{q_0'\}\rangle$$
221-
is an RSM which defines the same language and is built from $\mathcal{R}$ by adding a new start box
222-
$$B'_S = \langle \{q_0',q_1',q_2'\}, q_0', \{q_2'\}, \{(q_0',q_0,q_1'),(q_1',\$, q_2')\} \rangle$$ where
221+
~--- это рекурсивный автомат, задающий тот же самый язык и построенный из $\mathcal{R}$ добавлением нового стартового блока
222+
$$B'_S = \langle \{q_0',q_1',q_2'\}, q_0', \{q_2'\}, \{(q_0',q_0,q_1'),(q_1',\$, q_2')\} \rangle$$ где
223223
\begin{itemize}
224-
\item $q_0$ is a start state of $B_S$,
225-
\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$.
227227
\end{itemize}
228228
\end{definition}
229229

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.
234-
235-
\subsection{Example}\label{section:example_of_rsm}
230+
Наконец, для данного расширенного рекурсивного автомата $\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$ представляет соответствующий путь.
236231

232+
\begin{example}
233+
Рассмотрим поиск путей с контекстно-свободными ограничениями с использованием рекурсивного автомата и наивной стратегии вычислений.
237234
\begin{marginfigure}
238235
\begin{center}
239236
\resizebox{\marginparwidth}{!}{
@@ -283,14 +280,16 @@ \subsection{Example}\label{section:example_of_rsm}
283280
\label{fig:input-graph}
284281
\end{marginfigure}
285282

286-
In this section, we introduce a step-by-step example of the context-free constrained path querying using RSM and the naive computation strategy.
287283

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}.
289284

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}) и путь
292291
$$v_0 \xrightarrow{a} v_0 \xrightarrow{a} v_0 \xrightarrow{b} v_1 \xrightarrow{b} v_0$$
293-
from $v_0$ to itself (step~\ref{eq:naive-rsm-step-res-2}).
292+
из $v_0$ в себя (шаг~\ref{eq:naive-rsm-step-res-2}).
294293

295294
\begin{align}
296295
\setcounter{equation}{0}
@@ -307,11 +306,11 @@ \subsection{Example}\label{section:example_of_rsm}
307306
(q_3,v_0,[b,S(a,b),a,q_5]) \vdash & \boxed{\{(q_5,v_0,[S(a,S(a,b),b)])\}} \label{eq:naive-rsm-step-res-2}
308307
\end{align}
309308

310-
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])$, мы получим новый путь.
312+
313+
\end{example}
315314

316315
\section{Дерево вывода}
317316
\label{sect:DerivTree}

0 commit comments

Comments
 (0)