Skip to content

Commit 9854672

Browse files
authored
Merge pull request #10 from JetBrains-Research/dev
Сократил заголовки для 9.1 и 7
2 parents 2f601d5 + 4e977b8 commit 9854672

File tree

2 files changed

+22
-19
lines changed

2 files changed

+22
-19
lines changed

tex/Matrix-based_CFPQ.tex

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
\chapter{КС и конъюнктивная достижимость через произведение матриц}\label{chpt:MatrixBasedAlgos}
1+
\chapter[Контекстно-свободная достижимость через произведение матриц]{Контекстно-свободная достижимость через произведение матриц}\label{chpt:MatrixBasedAlgos}
2+
\chaptermark{КС достижимость через произведение матриц}
23

3-
В данном разделе мы рассмотрим алгоритм решения задачи контекстно-свободной и конъюнктивной достижимости, основанный на произведении матриц. Будет показано, что при использовании конъюнктивных граммтик, представленный алгоритм находит переапроксимацию истинного решения задачи.
4+
В данном разделе мы рассмотрим алгоритм решения задачи контекстно-свободной достижимости, основанный на произведении матриц. Будет показано, что при использовании конъюнктивных граммтик, представленный алгоритм находит переапроксимацию истинного решения задачи.
45

5-
\section{КС достижимость через произведение матриц}
6+
\section[Алгоритм контекстно-свободной достижимости через произведение матриц]{Алгоритм контекстно-свободной достижимости через произведение матриц\sectionmark{Алгоритм КС достижимости через произведение матриц}}
7+
\sectionmark{Алгоритм КС достижимости через произведение матриц}
68
\label{Matrix-CFPQ}
9+
710
В главе~\ref{graph:CYK}~был изложен алгоритм для решения задачи КС достижимости на основе CYK. Заметим, что обход матрицы напоминает умножение матриц в ячейках которых множества нетерминалов:
811

912
\begin{align*}

tex/SPPF.tex

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

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

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

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

15-
\section{Лес разбора как представление контекстно-свободной грамматики}
15+
\section[Лес разбора как представление контекстно-свободной грамматики]{Лес разбора как представление контекстно-свободной грамматики\sectionmark{Лес разбора как представление КС грамматики}}
16+
\sectionmark{Лес разбора как представление КС грамматики}
1617

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

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

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

2728
\begin{example}
@@ -150,15 +151,15 @@ \section{Лес разбора как представление контекс
150151
& \} \rangle
151152
\end{align*}
152153

153-
Пердположим, что мы строим левосторонний вывод.
154-
Тогда после первого применеия продукции 0 у нас есть два варианта переписывания первого нетерминала: либо с применением продукции 0, либо с применением продукции 1:
154+
Предположим, что мы строим левосторонний вывод.
155+
Тогда после первого применения продукции 0 у нас есть два варианта переписывания первого нетерминала: либо с применением продукции 0, либо с применением продукции 1:
155156
\begin{align*}
156157
&\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
157158
\\
158159
&\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
159160
\end{align*}
160161

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

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

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

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

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

455456
Различные модификации 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 +560,8 @@ \section{Лес разбора как представление контекс
559560
}
560561
\end{center}
561562

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

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

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

0 commit comments

Comments
 (0)