Skip to content

Commit 1910bfa

Browse files
committed
Развешены todo-шки.
1 parent d574331 commit 1910bfa

18 files changed

Lines changed: 54 additions & 34 deletions

File tree

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
- В данном проекте находятся исходники книги на TeX.
33
- Книга на русском. Язык изложения --- русский.
44
- Корневой файл: `tex/FormalLanguageConstrainedReachabilityLectureNotes.tex`
5+
- Для базовой быстрой навигации по книге можно использовать `book_structure.md`. В нём структура книги по файлам и краткое содержимое. Не забывай обновлять структуру и краткое содержание, если что-то изменил, добавил, удалил.
56

67
## Сборка
78
- Находясь в директории `tex` запустить `latexmk -interaction=nonstopmode -shell-escape FormalLanguageConstrainedReachabilityLectureNotes.tex`

tex/frontmatter/Introduction.tex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
Основной акцент будет сделан на регулярных и контекстно-свободных языках, однако будут затронуты и такие классы, как многокомпонентные контекстно-свободные (Multiple Context-Free Languages, MCFL~\sidecite{SEKI1991191}).
3939
Будет показано, что теория формальных языков и алгоритмы синтаксического анализа применимы не только для синтаксического анализа языков программирования или естественных языков, но и для формулирования запросов к графам (например в графовых баз данных и в инструментах статического анализа кода), что приводит к возникновению новых задач и переосмыслению старых.
4040

41+
\mytodo{Актуализировать описание структуры работы, сослаться на рисунок.}
4142
Структура данной работы такова.
4243
В начале (в части~\ref{chpt:GraphTheoryIntro}) мы рассмотрим основные понятия из теории графов, необходимые в данной работе. Данные разделы являются подготовительными и не обязательны к прочтению, если такие понятия как \textit{ориентированный граф} и \textit{матрица смежности} уже известны читателю.
4344
Более того, они лишь вводят определения, подразумевая, что более детальное изучение соответствующих разделов науки остается за рамками этой работы и скорее всего уже проделано читателем.
@@ -47,6 +48,7 @@
4748
После этого мы будем подробно рассматривать различные алгоритмы решения этой задачи, включая алгоритмы на основе GLR (раздел~\ref{sec:GLR}), попутно вводя специфичные для рассматриваемого алгоритма структуры данных.
4849
Большинство алгоритмов будут основаны на классических алгоритмах синтаксического анализа, таких как CYK или LR.
4950

51+
\mytodo{Доделать схему книги.}
5052
\begin{figure*}
5153
\caption{Структура данной книги}
5254
\begin{center}

tex/part_01_Prep/chapter_01_LinearAlgebra/07_MatricesAndVectors.tex

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,8 @@ \section{Матрицы и вектора}
225225
\end{multline*}
226226
\end{definition}
227227

228+
%Заметим, что скалярная операция~--- это частный случай произвеления Кронекера: достаточно превратить элемент носителя полугруппы в матрицу размера $1\times 1$.
229+
228230
\begin{remark}
229231
\label{rem:KronIsNotCommutative}
230232
Произведение Кронекера не является коммутативным\sidenote{Показать это можно по определению: найти пример, для которого $M \otimes N \neq N \otimes M$.}.
@@ -241,6 +243,7 @@ \section{Матрицы и вектора}
241243
\end{pmatrix}
242244
}
243245

246+
\mytodo{Попробовать ужать прмиер на предыдущую страницу.}
244247
\begin{example}
245248
Возьмём в качестве полугруппы целые числа с умножением.
246249
\[
@@ -424,10 +427,4 @@ \section{Матрицы и вектора}
424427
% Естественный вопрос о существовании истинно субкубического алгоритма перемножения матриц над полукольцами (или же комбинаторного перемножения матриц) всё ещё не решён%
425428
% \sidenote{Один из кандидатов~--- работа~\cite{das2018lower}, однако на текущий момент предложенное в ней решение требует проверки.}.
426429

427-
% %Заметим, что скалярная операция~--- это частный случай произвеления Кронекера: достаточно превратить элемент носителя полугруппы в матрицу размера $1\times 1$.
428-
429-
% %\section{Вопросы и задачи}
430-
% %\begin{enumerate}
431-
% % \item Привидите примеры некоммутативных операций.
432-
% % \item Привидите примеры ситуаций, когда наличие у бинарных операций каких-либо дополнитльных свойств (ассоциативности, коммутативности), позволяет строить более эффективные алгоритмы, чем в общем случае.
433-
% %\end{enumerate}
430+
%

tex/part_01_Prep/chapter_01_LinearAlgebra/08_AppliedAspects.tex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ \section{Прикладные особенности}
33

44
\mytodo{Написать раздел}
55
Планируемое содержание раздела: Взгляд программиста: типы данных, не совсем честные алгебраические структуры (<<просто лишь бы типизировалось>>), GraphBLAS, разреженность, параллельность. Операции типа маски, map2 и так далее.
6+
\mytodo{Перенести из GraphBLAS_in_functional_style_КИО. Про map2, Option, GraphBLAS и его проблемы. Связать с определением обобщённой матрицы смежности, с поэлементными операциями. }

tex/part_01_Prep/chapter_03_GraphTheoryIntro/04_BFS.tex

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ \section{Обход графа в ширину}
2727
\label{fig:bfs_schema}
2828
\end{marginfigure}
2929

30+
\mytodo{Обновить сноску. Уже есть статья по DFS в терминах линенйной алгебры.}
3031
Алгоритм обхода в ширину может быть переформулирован в терминах матрично-векторных операций следующим образом%
3132
\sidenote{
3233
Стоит отметить, что ситуация с не менее известным обходом в глубину (Depth-First Search, DFS) более сложная: на момент написания текста не известно <<естественного>> выражения данного обхода в терминах линейной алгебры.
@@ -44,6 +45,7 @@ \section{Обход графа в ширину}
4445
Такие шаги повторяются до тех пор, пока фронт не окажется пустым ($\overline{0}$, нет новых вершин для посещения).
4546
А результатом работы является информация, накопленная в \emph{visited}.
4647

48+
\mytodo{Доработать сноску.}
4749
Псевдокод самой простой версии алгоритма\sidenote{
4850
Возможны вариации. Точно не самый оптимальный. Ссылка на AGraph и на статью какую-нибудь!!!!
4951
} представлен на листинге~\ref{algo:BFS_linal}.
@@ -87,6 +89,7 @@ \section{Обход графа в ширину}
8789

8890
Заметим, что данный алгоритм решает очень простую задачу: выясняет, какие вершины достижимы из стартовой.
8991
Решение более содержательных задач потребует, прежде всего, создания более сложных алгебраических структур.
92+
\mytodo{Сноска про Parent-BFS, Level-BFS и т.д.}
9093
Однако, общий принцип, шаги алгоритма, останется неизменным.
9194

9295
%$$\boxed{\oplus}^{\BbbB}$$
@@ -401,7 +404,7 @@ \section{Обход графа в ширину}
401404
\end{marginfigure}
402405

403406
Проделаем ещё один шаг.
404-
Он будет последим содержательным шагом: на следующем шаге мы всего лишь узнаем, что все вершины посещены.
407+
Он будет последим содержательным шагом, так как на следующем шаге мы всего лишь узнаем, что все вершины посещены.
405408
\begin{align*}
406409
\emph{new\_front} & = \emph{current\_front} \mmult{\BbbB} M \\
407410
& =
@@ -447,5 +450,4 @@ \section{Обход графа в ширину}
447450
\end{example}
448451

449452
Идеи, заложенные в описанных выше алгоритмах, будут использоваться нами далее, при решении других задач.
450-
451-
Достижимость от нескольких стартовых вершин через обход в ширину, основанный на линейной алгебре~\sidecite{9286186}
453+
\mycomment{Добавить что-то про BFS с построением подграфа и т.д.? В целом, такая идея фильтрации рёбер нужна будет при некоторых алгоритмах дальше.}

tex/part_02_Foundations/chapter_04_FormalLanguageTheoryIntro/01_SetOperations.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ \section{Теоретико-множественные операции над
88
\item $\overline{L} = \{ \omega \mid \omega \in \Sigma^* \text{ и } \omega \notin L\} = \Sigma^* \setminus L$, где $L$~--- язык над алфавитом $\Sigma$ .
99
\end{itemize}
1010

11-
Многие прикладные задачи, в которых возникают формальные языки, достаточно естественным образом формулируются в теоретико-множественных терминах.
11+
Многие прикладные задачи, в которых возникают формальные языки, достаточно естественным образом формулируются в \fixit{теоретико-множественных}{Вёрстка!} терминах.
1212
Так, задача распознавания~--- это задача проверки принадлежности элемента множеству.
1313
Далее мы рассмотрим прикладные задачи, решение которых требует, например, проверки включения одного языка в другой, или проверки непустоты пересечения двух языков.
1414
Разрешимость таких задач, алгоритмы решения, их сложность и другие свойства, зависят от свойств языков.
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
\section{Распознаватели}
22
\tikzsetfigurename{FLT_Recognizers_}
33

4-
Распознаватель может быть сконструирован как некоторая формальная машина, которая принимает или отвергает те или иные слова, записанные на входной ленте.
4+
Распознаватель может быть сконструирован как некоторая формальная машина (вычислитель), которая принимает или отвергает те или иные слова, записанные на входной ленте.
55
Таким образом, язык задаваемый некоторым вычислителем~--- это множество принимаемых им слов.
6+
\mytodo{Как увязать с иерархией Хомского, которая обсуждается далее?}
67
Далее становится возможно классифицировать языки по тому, какого класса распознаватель необходим и достаточен, чтобы их задать.
78
Например, можно выделить класс языков, задаваемых конечными автоматами.
89
На этом, в частности, построена \emph{иерархия Хомского}.

tex/part_02_Foundations/chapter_04_FormalLanguageTheoryIntro/04_Generators.tex

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ \section{Генераторы}
33

44
Один из базовых способов задать генератор языка опирается на \emph{системы переписывания строк}, из которых, в дальнейшем, можно получить так называемые \emph{порождающие грамматики}.
55

6+
\mytodo{Указать, что наше определение отличается от машин Маркова.}
67
\begin{definition}[Система переписывания]
78
\emph{Система переписывания (строк)}%
89
\sidenote{Один из классически примеров систем переписывания строк~--- это машины Маркова, или алгорифмы Маркова~\cite{markov1954theory}.}~---
@@ -22,8 +23,9 @@ \section{Генераторы}
2223
В качестве критерия остановки выберем невозможность применить ни одно из доступных правил.
2324
Получившееся при этом слово будем считать результатом работы машины.
2425
Зафиксировав стартовую строку и набор правил, можно достаточно естественным образом получить язык, как множество всех слов, являющихся результатом работы машины.
26+
\mytodo{Добавить пример работы системы переписывания.}
2527

2628
Представленная система является, скорее, неформальной базой для создания более содержательных систем.
2729
Далее, накладывая дополнительные ограничения на правила машины и алгоритм её работы, мы будем получать некоторые содержательные классы языков.
2830

29-
Отметим, что подход к определению языков через системы переписывания не всегда удобен. Например, не получается с их использованием естественным образом определить булевы языки.
31+
Отметим, что подход к определению языков через системы переписывания не всегда удобен. Например, не получается с их использованием естественным образом определить булевы языки.\mytodo{Добавить ссылки.}

tex/part_02_Foundations/chapter_04_FormalLanguageTheoryIntro/05_LanguageClasses.tex

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,11 @@ \section{Классы языков}
2424
Вариация предложенной Александром Охотиным иерархии\sidenote{
2525
Данная вариация скомпонована из версии, представленной в презентации \enquote{Underlying principles and recurring ideas of formal grammars} и версии, взятой из работы~\cite{MRYKHIN2023113829}.
2626
} представлена на изображении~\ref{fig:hierarchyOkhotin}.
27-
Приведённая диаграмма содержит регулярные и контекстно-свободные.
27+
\fixit{Приведённая диаграмма содержит регулярные и контекстно-свободные.
2828
Так и подклассы, лежащие между ними.
29-
Вместе с этим, классы, лежащие выше контекстно-свободных: многокомпонентные контекстно-свободные, булевы, конъюнктивные, их подклассы.
29+
Вместе с этим, классы, лежащие выше контекстно-свободных: многокомпонентные контекстно-свободные, булевы, конъюнктивные, их подклассы.}{Сделать нормальное описание.}
3030

31+
\mytodo{Сделать нормальную подпись к картинке.}
3132
\begin{figure}[h!]
3233
\begin{center}
3334
\resizebox{\textwidth}{!}{
@@ -42,12 +43,5 @@ \section{Классы языков}
4243
Для того, чтобы содержательно рассуждать про различные классы языков, необходимо иметь механизм, позволяющий чётко отделить один класс от другого.
4344
\emph{Лемма о накачке} для соответствующего класса~--- один из классических таких механизмов.
4445
Однако, не для всех классов языков соответствующие результаты получены.
45-
Так, например, формулировка леммы о накачки для многокомпонентных контекстно-свободных языков в общем виде всё ещё не найдена, хотя существуют формулировки для отдельных подклассов.
46-
Аналогично, для булевых и конъюнктивных языков всё ещё не предложены аналоги лемм о накачке.
47-
48-
49-
%\section{Вопросы и задачи}
50-
%\begin{enumerate}
51-
% \item !!!
52-
% \item !!!
53-
%\end{enumerate}
46+
\fixit{Так, например, формулировка леммы о накачки для многокомпонентных контекстно-свободных языков в общем виде всё ещё не найдена, хотя существуют формулировки для отдельных подклассов.
47+
Аналогично, для булевых и конъюнктивных языков всё ещё не предложены аналоги лемм о накачке.}{Добавить ссылки и сноски.}

0 commit comments

Comments
 (0)