Skip to content

Commit 461df95

Browse files
committed
Small improvements of structure.
1 parent 364866b commit 461df95

10 files changed

+143
-57
lines changed

tex/Context-Free_Languages.tex

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
\chapter{Контекстно-свободные грамматики и языки}\label{CFG}
1+
\chapter{Контекстно-свободные языки и грамматики}\label{CFG}
22

33
Из всего многообразия нас будут интересовать прежде всего контекстно-свободные грамматики.
44

@@ -530,6 +530,60 @@ \section{Замкнутость КС языков относительно оп
530530

531531
\qed
532532

533+
\section{Рекурсивные автоматы и сети}
534+
535+
Рекурсивный автомат или сеть --- это представление контекстно-свободных грамматик, обобщающее конечные автоматы.
536+
В нашей работе мы будем придерживаться термина \textbf{рекурсивный автомат}.
537+
Классическое определение рекурсивного автомата выглядит следующим образом.
538+
539+
\begin{definition}
540+
Рекурсивный автомат --- это кортеж вида $\langle N, \Sigma, S, D \rangle$, где
541+
\begin{itemize}
542+
\item $N$ --- нетерминальный алфавит;
543+
\item $\Sigma$ --- терминальный алфавит;
544+
\item $S$ --- стартовый нетерминал;
545+
\item $D$ --- конечный автомат над $N \cup \Sigma$ в котором стартовые и финальные состояния помечены подмножествами $N$.
546+
\end{itemize}
547+
\end{definition}
548+
549+
Построение РКА по грамматике.
550+
551+
Допущение о том, что все состояния занумерованы подряд и уникальны.
552+
553+
Немного ссылок на работы по РКА.
554+
555+
Построим рекурсивный автомат для грамматики $G$:
556+
\begin{align*}
557+
S &\to a S b \\
558+
S &\to a b \\
559+
\end{align*}
560+
561+
562+
\begin{align}
563+
\label{input1}
564+
\begin{tikzpicture}[node distance=2.5cm,shorten >=1pt,on grid,auto]
565+
\node[state, initial] (q_0) {$0 \{S\}$};
566+
\node[state] (q_1) [right=of q_0] {$1$};
567+
\node[state] (q_2) [right=of q_1] {$2$};
568+
\node[state, accepting] (q_3) [right=of q_2] {$3\{S\}$};
569+
\path[->]
570+
(q_0) edge node {a} (q_1)
571+
(q_1) edge node {S} (q_2)
572+
(q_2) edge node {b} (q_3)
573+
(q_1) edge[bend left, above] node {b} (q_3);
574+
\end{tikzpicture}
575+
\end{align}
576+
577+
Используем стандартные обозначения для стартовых и финальных состояний.
578+
Дополнительно в стартовых и финальных состояниях укажем нетерминалы, для которых эти состояния стартовые/финальные.
579+
580+
В некоторых случаях рекурсивный автомат можно рассматривать как конечный автомат над смешанным алфавитом.
581+
Именно такой взгляд мы будем использовать при изложении алгоритма.
582+
583+
Пример интерпретации конечного автомата.
584+
585+
586+
533587
%\section{Вопросы и задачи}
534588
%\begin{enumerate}
535589
% \item Постройте дерево вывода цепочки $w=aababb$ в грамматике $G=\langle\{a,b\},\{S\},\{S\rightarrow \varepsilon \ | \ a \ S \ b \ S \}, S \rangle$.

tex/FormalLanguageConstrainedReachabilityLectureNotes.bib

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1475,4 +1475,6 @@ @book{Courcelle2009
14751475
publisher = {Cambridge University Press},
14761476
author = {Bruno Courcelle and Joost Engelfriet},
14771477
title = {Graph Structure and Monadic Second-Order Logic}
1478-
}
1478+
}
1479+
1480+
@INPROCEEDINGS{9286186, author={Elekes, Márton and Nagy, Attila and Sándor, Dávid and Antal, János Benjamin and Davis, Timothy A. and Szárnyas, Gábor}, booktitle={2020 IEEE High Performance Extreme Computing Conference (HPEC)}, title={A GraphBLAS solution to the SIGMOD 2014 Programming Contest using multi-source BFS}, year={2020}, volume={}, number={}, pages={1-7}, doi={10.1109/HPEC43674.2020.9286186}}

tex/FormalLanguageConstrainedReachabilityLectureNotes.tex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@
163163
\input{FormalLanguageTheoryIntro}
164164
\input{RegularLanguages}
165165
\input{Context-Free_Languages}
166-
%\input{Multiple_Context-Free_Languages}
166+
\input{Multiple_Context-Free_Languages}
167167
%\input{ConjunctiveAndBooleanLanguages}
168168
\input{FLPQ}
169169
\input{RPQ}
@@ -175,6 +175,7 @@
175175
\input{GLL-based_CFPQ}
176176
\input{GLR-based_CFPQ}
177177
%\input{CombinatorsForCFPQ}
178+
\input{Multiple_Context-Free_Language_Reachability}
178179
%\input{DerivativesForCFPQ}
179180
%\input{CFPQ_to_Datalog}
180181
%\input{Conclusion}

tex/FormalLanguageTheoryIntro.tex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@
6060

6161

6262
Общие слова про порождающие грамматики. Через машины Маркова, переписывания. Далее --- от того, какие ограничения на правила машины, зависит класс языков.
63+
64+
Основные классы языков.
6365
%Теоретико-множественные задачи над языками и их применение.
6466
%О том, что многое --- про пересечение, проверку пустоты, вложенность.
6567

tex/GraphTheoryIntro.tex

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,27 @@ \section{Основные определения}
174174

175175
Таким образом, уже можно заметить, что введение моноида как абстракции позволяет достаточно унифицированным образом смотреть на различные графы и их матрицы смежности. Далее мы увидим, что данный путь позволит решать унифицированным образом достаточно широкий круг задач, связанных с анализом путей в графах. Но сперва мы сформулируем различные варианты задачи поиска путей в графе. % Это необходимо для формулировки задач, на решение которых мы в конечном итоге нацелены.
176176

177+
\section{Обход графа в ширину}
178+
179+
Обход графа в ширину --- это одна из фундаментальных задач анализа графов, для решения которой существует соответствующий алгоритм, изложенный в классической литературе (см., например,~\cite{} или ~\cite{}).
180+
181+
В общих чертах, задача заключается в том, чтобы начиная с некоторой вершины графа (источника) обойти все достижимые из неё вершины в некотором порядке. Шаг --- просмотр все смежных. И так для всего фронта. Главное не посещать одну и ту же вершину несколько раз.
182+
183+
Псевдокод классического алгоритма
184+
185+
Пример.
186+
187+
Алгоритм обхода в ширину может быть переформулирован в терминах матрично-векторных операций. Решение через линейную алгебру.
188+
189+
Псевдокод алгоритма на ЛА
190+
191+
Пример.
192+
193+
multiple-source BFS. Тот же обход в ширину, только источников несколько и надо помнить, какая из вершин из какого источника достижима. Постановка задачи. Решение через линейную алгебру~\cite{9286186} Уже не вектор, а матрица: храним информацию про каждую стартовую вершину отдельно.
194+
195+
Псевдокод алгоритма на ЛА
196+
197+
Пример.
177198

178199
\section{Задачи поиска путей}
179200

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
\chapter{Поиск путей с ограничениями в терминах многокомпонентных контекстно-свободных языков}
2+
3+
В статтическом анализе кода --- ещё одна аппроксимация. Например, On. Есть ли точно описываемые задачи?
4+
5+
Алгоритм на матрицах
Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
\chapter{Многокомпонентные контекстно-свободные языки}
22

3-
Общая теория. Лпределение, свойства, классы.
3+
Общая теория. Определение, свойства, классы.
44

5-
Про MIX и $O_n$
6-
7-
\section{Поиск путей с ограничениями в терминах многокомпонентных контекстно-свободных языков}
5+
Леммы о накачке.
86

9-
В статанализе --- ещё одна аппроксимация.
7+
Про MIX и $O_n$
108

11-
Алгоритм на матрицах

tex/RPQ.tex

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
\chapter{Поиск путей с регулярными ограничениями}
22

3-
\section{!!!}
3+
\section{Достижимость между всеми парами вершин}
44

5+
Через тензорное произведение
56

6-
\section{!!!}
7+
\section{Достижимость с несколькими источниками}
8+
9+
Достижимость от нескольких стартовых вершин через обход в ширину, основанный на линейной алгебре~\cite{9286186}.

tex/RegularLanguages.tex

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,56 @@ \chapter{Регулярные языки}
22

33
Регулярные языки, конечные автоматы, взаимные конвертации, замкнутость.
44

5-
Лемма о накачке
5+
\begin{definition}
6+
Регулярное множество.
7+
\end{definition}
8+
9+
\section{Конечные автоматы}
10+
11+
\begin{definition}
12+
Конечный автомат.
13+
\end{definition}
14+
15+
Пример КА.
16+
17+
Конфигурация, переход между конфигурациями.
18+
19+
Пример интерпретации конечного автомата.
20+
21+
Построение КА по регулярке и регулярки по КА.
22+
23+
Алгоритмы
24+
25+
Примеры.
26+
27+
\section{Лево(право)линейные грамматики}
28+
29+
\begin{definition}
30+
Лево (право)линенйная грамматика
31+
\end{definition}
32+
33+
Построение грамматики по автомату.
34+
35+
Пример построения грамматики по автомату.
36+
37+
Автомат по грамматике.
38+
39+
\section{Лемма о накачке}
40+
41+
Лемма о накачке для регулярных языков.
42+
43+
Доказательство леммы о накачке для регулярных языков.
44+
45+
\section{Замкнутость регулярных языков относительно операций}
46+
47+
Доказательство замкнутости относительно операций. Алгоритмы для соответствующих операций.
648

749
Линейная алгебра для работы с регулярными языками: пересечение, замыкание.
850

51+
Построение пересечения через тензорное произведение автоматов.
52+
53+
Пересечение через синхронный обход в ширину.
54+
955
%\section{Вопросы и задачи}
1056
%
1157
%Построить базу.

tex/TensorProduct.tex

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -10,51 +10,6 @@ \chapter{КС достижимость через тензорное произ
1010

1111
В основе подхода лежит использование рекурсивных сетей или рекурсивных автоматов в качестве представления контекстно-свободных грамматик и использование тензорного (прямого) произведения для нахождения пересечения автоматов.
1212

13-
\section{Рекурсивные автоматы и сети}
14-
15-
Рекурсивный автомат или сеть --- это представление контекстно-свободных грамматик, обобщающее конечные автоматы.
16-
В нашей работе мы будем придерживаться термина \textbf{рекурсивный автомат}.
17-
Классическое определение рекурсивного автомата выглядит следующим образом.
18-
19-
\begin{definition}
20-
Рекурсивный автомат --- это кортеж вида $\langle N, \Sigma, S, D \rangle$, где
21-
\begin{itemize}
22-
\item $N$ --- нетерминальный алфавит;
23-
\item $\Sigma$ --- терминальный алфавит;
24-
\item $S$ --- стартовый нетерминал;
25-
\item $D$ --- конечный автомат над $N \cup \Sigma$ в котором стартовые и финальные состояния помечены подмножествами $N$.
26-
\end{itemize}
27-
\end{definition}
28-
29-
30-
31-
Построим рекурсивный автомат для грамматики $G$:
32-
\begin{align*}
33-
S &\to a S b \\
34-
S &\to a b \\
35-
\end{align*}
36-
37-
38-
\begin{align}
39-
\label{input1}
40-
\begin{tikzpicture}[node distance=2.5cm,shorten >=1pt,on grid,auto]
41-
\node[state, initial] (q_0) {$0 \{S\}$};
42-
\node[state] (q_1) [right=of q_0] {$1$};
43-
\node[state] (q_2) [right=of q_1] {$2$};
44-
\node[state, accepting] (q_3) [right=of q_2] {$3\{S\}$};
45-
\path[->]
46-
(q_0) edge node {a} (q_1)
47-
(q_1) edge node {S} (q_2)
48-
(q_2) edge node {b} (q_3)
49-
(q_1) edge[bend left, above] node {b} (q_3);
50-
\end{tikzpicture}
51-
\end{align}
52-
53-
Используем стандартные обозначения для стартовых и финальных состояний.
54-
Дополнительно в стартовых и финальных состояниях укажем нетерминалы, для которых эти состояния стартовые/финальные.
55-
56-
В некоторых случаях рекурсивный автомат можно рассматривать как конечный автомат над смешанным алфавитом.
57-
Именно такой взгляд мы будем использовать при изложении алгоритма.
5813

5914

6015
\section{Тензорное произведение}

0 commit comments

Comments
 (0)