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
Данный текст есть попытка изложить основные идеи и результаты в такой области, как поиск путей (или достижимость) с ограничениями в терминах формальных языков. Наиболее чато встречающиеся частные случаи данной задачи, с которыми достаточно легко встретиться в литературе:
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.
11
11
12
12
Указанные выше англоязычные термины полезны для того, чтобы найти больше информации по теме.
13
13
@@ -20,15 +20,15 @@
20
20
21
21
## Скачать pdf
22
22
23
-
* Текущую версию можно найти в [артифактах сборки](https://github.com/JetBrains-Research/FormalLanguageConstrainedReachability-LectureNotes/actions/runs/1004758399).
23
+
* Текущую версию можно найти в [артефактах сборки](https://github.com/JetBrains-Research/FormalLanguageConstrainedReachability-LectureNotes/actions/runs/1004758399).
24
24
* Официальные "издания" можно найти в [релизах](https://github.com/JetBrains-Research/FormalLanguageConstrainedReachability-LectureNotes/releases).
25
25
26
26
## Собрать из исходников
27
27
28
28
Если вы решили что-то изменить в тексте или просто собрать pdf из исходников, то необходимо проделать следующие шаги.
29
29
- Устанвить [TeX Live](https://tug.org/texlive/) или аналогичный дистрибутив.
\[ G = \langle\{a,b\}, \{S\}, S, \{S \to a \ S \ b \ S, S \to\varepsilon\}\rangle\]
188
188
189
189
\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}
219
191
\end{center}
220
192
221
193
\end{example}
@@ -338,7 +310,7 @@ \section{Нормальная форма Хомского}
338
310
\begin{proof}
339
311
\textit{Цепное правило} --- правило вида $A \to B\text{, где } A, B \in N\\$.
340
312
\textit{Цепная пара} --- упорядоченная пара $(A,B)$, в которой $A\derives B$, используя только цепные правила.
341
-
313
+
342
314
Алгоритм:
343
315
\begin{enumerate}
344
316
\item Найти все цепные пары в грамматике $G$.
@@ -361,7 +333,7 @@ \section{Нормальная форма Хомского}
361
333
362
334
\begin{proof}
363
335
После удаления из грамматики правил, содержащих непорождающие нетерминалы, язык не изменится, так как непорождающие нетерминалы по определению не могли участвовать в выводе какого-либо слова.
364
-
336
+
365
337
Алгоритм нахождения порождающих нетерминалов:
366
338
\begin{enumerate}
367
339
\item Множество порождающих нетерминалов пустое.
@@ -375,52 +347,52 @@ \section{Нормальная форма Хомского}
375
347
\begin{example}
376
348
Приведем в Нормальную Форму Хомского однозначную грамматику правильных скобочных последовательностей: $S \to a S b S \mid\varepsilon$
377
349
378
-
Первым шагом добавим новый нетерминал и сделаем его стартовым:
350
+
Первым шагом добавим новый нетерминал и сделаем его стартовым:
\caption{Пример накачки цепочки с рисунка~\ref{fig:pumping1}}
475
459
\label{fig:pumping2}
476
460
\end{figure}
@@ -493,24 +477,24 @@ \section{Замкнутость КС языков относительно оп
493
477
\item Разность с регулярными языками: если $L_1$ --- контекстно-свободный, а $L_2$ --- регулярный, то $L_3 = L_1\setminus L_2$ --- контекстно-свободный.
494
478
\end{enumerate}
495
479
\end{theorem}
496
-
Для доказательства пунктов 1--4 можно построить КС граммтику нового языка имея грамматики для исходных.
480
+
Для доказательства пунктов 1--4 можно построить КС граммтику нового языка имея грамматики для исходных.
497
481
Будем предполагать, что множества нетерминальных символов различных граммтик для исходных языков не пересекаются.
498
482
\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$.
500
484
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$.
502
486
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$.
504
488
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$.
506
490
\end{enumerate}
507
491
508
492
Чтобы доказать замкнутость относительно пересечения с регулярными языками, построим по КС грамматике рекурсивный автомат $R_1$, по регулярному выражению --- детерминированный конечный автомат $R_2$, и построим их прямое произведение $R_3$.
509
-
Переходы по терминальным символам в новом автомате возможны тогда и только тогда, когда они возможны одновременно и в исходном рекурсивном автомате и в исходном конечном.
510
-
За рекурсивные вызовы отвечает исходныа рекурсивный автомат.
493
+
Переходы по терминальным символам в новом автомате возможны тогда и только тогда, когда они возможны одновременно и в исходном рекурсивном автомате и в исходном конечном.
494
+
За рекурсивные вызовы отвечает исходныа рекурсивный автомат.
511
495
Значит цепочка принимается $R_3$ тогда и только тогда, когда она принимается одновременно $R_1$ и $R_2$: так как состояния $R_3$ --- это пары из состояния $R_1$ и $R_2$, то по трассе вычислений $R_3$ мы всегда можем построить трассу для $R_1$ и $R_2$ и наоборот.
512
496
513
-
Чтобы доказать замкнутость относительно разности с регулятным языком, достаточно вспомнить, что регулярные языки замкнуты относительно дополнения, и выразить разность через пересечение с дополнением:
497
+
Чтобы доказать замкнутость относительно разности с регулятным языком, достаточно вспомнить, что регулярные языки замкнуты относительно дополнения, и выразить разность через пересечение с дополнением:
514
498
$$
515
499
L_1\setminus L_2 = L_1\cap\overline{L_2}
516
500
$$
@@ -527,25 +511,25 @@ \section{Замкнутость КС языков относительно оп
527
511
528
512
Чтобы доказать незамкнутость относительно пресечения, рассмотрим языки $L_1 = \{a^n b^n c^k \mid n \geq0, k \geq0\}$ и $L_2 = \{a^k b^n c^n \mid n \geq0, k \geq0\}$.
529
513
Очевидно, что $L_1$ и $L_2$ --- контекстно-свободные языки.
$L_3$ не является контекстно-свободным по лемме о накачке для контекстно-свободных языков.
532
516
533
517
Чтобы доказать незамкнутость относительно разности проделаем следующее.
534
518
\begin{enumerate}
535
-
\item Рассмотрим языки $L_4 = \{a^m b^n c^k \mid m \neq n, k \geq0\}$ и $L_5 = \{a^m b^n c^k \mid n \neq k, m \geq0\}$.
519
+
\item Рассмотрим языки $L_4 = \{a^m b^n c^k \mid m \neq n, k \geq0\}$ и $L_5 = \{a^m b^n c^k \mid n \neq k, m \geq0\}$.
536
520
Эти языки являются контекстно-свободными.
537
521
Это легко заметить, если знать, что язык $L'_4 = \{a^m b^n c^k \mid0\leq m < n, k \geq0\}$ задаётся следующей граммтикой:
538
522
\begin{align*}
539
523
S \to & S c & T \to & a T b \\
540
524
S \to & T & T \to & T b \\
541
-
& & T \to & b.
542
-
\end{align*}
525
+
& & T \to & b.
526
+
\end{align*}
543
527
544
528
\item Рассмотрим язык $L_6 = \overline{L'_6} = \overline{\{a^n b^m c^k \mid n \geq 0, m \geq 0, k \geq 0\}}$. Данный язык является регулярным.
545
529
546
530
\item Рассмотрим язык $L_7 = L_4\cup L_5\cup L_6$ --- контектсно свободный, так как является объединением контекстно-свободных.
547
531
548
-
\item Рассмотрим $\overline{L_7} = \{a^n b^n c^n \mid n \geq0\} = L_3$: $L_4$ и $L_5$ задают языки с правильным порядком символов, но неравным их количеством, $L_6$ задаёт язык с неправильным порядком символов.
532
+
\item Рассмотрим $\overline{L_7} = \{a^n b^n c^n \mid n \geq0\} = L_3$: $L_4$ и $L_5$ задают языки с правильным порядком символов, но неравным их количеством, $L_6$ задаёт язык с неправильным порядком символов.
549
533
Из пердыдущего пункта мы знаем, что $L_3$ не является контекстно-свободным.
0 commit comments