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
- Для базовой быстрой навигации по книге можно использовать `book_structure.md`. В нём структура книги по файлам и краткое содержимое. Не забывай обновлять структуру и краткое содержание, если что-то изменил, добавил, удалил.
5
6
6
7
## Сборка
7
8
- Находясь в директории `tex` запустить `latexmk -interaction=nonstopmode -shell-escape FormalLanguageConstrainedReachabilityLectureNotes.tex`
Copy file name to clipboardExpand all lines: tex/frontmatter/Introduction.tex
+2Lines changed: 2 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -38,6 +38,7 @@
38
38
Основной акцент будет сделан на регулярных и контекстно-свободных языках, однако будут затронуты и такие классы, как многокомпонентные контекстно-свободные (Multiple Context-Free Languages, MCFL~\sidecite{SEKI1991191}).
39
39
Будет показано, что теория формальных языков и алгоритмы синтаксического анализа применимы не только для синтаксического анализа языков программирования или естественных языков, но и для формулирования запросов к графам (например в графовых баз данных и в инструментах статического анализа кода), что приводит к возникновению новых задач и переосмыслению старых.
40
40
41
+
\mytodo{Актуализировать описание структуры работы, сослаться на рисунок.}
41
42
Структура данной работы такова.
42
43
В начале (в части~\ref{chpt:GraphTheoryIntro}) мы рассмотрим основные понятия из теории графов, необходимые в данной работе. Данные разделы являются подготовительными и не обязательны к прочтению, если такие понятия как \textit{ориентированный граф} и \textit{матрица смежности} уже известны читателю.
43
44
Более того, они лишь вводят определения, подразумевая, что более детальное изучение соответствующих разделов науки остается за рамками этой работы и скорее всего уже проделано читателем.
@@ -47,6 +48,7 @@
47
48
После этого мы будем подробно рассматривать различные алгоритмы решения этой задачи, включая алгоритмы на основе GLR (раздел~\ref{sec:GLR}), попутно вводя специфичные для рассматриваемого алгоритма структуры данных.
48
49
Большинство алгоритмов будут основаны на классических алгоритмах синтаксического анализа, таких как CYK или LR.
Copy file name to clipboardExpand all lines: tex/part_01_Prep/chapter_01_LinearAlgebra/07_MatricesAndVectors.tex
+4-7Lines changed: 4 additions & 7 deletions
Original file line number
Diff line number
Diff line change
@@ -225,6 +225,8 @@ \section{Матрицы и вектора}
225
225
\end{multline*}
226
226
\end{definition}
227
227
228
+
%Заметим, что скалярная операция~--- это частный случай произвеления Кронекера: достаточно превратить элемент носителя полугруппы в матрицу размера $1\times 1$.
229
+
228
230
\begin{remark}
229
231
\label{rem:KronIsNotCommutative}
230
232
Произведение Кронекера не является коммутативным\sidenote{Показать это можно по определению: найти пример, для которого $M \otimes N \neq N \otimes M$.}.
@@ -241,6 +243,7 @@ \section{Матрицы и вектора}
241
243
\end{pmatrix}
242
244
}
243
245
246
+
\mytodo{Попробовать ужать прмиер на предыдущую страницу.}
244
247
\begin{example}
245
248
Возьмём в качестве полугруппы целые числа с умножением.
246
249
\[
@@ -424,10 +427,4 @@ \section{Матрицы и вектора}
424
427
% Естественный вопрос о существовании истинно субкубического алгоритма перемножения матриц над полукольцами (или же комбинаторного перемножения матриц) всё ещё не решён%
425
428
% \sidenote{Один из кандидатов~--- работа~\cite{das2018lower}, однако на текущий момент предложенное в ней решение требует проверки.}.
426
429
427
-
% %Заметим, что скалярная операция~--- это частный случай произвеления Кронекера: достаточно превратить элемент носителя полугруппы в матрицу размера $1\times 1$.
% % \item Привидите примеры ситуаций, когда наличие у бинарных операций каких-либо дополнитльных свойств (ассоциативности, коммутативности), позволяет строить более эффективные алгоритмы, чем в общем случае.
Copy file name to clipboardExpand all lines: tex/part_01_Prep/chapter_01_LinearAlgebra/08_AppliedAspects.tex
+1Lines changed: 1 addition & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -3,3 +3,4 @@ \section{Прикладные особенности}
3
3
4
4
\mytodo{Написать раздел}
5
5
Планируемое содержание раздела: Взгляд программиста: типы данных, не совсем честные алгебраические структуры (<<просто лишь бы типизировалось>>), GraphBLAS, разреженность, параллельность. Операции типа маски, map2 и так далее.
6
+
\mytodo{Перенести из GraphBLAS_in_functional_style_КИО. Про map2, Option, GraphBLAS и его проблемы. Связать с определением обобщённой матрицы смежности, с поэлементными операциями. }
Copy file name to clipboardExpand all lines: tex/part_01_Prep/chapter_03_GraphTheoryIntro/04_BFS.tex
+5-3Lines changed: 5 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -27,6 +27,7 @@ \section{Обход графа в ширину}
27
27
\label{fig:bfs_schema}
28
28
\end{marginfigure}
29
29
30
+
\mytodo{Обновить сноску. Уже есть статья по DFS в терминах линенйной алгебры.}
30
31
Алгоритм обхода в ширину может быть переформулирован в терминах матрично-векторных операций следующим образом%
31
32
\sidenote{
32
33
Стоит отметить, что ситуация с не менее известным обходом в глубину (Depth-First Search, DFS) более сложная: на момент написания текста не известно <<естественного>> выражения данного обхода в терминах линейной алгебры.
@@ -44,6 +45,7 @@ \section{Обход графа в ширину}
44
45
Такие шаги повторяются до тех пор, пока фронт не окажется пустым ($\overline{0}$, нет новых вершин для посещения).
45
46
А результатом работы является информация, накопленная в \emph{visited}.
46
47
48
+
\mytodo{Доработать сноску.}
47
49
Псевдокод самой простой версии алгоритма\sidenote{
48
50
Возможны вариации. Точно не самый оптимальный. Ссылка на AGraph и на статью какую-нибудь!!!!
49
51
} представлен на листинге~\ref{algo:BFS_linal}.
@@ -87,6 +89,7 @@ \section{Обход графа в ширину}
87
89
88
90
Заметим, что данный алгоритм решает очень простую задачу: выясняет, какие вершины достижимы из стартовой.
89
91
Решение более содержательных задач потребует, прежде всего, создания более сложных алгебраических структур.
92
+
\mytodo{Сноска про Parent-BFS, Level-BFS и т.д.}
90
93
Однако, общий принцип, шаги алгоритма, останется неизменным.
91
94
92
95
%$$\boxed{\oplus}^{\BbbB}$$
@@ -401,7 +404,7 @@ \section{Обход графа в ширину}
401
404
\end{marginfigure}
402
405
403
406
Проделаем ещё один шаг.
404
-
Он будет последим содержательным шагом: на следующем шаге мы всего лишь узнаем, что все вершины посещены.
407
+
Он будет последим содержательным шагом, так как на следующем шаге мы всего лишь узнаем, что все вершины посещены.
405
408
\begin{align*}
406
409
\emph{new\_front} & = \emph{current\_front} \mmult{\BbbB} M \\
407
410
& =
@@ -447,5 +450,4 @@ \section{Обход графа в ширину}
447
450
\end{example}
448
451
449
452
Идеи, заложенные в описанных выше алгоритмах, будут использоваться нами далее, при решении других задач.
450
-
451
-
Достижимость от нескольких стартовых вершин через обход в ширину, основанный на линейной алгебре~\sidecite{9286186}
453
+
\mycomment{Добавить что-то про BFS с построением подграфа и т.д.? В целом, такая идея фильтрации рёбер нужна будет при некоторых алгоритмах дальше.}
Copy file name to clipboardExpand all lines: tex/part_02_Foundations/chapter_04_FormalLanguageTheoryIntro/01_SetOperations.tex
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ \section{Теоретико-множественные операции над
8
8
\item$\overline{L} = \{\omega\mid\omega\in\Sigma^* \text{ и } \omega\notin L\} = \Sigma^* \setminus L$, где $L$~--- язык над алфавитом $\Sigma$ .
9
9
\end{itemize}
10
10
11
-
Многие прикладные задачи, в которых возникают формальные языки, достаточно естественным образом формулируются в теоретико-множественных терминах.
11
+
Многие прикладные задачи, в которых возникают формальные языки, достаточно естественным образом формулируются в \fixit{теоретико-множественных}{Вёрстка!} терминах.
12
12
Так, задача распознавания~--- это задача проверки принадлежности элемента множеству.
13
13
Далее мы рассмотрим прикладные задачи, решение которых требует, например, проверки включения одного языка в другой, или проверки непустоты пересечения двух языков.
14
14
Разрешимость таких задач, алгоритмы решения, их сложность и другие свойства, зависят от свойств языков.
Распознаватель может быть сконструирован как некоторая формальная машина, которая принимает или отвергает те или иные слова, записанные на входной ленте.
4
+
Распознаватель может быть сконструирован как некоторая формальная машина (вычислитель), которая принимает или отвергает те или иные слова, записанные на входной ленте.
5
5
Таким образом, язык задаваемый некоторым вычислителем~--- это множество принимаемых им слов.
6
+
\mytodo{Как увязать с иерархией Хомского, которая обсуждается далее?}
6
7
Далее становится возможно классифицировать языки по тому, какого класса распознаватель необходим и достаточен, чтобы их задать.
7
8
Например, можно выделить класс языков, задаваемых конечными автоматами.
8
9
На этом, в частности, построена \emph{иерархия Хомского}.
Copy file name to clipboardExpand all lines: tex/part_02_Foundations/chapter_04_FormalLanguageTheoryIntro/04_Generators.tex
+3-1Lines changed: 3 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -3,6 +3,7 @@ \section{Генераторы}
3
3
4
4
Один из базовых способов задать генератор языка опирается на \emph{системы переписывания строк}, из которых, в дальнейшем, можно получить так называемые \emph{порождающие грамматики}.
5
5
6
+
\mytodo{Указать, что наше определение отличается от машин Маркова.}
6
7
\begin{definition}[Система переписывания]
7
8
\emph{Система переписывания (строк)}%
8
9
\sidenote{Один из классически примеров систем переписывания строк~--- это машины Маркова, или алгорифмы Маркова~\cite{markov1954theory}.}~---
@@ -22,8 +23,9 @@ \section{Генераторы}
22
23
В качестве критерия остановки выберем невозможность применить ни одно из доступных правил.
23
24
Получившееся при этом слово будем считать результатом работы машины.
24
25
Зафиксировав стартовую строку и набор правил, можно достаточно естественным образом получить язык, как множество всех слов, являющихся результатом работы машины.
26
+
\mytodo{Добавить пример работы системы переписывания.}
25
27
26
28
Представленная система является, скорее, неформальной базой для создания более содержательных систем.
27
29
Далее, накладывая дополнительные ограничения на правила машины и алгоритм её работы, мы будем получать некоторые содержательные классы языков.
28
30
29
-
Отметим, что подход к определению языков через системы переписывания не всегда удобен. Например, не получается с их использованием естественным образом определить булевы языки.
31
+
Отметим, что подход к определению языков через системы переписывания не всегда удобен. Например, не получается с их использованием естественным образом определить булевы языки.\mytodo{Добавить ссылки.}
Copy file name to clipboardExpand all lines: tex/part_02_Foundations/chapter_04_FormalLanguageTheoryIntro/05_LanguageClasses.tex
+5-11Lines changed: 5 additions & 11 deletions
Original file line number
Diff line number
Diff line change
@@ -24,10 +24,11 @@ \section{Классы языков}
24
24
Вариация предложенной Александром Охотиным иерархии\sidenote{
25
25
Данная вариация скомпонована из версии, представленной в презентации \enquote{Underlying principles and recurring ideas of formal grammars} и версии, взятой из работы~\cite{MRYKHIN2023113829}.
26
26
} представлена на изображении~\ref{fig:hierarchyOkhotin}.
27
-
Приведённая диаграмма содержит регулярные и контекстно-свободные.
27
+
\fixit{Приведённая диаграмма содержит регулярные и контекстно-свободные.
28
28
Так и подклассы, лежащие между ними.
29
-
Вместе с этим, классы, лежащие выше контекстно-свободных: многокомпонентные контекстно-свободные, булевы, конъюнктивные, их подклассы.
29
+
Вместе с этим, классы, лежащие выше контекстно-свободных: многокомпонентные контекстно-свободные, булевы, конъюнктивные, их подклассы.}{Сделать нормальное описание.}
30
30
31
+
\mytodo{Сделать нормальную подпись к картинке.}
31
32
\begin{figure}[h!]
32
33
\begin{center}
33
34
\resizebox{\textwidth}{!}{
@@ -42,12 +43,5 @@ \section{Классы языков}
42
43
Для того, чтобы содержательно рассуждать про различные классы языков, необходимо иметь механизм, позволяющий чётко отделить один класс от другого.
43
44
\emph{Лемма о накачке} для соответствующего класса~--- один из классических таких механизмов.
44
45
Однако, не для всех классов языков соответствующие результаты получены.
45
-
Так, например, формулировка леммы о накачки для многокомпонентных контекстно-свободных языков в общем виде всё ещё не найдена, хотя существуют формулировки для отдельных подклассов.
46
-
Аналогично, для булевых и конъюнктивных языков всё ещё не предложены аналоги лемм о накачке.
47
-
48
-
49
-
%\section{Вопросы и задачи}
50
-
%\begin{enumerate}
51
-
% \item !!!
52
-
% \item !!!
53
-
%\end{enumerate}
46
+
\fixit{Так, например, формулировка леммы о накачки для многокомпонентных контекстно-свободных языков в общем виде всё ещё не найдена, хотя существуют формулировки для отдельных подклассов.
47
+
Аналогично, для булевых и конъюнктивных языков всё ещё не предложены аналоги лемм о накачке.}{Добавить ссылки и сноски.}
0 commit comments