Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 66ee2e7

Browse files
committed
Merge branch 'LinAl' into dev
2 parents c030bfb + 906f162 commit 66ee2e7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+2902
-2897
lines changed

‎README.md‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
[![Ubuntu](https://github.com/JetBrains-Research/FormalLanguageConstrainedReachability-LectureNotes/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/JetBrains-Research/FormalLanguageConstrainedReachability-LectureNotes/actions/workflows/main.yml)
55
[![License](https://img.shields.io/badge/license-CC--BY--SA--4.0-orange)](https://github.com/JetBrains-Research/FormalLanguageConstrainedReachability-LectureNotes/blob/master/LICENSE.txt)
66

7-
Данный текст есть попытка изложить основные идеи и результаты в такой области, как поиск путей (или достижимость) с ограничениями в терминах формальных языков. Наиболее чато встречающиеся частные случаи данной задачи, с которыми достаточно легко встретиться в литературе:
8-
- Поиск путей с регулярными ограничениями, Regular Path Querying, RPQ
9-
- Поиск путей с контекстно-свободными ограничениями, Context-Free Path Querying, CFPQ
10-
- Достижимость с контекстно-свободными ограничениями, Context-Free Language Reachability, CFL-r
7+
Данный текст есть попытка изложить основные идеи и результаты в такой области, как поиск путей (или достижимость) с ограничениями в терминах формальных языков. Наиболее часто встречающиеся частные случаи данной задачи, с которыми достаточно легко встретиться в литературе, следующие.
8+
- Поиск путей с регулярными ограничениями, Regular Path Querying, RPQ.
9+
- Поиск путей с контекстно-свободными ограничениями, Context-Free Path Querying, CFPQ.
10+
- Достижимость с контекстно-свободными ограничениями, Context-Free Language Reachability, CFL-r.
1111

1212
Указанные выше англоязычные термины полезны для того, чтобы найти больше информации по теме.
1313

@@ -20,15 +20,15 @@
2020

2121
## Скачать pdf
2222

23-
* Текущую версию можно найти в [артифактах сборки](https://github.com/JetBrains-Research/FormalLanguageConstrainedReachability-LectureNotes/actions/runs/1004758399).
23+
* Текущую версию можно найти в [артефактах сборки](https://github.com/JetBrains-Research/FormalLanguageConstrainedReachability-LectureNotes/actions/runs/1004758399).
2424
* Официальные "издания" можно найти в [релизах](https://github.com/JetBrains-Research/FormalLanguageConstrainedReachability-LectureNotes/releases).
2525

2626
## Собрать из исходников
2727

2828
Если вы решили что-то изменить в тексте или просто собрать pdf из исходников, то необходимо проделать следующие шаги.
2929
- Устанвить [TeX Live](https://tug.org/texlive/) или аналогичный дистрибутив.
3030
- Сделать клон репозитория.
31-
- Зайти в папку ```tex```
31+
- Зайти в папку ```tex```.
3232
- Выполнить команду
3333
```
3434
make

‎tex/CYK_for_CFPQ.tex‎

Lines changed: 84 additions & 106 deletions
Large diffs are not rendered by default.

‎tex/Context-Free_Languages.tex‎

Lines changed: 51 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -187,35 +187,7 @@ \section{Дерево вывода}\label{sect:DerivTree}
187187
\[ G = \langle \{a,b\}, \{S\}, S, \{S \to a \ S \ b \ S, S \to \varepsilon\} \rangle \]
188188

189189
\begin{center}
190-
191-
\begin{tikzpicture}[sibling distance=4em,
192-
every node/.style = {shape=rectangle, rounded corners,
193-
draw, align=center,
194-
top color=white, bottom color=blue!20}]]
195-
\node {S}
196-
child { node {a} }
197-
child { node {S}
198-
child { node {$\varepsilon$}}
199-
}
200-
child { node {b} }
201-
child { node {S}
202-
child {node {a}}
203-
child { node {S}
204-
child { node {$\varepsilon$}}
205-
}
206-
child { node {b} }
207-
child { node {S}
208-
child {node {a}}
209-
child {node {S}
210-
child {node {$\varepsilon$}}
211-
}
212-
child {node {b}}
213-
child {node {S}
214-
child {node {$\varepsilon$}}
215-
}
216-
}
217-
};
218-
\end{tikzpicture}
190+
\input{figures/cfl/tree0.tex}
219191
\end{center}
220192

221193
\end{example}
@@ -338,7 +310,7 @@ \section{Нормальная форма Хомского}
338310
\begin{proof}
339311
\textit{Цепное правило} --- правило вида $A \to B\text{, где } A, B \in N\\$.
340312
\textit{Цепная пара} --- упорядоченная пара $(A,B)$, в которой $A\derives B$, используя только цепные правила.
341-
313+
342314
Алгоритм:
343315
\begin{enumerate}
344316
\item Найти все цепные пары в грамматике $G$.
@@ -361,7 +333,7 @@ \section{Нормальная форма Хомского}
361333

362334
\begin{proof}
363335
После удаления из грамматики правил, содержащих непорождающие нетерминалы, язык не изменится, так как непорождающие нетерминалы по определению не могли участвовать в выводе какого-либо слова.
364-
336+
365337
Алгоритм нахождения порождающих нетерминалов:
366338
\begin{enumerate}
367339
\item Множество порождающих нетерминалов пустое.
@@ -375,52 +347,52 @@ \section{Нормальная форма Хомского}
375347
\begin{example}
376348
Приведем в Нормальную Форму Хомского однозначную грамматику правильных скобочных последовательностей: $S \to a S b S \mid \varepsilon$
377349

378-
Первым шагом добавим новый нетерминал и сделаем его стартовым:
350+
Первым шагом добавим новый нетерминал и сделаем его стартовым:
379351

380352
\begin{align*}
381-
S_0 &\to S \\
353+
S_0 &\to S \\
382354
S &\to a S b S \mid \varepsilon
383355
\end{align*}
384356

385-
Заменим все терминалы на новые нетерминалы:
357+
Заменим все терминалы на новые нетерминалы:
386358

387359
\begin{align*}
388-
S_0 &\to S \\
389-
S &\to L S R S \mid \varepsilon \\
390-
L &\to a \\
360+
S_0 &\to S \\
361+
S &\to L S R S \mid \varepsilon \\
362+
L &\to a \\
391363
R &\to b
392364
\end{align*}
393365

394-
Избавимся от длинных правил:
366+
Избавимся от длинных правил:
395367

396368
\begin{align*}
397-
S_0 &\to S \\
398-
S &\to L S' \mid \varepsilon \\
399-
S' &\to S S'' \\
369+
S_0 &\to S \\
370+
S &\to L S' \mid \varepsilon \\
371+
S' &\to S S'' \\
400372
S'' &\to R S \\
401-
L &\to a \\
373+
L &\to a \\
402374
R &\to b
403375
\end{align*}
404376

405-
Избавимся от $\varepsilon$-продукций:
377+
Избавимся от $\varepsilon$-продукций:
406378

407379
\begin{align*}
408-
S_0 &\to S \mid \varepsilon \\
409-
S &\to L S' \\
410-
S' &\to S'' \mid S S'' \\
380+
S_0 &\to S \mid \varepsilon \\
381+
S &\to L S' \\
382+
S' &\to S'' \mid S S'' \\
411383
S'' &\to R \mid R S \\
412-
L &\to a \\
384+
L &\to a \\
413385
R &\to b
414386
\end{align*}
415387

416-
Избавимся от цепных правил:
388+
Избавимся от цепных правил:
417389

418390
\begin{align*}
419-
S_0 &\to L S' \mid \varepsilon \\
420-
S &\to L S' \\
421-
S' &\to b \mid R S \mid S S'' \\
391+
S_0 &\to L S' \mid \varepsilon \\
392+
S &\to L S' \\
393+
S' &\to b \mid R S \mid S S'' \\
422394
S'' &\to b \mid R S \\
423-
L &\to a \\
395+
L &\to a \\
424396
R &\to b
425397
\end{align*}
426398
\end{example}
@@ -463,14 +435,26 @@ \section{Лемма о накачке}
463435

464436
\begin{figure}
465437
\centering
466-
\includegraphics[width=0.5\textwidth]{pics/pumping_tree_1.pdf}
438+
\input{figures/cfl/pumping1.tex}
467439
\caption{Разбиение цепочки для леммы о накачке}
468440
\label{fig:pumping1}
469441
\end{figure}
470442

471443
\begin{figure}
472444
\centering
473-
\includegraphics[width=0.5\textwidth]{pics/pumping_tree_2.pdf}
445+
\begin{subfigure}[b]{0.4\textwidth}
446+
\centering
447+
\input{figures/cfl/pumping0.tex}
448+
\caption{$k = 0$.}
449+
% \label{fig:f1}
450+
\end{subfigure}
451+
\hfill
452+
\begin{subfigure}[b]{0.4\textwidth}
453+
\centering
454+
\input{figures/cfl/pumping2.tex}
455+
\caption{$k = 2$.}
456+
% \label{fig:f2}
457+
\end{subfigure}
474458
\caption{Пример накачки цепочки с рисунка~\ref{fig:pumping1}}
475459
\label{fig:pumping2}
476460
\end{figure}
@@ -493,24 +477,24 @@ \section{Замкнутость КС языков относительно оп
493477
\item Разность с регулярными языками: если $L_1$ --- контекстно-свободный, а $L_2$ --- регулярный, то $L_3 = L_1 \setminus L_2$ --- контекстно-свободный.
494478
\end{enumerate}
495479
\end{theorem}
496-
Для доказательства пунктов 1--4 можно построить КС граммтику нового языка имея грамматики для исходных.
480+
Для доказательства пунктов 1--4 можно построить КС граммтику нового языка имея грамматики для исходных.
497481
Будем предполагать, что множества нетерминальных символов различных граммтик для исходных языков не пересекаются.
498482
\begin{enumerate}
499-
\item $G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- граммтика для $L_1$, $G_1=\langle\Sigma_2,N_2,P_2,S_2\rangle$ --- граммтика для $L_2$, тогда $G_3=\langle\Sigma_1 \cup \Sigma_2, N_1 \cup N_2 \cup \{S_3\}, P_1 \cup P_2 \cup \{S_3 \to S_1 \mid S_2\} ,S_3\rangle$ --- граммтика для $L_3$.
483+
\item $G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- граммтика для $L_1$, $G_1=\langle\Sigma_2,N_2,P_2,S_2\rangle$ --- граммтика для $L_2$, тогда $G_3=\langle\Sigma_1 \cup \Sigma_2, N_1 \cup N_2 \cup \{S_3\}, P_1 \cup P_2 \cup \{S_3 \to S_1 \mid S_2\} ,S_3\rangle$ --- граммтика для $L_3$.
500484

501-
\item $G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- граммтика для $L_1$, $G_1=\langle\Sigma_2,N_2,P_2,S_2\rangle$ --- граммтика для $L_2$, тогда $G_3=\langle\Sigma_1 \cup \Sigma_2, N_1 \cup N_2 \cup \{S_3\}, P_1 \cup P_2 \cup \{S_3 \to S_1 S_2\} ,S_3\rangle$ --- граммтика для $L_3$.
485+
\item $G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- граммтика для $L_1$, $G_1=\langle\Sigma_2,N_2,P_2,S_2\rangle$ --- граммтика для $L_2$, тогда $G_3=\langle\Sigma_1 \cup \Sigma_2, N_1 \cup N_2 \cup \{S_3\}, P_1 \cup P_2 \cup \{S_3 \to S_1 S_2\} ,S_3\rangle$ --- граммтика для $L_3$.
502486

503-
\item $G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- граммтика для $L_1$, тогда $G_2=\langle\Sigma_1, N_1 \cup \{S_2\}, P_1 \cup \{S_2 \to S_1 S_2\ \mid \varepsilon\}, S_2\rangle$ --- граммтика для $L_2$.
487+
\item $G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- граммтика для $L_1$, тогда $G_2=\langle\Sigma_1, N_1 \cup \{S_2\}, P_1 \cup \{S_2 \to S_1 S_2\ \mid \varepsilon\}, S_2\rangle$ --- граммтика для $L_2$.
504488

505-
\item $G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- граммтика для $L_1$, тогда $G_2=\langle\Sigma_1, N_1, \{N^i \to \omega^R \mid N^i \to \omega \in P_1 \}, S_1\rangle$ --- граммтика для $L_2$.
489+
\item $G_1=\langle\Sigma_1,N_1,P_1,S_1\rangle$ --- граммтика для $L_1$, тогда $G_2=\langle\Sigma_1, N_1, \{N^i \to \omega^R \mid N^i \to \omega \in P_1 \}, S_1\rangle$ --- граммтика для $L_2$.
506490
\end{enumerate}
507491

508492
Чтобы доказать замкнутость относительно пересечения с регулярными языками, построим по КС грамматике рекурсивный автомат $R_1$, по регулярному выражению --- детерминированный конечный автомат $R_2$, и построим их прямое произведение $R_3$.
509-
Переходы по терминальным символам в новом автомате возможны тогда и только тогда, когда они возможны одновременно и в исходном рекурсивном автомате и в исходном конечном.
510-
За рекурсивные вызовы отвечает исходныа рекурсивный автомат.
493+
Переходы по терминальным символам в новом автомате возможны тогда и только тогда, когда они возможны одновременно и в исходном рекурсивном автомате и в исходном конечном.
494+
За рекурсивные вызовы отвечает исходныа рекурсивный автомат.
511495
Значит цепочка принимается $R_3$ тогда и только тогда, когда она принимается одновременно $R_1$ и $R_2$: так как состояния $R_3$ --- это пары из состояния $R_1$ и $R_2$, то по трассе вычислений $R_3$ мы всегда можем построить трассу для $R_1$ и $R_2$ и наоборот.
512496

513-
Чтобы доказать замкнутость относительно разности с регулятным языком, достаточно вспомнить, что регулярные языки замкнуты относительно дополнения, и выразить разность через пересечение с дополнением:
497+
Чтобы доказать замкнутость относительно разности с регулятным языком, достаточно вспомнить, что регулярные языки замкнуты относительно дополнения, и выразить разность через пересечение с дополнением:
514498
$$
515499
L_1 \setminus L_2 = L_1 \cap \overline{L_2}
516500
$$
@@ -527,25 +511,25 @@ \section{Замкнутость КС языков относительно оп
527511

528512
Чтобы доказать незамкнутость относительно пресечения, рассмотрим языки $L_1 = \{a^n b^n c^k \mid n \geq 0, k \geq 0\}$ и $L_2 = \{a^k b^n c^n \mid n \geq 0, k \geq 0\}$.
529513
Очевидно, что $L_1$ и $L_2$ --- контекстно-свободные языки.
530-
Рассмотрим $L_3 = L_1 \cap L_2 = \{a^n b^n c^n \mid n \geq 0\}$.
514+
Рассмотрим $L_3 = L_1 \cap L_2 = \{a^n b^n c^n \mid n \geq 0\}$.
531515
$L_3$ не является контекстно-свободным по лемме о накачке для контекстно-свободных языков.
532516

533517
Чтобы доказать незамкнутость относительно разности проделаем следующее.
534518
\begin{enumerate}
535-
\item Рассмотрим языки $L_4 = \{a^m b^n c^k \mid m \neq n, k \geq 0\}$ и $L_5 = \{a^m b^n c^k \mid n \neq k, m \geq 0\}$.
519+
\item Рассмотрим языки $L_4 = \{a^m b^n c^k \mid m \neq n, k \geq 0\}$ и $L_5 = \{a^m b^n c^k \mid n \neq k, m \geq 0\}$.
536520
Эти языки являются контекстно-свободными.
537521
Это легко заметить, если знать, что язык $L'_4 = \{a^m b^n c^k \mid 0 \leq m < n, k \geq 0\}$ задаётся следующей граммтикой:
538522
\begin{align*}
539523
S \to & S c & T \to & a T b \\
540524
S \to & T & T \to & T b \\
541-
& & T \to & b.
542-
\end{align*}
525+
& & T \to & b.
526+
\end{align*}
543527

544528
\item Рассмотрим язык $L_6 = \overline{L'_6} = \overline{\{a^n b^m c^k \mid n \geq 0, m \geq 0, k \geq 0\}}$. Данный язык является регулярным.
545529

546530
\item Рассмотрим язык $L_7 = L_4 \cup L_5 \cup L_6$ --- контектсно свободный, так как является объединением контекстно-свободных.
547531

548-
\item Рассмотрим $\overline{L_7} = \{a^n b^n c^n \mid n \geq 0\} = L_3$: $L_4$ и $L_5$ задают языки с правильным порядком символов, но неравным их количеством, $L_6$ задаёт язык с неправильным порядком символов.
532+
\item Рассмотрим $\overline{L_7} = \{a^n b^n c^n \mid n \geq 0\} = L_3$: $L_4$ и $L_5$ задают языки с правильным порядком символов, но неравным их количеством, $L_6$ задаёт язык с неправильным порядком символов.
549533
Из пердыдущего пункта мы знаем, что $L_3$ не является контекстно-свободным.
550534

551535
\end{enumerate}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /