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/CYK_for_CFPQ.tex
+5-5Lines changed: 5 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ \chapter{CYK для вычисления КС запросов}\label{chpt:CFPQ_
6
6
7
7
\section{Алгоритм CYK}\label{sect:lin_CYK}
8
8
9
-
Алгоритм CYK (Cocke-Younger-Kasami) --- один из классических алгоритмов синтаксического анализа. Его асимптотическая сложность в худшем случае --- $O(n^3 * |N|)$, где $n$ --- длина входной строки, а $N$ --- количество нетерминалов во входной граммтике~\cite{Hopcroft+Ullman/79/Introduction}.
9
+
Алгоритм CYK (Cocke-Younger-Kasami) --- один из классических алгоритмов синтаксического анализа. Его асимптотическая сложность в худшем случае --- $O(n^3 * |N|)$, где $n$ --- длина входной строки, а $N$ --- количество нетерминалов во входной грамматике~\cite{Hopcroft+Ullman/79/Introduction}.
10
10
11
11
Для его применения необходимо, чтобы подаваемая на вход грамматика находилась в Нормальной Форме Хомского (НФХ)~\ref{section:CNF}. Других ограничений нет и, следовательно,данный алгоритм применим для работы с произвольными контекстно-своболными языками.
12
12
@@ -239,7 +239,7 @@ \section{Алгоритм для графов на основе CYK}
239
239
\begin{itemize}
240
240
\item Как и раньше, с помощью продукций вида \[A \to a \text{, где } A \in N, a \in\Sigma\]
241
241
заменяем терминалы на ребрах входного графа на множества нетерминалов, из которых они выводятся.
242
-
\item Добавляем в каждую вершину петлю, помеченную множеством нетерминалов для которых в данной граммтике есть правила вида $$A \to\varepsilon\text{, где } A \in N.$$
242
+
\item Добавляем в каждую вершину петлю, помеченную множеством нетерминалов для которых в данной грамматике есть правила вида $$A \to\varepsilon\text{, где } A \in N.$$
243
243
\end{itemize}
244
244
245
245
Затем используем матрицу смежности получившегося графа (обозначим ее $M$) в качестве начального значения. Дальнейший ход алгоритма можно описать псевдокодом, представленным в листинге~\ref{alg:graphParseCYK}.
@@ -271,7 +271,7 @@ \section{Алгоритм для графов на основе CYK}
271
271
\end{algorithmic}
272
272
\end{algorithm}
273
273
274
-
После завершения алгоритма, если в некоторой ячейке результируюшей матрицы с номером $(i, j)$ находятся стартовый нетерминал, то это означает, что существует путь из вершины $i$ в вершину $j$, удовлетворяющий данной грамматике. Таким образом, полученная матрица является ответом для задачи достижимости для заданных графа и граммтики.
274
+
После завершения алгоритма, если в некоторой ячейке результируюшей матрицы с номером $(i, j)$ находятся стартовый нетерминал, то это означает, что существует путь из вершины $i$ в вершину $j$, удовлетворяющий данной грамматике. Таким образом, полученная матрица является ответом для задачи достижимости для заданных графа и грамматики.
275
275
276
276
\begin{example}
277
277
\label{CYK_algorithm_ex}
@@ -479,7 +479,7 @@ \section{Алгоритм для графов на основе CYK}
479
479
\begin{enumerate}
480
480
\item Обрабатываем $(A,0,1)$.
481
481
Ни один из вложенных циклов не найдёт новых путей, так как для рассматриваемого ребра есть только две возможности достроить путь: $2\xrightarrow{A} 0\xrightarrow{A} 1$ и $0\xrightarrow{A} 1\xrightarrow{A} 2$
482
-
и ни одна из соответствующих строк не выводтся в заданной граммтике.
482
+
и ни одна из соответствующих строк не выводтся в заданной грамматике.
483
483
\item Перед началом итерации
484
484
$$
485
485
m = \{(A,1,2),(A,2,0),(B,2,3),(B,3,2)\},
@@ -732,4 +732,4 @@ \section{Алгоритм для графов на основе CYK}
732
732
%
733
733
% \item Оцените временную сложность алгоритма Хеллингса и сравните её с оценкой для наивного обобщения CYK.
Copy file name to clipboardExpand all lines: tex/Context-Free_Languages.tex
+8-8Lines changed: 8 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -29,7 +29,7 @@ \chapter{Контекстно-свободные грамматики и язы
29
29
30
30
31
31
\begin{definition}\label{defderivabilityinCFG}
32
-
\textit{Отношение непосредственной выводимости}. Мы говорим, что последовательность терминалов и нетерминалов $\gamma\alpha\delta$\textit{непосредственно выводится из} $\gamma\beta\delta$\textit{при помощи правила} $\alpha\rightarrow\beta$ ($\gamma\alpha\delta\Rightarrow\gamma\beta\delta$), если
32
+
\textit{Отношение непосредственной выводимости}. Мы говорим, что последовательность терминалов и нетерминалов $\gamma\beta\delta$\textit{непосредственно выводится из} $\gamma\alpha\delta$\textit{при помощи правила} $\alpha\rightarrow\beta$ ($\gamma\alpha\delta\Rightarrow\gamma\beta\delta$), если
@@ -482,16 +482,16 @@ \section{Замкнутость КС языков относительно оп
482
482
\item Разность с регулярными языками: если $L_1$ --- контекстно-свободный, а $L_2$ --- регулярный, то $L_3 = L_1\setminus L_2$ --- контекстно-свободный.
483
483
\end{enumerate}
484
484
\end{theorem}
485
-
Для доказательства пунктов 1--4 можно построить КС граммтику нового языка имея грамматики для исходных.
486
-
Будем предполагать, что множества нетерминальных символов различных граммтик для исходных языков не пересекаются.
485
+
Для доказательства пунктов 1--4 можно построить КС грамматику нового языка имея грамматики для исходных.
486
+
Будем предполагать, что множества нетерминальных символов различных грамматик для исходных языков не пересекаются.
487
487
\begin{enumerate}
488
-
\item$G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- граммтика для $L_1$, $G_1=\langle\Sigma_2,N_2,P_2,S_2\rangle$ --- граммтика для $L_2$, тогда $G_3=\langle\Sigma_1\cup\Sigma_2, N_1\cup N_2\cup\{S_3\}, P_1\cup P_2\cup\{S_3\to S_1\mid S_2\} ,S_3\rangle$ --- граммтика для $L_3$.
488
+
\item$G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- грамматика для $L_1$, $G_1=\langle\Sigma_2,N_2,P_2,S_2\rangle$ --- грамматика для $L_2$, тогда $G_3=\langle\Sigma_1\cup\Sigma_2, N_1\cup N_2\cup\{S_3\}, P_1\cup P_2\cup\{S_3\to S_1\mid S_2\} ,S_3\rangle$ --- грамматика для $L_3$.
489
489
490
-
\item$G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- граммтика для $L_1$, $G_1=\langle\Sigma_2,N_2,P_2,S_2\rangle$ --- граммтика для $L_2$, тогда $G_3=\langle\Sigma_1\cup\Sigma_2, N_1\cup N_2\cup\{S_3\}, P_1\cup P_2\cup\{S_3\to S_1 S_2\} ,S_3\rangle$ --- граммтика для $L_3$.
490
+
\item$G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- грамматика для $L_1$, $G_1=\langle\Sigma_2,N_2,P_2,S_2\rangle$ --- грамматика для $L_2$, тогда $G_3=\langle\Sigma_1\cup\Sigma_2, N_1\cup N_2\cup\{S_3\}, P_1\cup P_2\cup\{S_3\to S_1 S_2\} ,S_3\rangle$ --- грамматика для $L_3$.
491
491
492
-
\item$G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- граммтика для $L_1$, тогда $G_2=\langle\Sigma_1, N_1\cup\{S_2\}, P_1\cup\{S_2\to S_1 S_2\ \mid\varepsilon\}, S_2\rangle$ --- граммтика для $L_2$.
492
+
\item$G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- грамматика для $L_1$, тогда $G_2=\langle\Sigma_1, N_1\cup\{S_2\}, P_1\cup\{S_2\to S_1 S_2\ \mid\varepsilon\}, S_2\rangle$ --- грамматика для $L_2$.
493
493
494
-
\item$G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- граммтика для $L_1$, тогда $G_2=\langle\Sigma_1, N_1, \{N^i \to\omega^R \mid N^i \to\omega\in P_1\}, S_1\rangle$ --- граммтика для $L_2$.
494
+
\item$G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- грамматика для $L_1$, тогда $G_2=\langle\Sigma_1, N_1, \{N^i \to\omega^R \mid N^i \to\omega\in P_1\}, S_1\rangle$ --- грамматика для $L_2$.
495
495
\end{enumerate}
496
496
497
497
Чтобы доказать замкнутость относительно пересечения с регулярными языками, построим по КС грамматике рекурсивный автомат $R_1$, по регулярному выражению --- детерминированный конечный автомат $R_2$, и построим их прямое произведение $R_3$.
@@ -523,7 +523,7 @@ \section{Замкнутость КС языков относительно оп
523
523
\begin{enumerate}
524
524
\item Рассмотрим языки $L_4 = \{a^m b^n c^k \mid m \neq n, k \geq0\}$ и $L_5 = \{a^m b^n c^k \mid n \neq k, m \geq0\}$.
525
525
Эти языки являются контекстно-свободными.
526
-
Это легко заметить, если знать, что язык $L'_4 = \{a^m b^n c^k \mid0\leq m < n, k \geq0\}$ задаётся следующей граммтикой:
526
+
Это легко заметить, если знать, что язык $L'_4 = \{a^m b^n c^k \mid0\leq m < n, k \geq0\}$ задаётся следующей грамматикой:
Copy file name to clipboardExpand all lines: tex/FLPQ.tex
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -38,10 +38,10 @@ \section{Постановка задачи }
38
38
39
39
Более подробно мы рассмотрим случай, когда $\mathcal{L}$ --- контекстно-свободный язык.
40
40
41
-
Путь $G = \langle\Sigma, N, P \rangle$ --- контекстно-свободная граммтика.
41
+
Путь $G = \langle\Sigma, N, P \rangle$ --- контекстно-свободная грамматика.
42
42
Будем считать, что $L \subseteq\Sigma$.
43
43
Мы не фиксируем стартовый нетерминал в определении грамматики, поэтому, чтобы описать язык, задаваемый ей, нам необходимо отдельно зафиксировать стартовый нетерминал.
44
-
Таким образом, будем говорить, что $L(G,N_i) = \{ w | N_i \xRightarrow[G]{*} w \}$ --- это язык задаваемый граммтикой$G$ со стартовым нетерминалом $N_i$.
44
+
Таким образом, будем говорить, что $L(G,N_i) = \{ w | N_i \xRightarrow[G]{*} w \}$ --- это язык задаваемый грамматикой$G$ со стартовым нетерминалом $N_i$.
Данное семейство всё так же не работает с леворекурсивными грамматиками и с неоднозначными грамматиками.
400
400
401
-
Таким образом, по некоторым граммтикам можно построить LL(k) анализатор (назовём их LL(k) граммтиками), но не по всем.
401
+
Таким образом, по некоторым грамматикам можно построить LL(k) анализатор (назовём их LL(k) грамматиками), но не по всем.
402
402
С левой рекурсией, конечно, можно бороться, так как существуют алгоритмы устранения левой и скрытой левой рекурсии, а вот с неоднозначностями ничего не поделаешь.
Copy file name to clipboardExpand all lines: tex/GLR-based_CFPQ.tex
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -86,7 +86,7 @@ \subsection{LR(0) алгоритм}
86
86
\end{definition}
87
87
88
88
Теперь мы можем построить LR(0) автомат.
89
-
Первым шагом необходимо расширить грамматику: добавить к исходной граммтике правило вида $S' \to S \$$, где $S$ --- стартовый нетерминал исходной граммтики, $S'$ --- новый стартовый нетерминал (не использовался ранее в грамматике), $\$$ --- маркер конца строки (не входил в терминальный алфавит исходной граммтики).
89
+
Первым шагом необходимо расширить грамматику: добавить к исходной грамматике правило вида $S' \to S \$$, где $S$ --- стартовый нетерминал исходной грамматики, $S'$ --- новый стартовый нетерминал (не использовался ранее в грамматике), $\$$ --- маркер конца строки (не входил в терминальный алфавит исходной грамматики).
90
90
91
91
Далее строим автомат по следующим принципам.
92
92
@@ -383,7 +383,7 @@ \subsection{Сравнение классов LL и LR}
383
383
384
384
Из диаграммы видно, что класс языков, распознаваемых LL(k) алгоритмом уже, чем класс языков, распознаваемый LR(k) алгоритмом, при любом конечном $k$. Приведём несколько примеров.
385
385
\begin{enumerate}
386
-
\item$L = \{a^mb^nc \mid m \geq n \geq0\}$ является LR(0), но для него не существует LL(1) граммтики.
386
+
\item$L = \{a^mb^nc \mid m \geq n \geq0\}$ является LR(0), но для него не существует LL(1) грамматики.
387
387
\item$L = \{ a^n b^n + a^n c^n \mid n > 0\}$ является LR, но не LL.
388
388
\item Больше примеров можно найти в работе Джона Битти~\cite{BEATTY1980193}.
Copy file name to clipboardExpand all lines: tex/LinearAlgebra.tex
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -188,7 +188,7 @@ \section{Полукольцо}
188
188
189
189
\begin{definition}
190
190
191
-
Непустое множество $R$ с двумя бинарными операциями $\oplus\colon R \times R \to R$ (часто называют умножением) и $\otimes\colon R \times R \to R$ (часто называют сложением) называется \emph{полукольцом}, если выполнены следующие условия.
191
+
Непустое множество $R$ с двумя бинарными операциями $\oplus\colon R \times R \to R$ (часто называют сложением) и $\otimes\colon R \times R \to R$ (часто называют умножением) называется \emph{полукольцом}, если выполнены следующие условия.
192
192
\begin{enumerate}
193
193
194
194
\item$(R, \oplus)$ --- это коммутативный моноид, нейтральный элемент которого --- $\mathbb{0}$. Для любых $a,b,c \in R$:
% \item Привидите примеры ситуаций, когда наличие у бинарных операций каких-либо дополнитльных свойств (ассоциативности, коммутативности), позволяет строить более эффективные алгоритмы, чем в общем случае.
0 commit comments