Skip to content

Commit 6ea9534

Browse files
committed
Опечатки в разделе про sppf.
1 parent 56ccc6c commit 6ea9534

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

tex/SPPF.tex

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
\chapter{Сжатое представление леса разбора}
22

33
Матричный алгоритм даёт нам ответ на вопрос о достижимости, но не предоставляет самих путей.
4-
Что делать, если мы хотим построить все пути, удовлетворяющие ограичениям?
4+
Что делать, если мы хотим построить все пути, удовлетворяющие ограничениям?
55

66
Проблема в том, что искомое множество путей может быть бесконечным.
77
Можем ли мы предложить конечную структуру, однозначно описывающую такое множество?
88
Вспомним, что пересечение контекстно-свободного языка с регулярным --- это контекстно-свободный язык.
9-
Мы знаем, что конекстно-свободный язык можно описать коньекстно-своюодной граммтикой, которая конечна.
9+
Мы знаем, что контекстно-свободный язык можно описать контекстно-свободной грамматикой, которая конечна.
1010
Это и есть решение нашего вопроса.
11-
Осталось толко научиться строить такую грамматику.
11+
Осталось только научиться строить такую грамматику.
1212

1313
Прежде, чем двинуться дальше, рекомендуется вспомнить всё, что касается деревьев вывода~\ref{sect:DerivTree}.
1414

1515
\section{Лес разбора как представление контекстно-свободной грамматики}
1616

1717
Для начала нам потребуется внести некоторые изменения в конструкцию дерева вывода.
1818

19-
Во-первых, заметим, что в дереве вывода каждый узел соответсвует выводу какой-то подстроки с известными позициями начала и конца.
19+
Во-первых, заметим, что в дереве вывода каждый узел соответствует выводу какой-то подстроки с известными позициями начала и конца.
2020
Давайте будем сохранять эту информацию в узлах дерева.
2121
Таким образом, метка любого узла это тройка вида $(i,q,j)$, где $i$ --- координата начала подстроки, соответствующей этому узлу, $j$ --- координата конца, $q \in \Sigma \cup N$ --- метка как в исходном определении.
2222

23-
Во-вторых, заметим, что внутренний узел со своими сыновьями связаны с продукцией в граммтике: узел появляется благодаря применению конкретной продукции в процессе вывода.
24-
Давайте занумеруем все продукции в граммтике и добавим в дерево вывода ещё один тип узлов (дополнительные узлы), в которых будем хранить номер применённой продукции.
23+
Во-вторых, заметим, что внутренний узел со своими сыновьями связаны с продукцией в грамматике: узел появляется благодаря применению конкретной продукции в процессе вывода.
24+
Давайте занумеруем все продукции в грамматике и добавим в дерево вывода ещё один тип узлов (дополнительные узлы), в которых будем хранить номер применённой продукции.
2525
Получим следующую конструкцию: непосредственный предок дополнительного узла --- это левая часть продукции, а непосредственные сыновья дополнительного узла --- это правая часть продукции.
2626

2727
\begin{example}
@@ -150,15 +150,15 @@ \section{Лес разбора как представление контекс
150150
& \} \rangle
151151
\end{align*}
152152

153-
Пердположим, что мы строим левосторонний вывод.
154-
Тогда после первого применеия продукции 0 у нас есть два варианта переписывания первого нетерминала: либо с применением продукции 0, либо с применением продукции 1:
153+
Предположим, что мы строим левосторонний вывод.
154+
Тогда после первого применения продукции 0 у нас есть два варианта переписывания первого нетерминала: либо с применением продукции 0, либо с применением продукции 1:
155155
\begin{align*}
156156
&\textbf{S} \xrightarrow{0} \textbf{S}S \xrightarrow{0} \textbf{S}SS \xrightarrow{1} a\textbf{S}bSS \xrightarrow{2} ab\textbf{S}S \xrightarrow{1} aba\textbf{S}bS \xrightarrow{2} abab\textbf{S} \xrightarrow{1} ababa\textbf{S}b \xrightarrow{2} ababab
157157
\\
158158
&\textbf{S} \xrightarrow{0} \textbf{S}S \xrightarrow{1} a\textbf{S}bS \xrightarrow{2} ab\textbf{S} \xrightarrow{0} ab\textbf{S}S \xrightarrow{1} aba\textbf{S}bS \xrightarrow{2} abab\textbf{S} \xrightarrow{1} ababa\textbf{S}b \xrightarrow{2} ababab
159159
\end{align*}
160160

161-
Сначал рассмотрим первый вариант (применили переписываение по подукции 0).
161+
Сначала рассмотрим первый вариант (применили переписывание по продукции 0).
162162
Все остальные шаги вывода деретерминированы и в результате мы получим следующее дерево разбора:
163163

164164
\begin{center}
@@ -349,7 +349,7 @@ \section{Лес разбора как представление контекс
349349

350350
В двух построенных деревьях большое количество одинаковых узлов.
351351
Построим структуру, которая содержит оба дерева и при этом никакие нетерминальные и терминальные узлы не встречаются дважды.
352-
В результате мы молучим следующий граф:
352+
В результате мы получим следующий граф:
353353

354354
\begin{center}
355355
\resizebox{0.9\textwidth}{!}{
@@ -448,8 +448,8 @@ \section{Лес разбора как представление контекс
448448

449449
Мы получили очень простой вариант сжатого представления леса разбора (Shared Packed Parse Forest, SPPF).
450450
Впервые подобная идея была предложена Джоаном Рекерсом в его кандидатской диссертации~\cite{SPPF}.
451-
В дальнейшем она нашла широкое применеие в обобщённом (generalized) синтаксическом анализе и получила серьёзное развитие.
452-
В частности, наш вариант, хоть и позволяет избежать экспоненциального разростания леса разбора, всё же не является оптимальным.
451+
В дальнейшем она нашла широкое применение в обобщённом (generalized) синтаксическом анализе и получила серьёзное развитие.
452+
В частности, наш вариант, хоть и позволяет избежать экспоненциального разрастания леса разбора, всё же не является оптимальным.
453453
Оптимальное асимптотическое поведение достигается при использовании бинаризованного SPPF~\cite{Billot:1989:SSF:981623.981641} --- в этом случае объём леса составляет $O(n^3)$, где $n$ --- это длина входной строки.
454454

455455
Различные модификации SPPF применяются в таких алгоритмах синтаксического анализа, как RNGLR~\cite{Scott:2006:RNG:1146809.1146810}, бинаризованная верся SPPF в BRNGLR~\cite{Scott:2007:BCT:1289813.1289815} и GLL~\cite{Scott:2010:GP:1860132.1860320,10.1007/978-3-662-46663-6_5}\footnote{Ещё немного полезной информации про SPPF: \url{http://www.bramvandersanden.com/post/2014/06/shared-packed-parse-forest/}.}.
@@ -559,9 +559,8 @@ \section{Лес разбора как представление контекс
559559
}
560560
\end{center}
561561

562-
563562
Мы построили дерево вывода для одного пути из вершины 2 в неё же.
564-
Но можно заметить, что таких путей бесконечно моного: мы можем бесконечное число раз повтроять уже выполненный обход и получать всё более длинные пути.
563+
Но можно заметить, что таких путей бесконечно много: мы можем бесконечное число раз повторять уже выполненный обход и получать всё более длинные пути.
565564
В терминах дерева вывода это будет означать, что к узлу $_1S_3$ мы добавим сына, соответствующего применению продукции 0, а не 1 для нетерминала $S$.
566565
В таком случае мы получим узел $_2S_2$, который уже существует в дереве и таким образом замкнём цикл.
567566

@@ -656,7 +655,7 @@ \section{Лес разбора как представление контекс
656655
\end{example}
657656

658657
\begin{note}
659-
SPPF построенный для данной контекстно-свободной грамматки $G$ и графа $\mathcal{G}$
658+
SPPF построенный для данной контекстно-свободной грамматики $G$ и графа $\mathcal{G}$
660659
\begin{enumerate}
661660
\item содержит терминальный узел вида $(i,t_k,j)$ тогда и только тогда, когда в графе $\mathcal{G}$ есть ребро $(i,t_k,j)$;
662661
\item содержит нетерминальный узел вида $(i,S_k,j)$ тогда и только тогда, когда в графе $\mathcal{G}$ есть путь из вершины $i$ в вершину $j$, выводимый из нетерминала $S_k$ в грамматике $G$.

0 commit comments

Comments
 (0)