Skip to content

Commit 5c28315

Browse files
committed
Регулярные языки. Лемма о накачке, леаолинейные граммтики
1 parent ee6520a commit 5c28315

File tree

3 files changed

+79
-5
lines changed

3 files changed

+79
-5
lines changed

tex/FormalLanguageConstrainedReachabilityLectureNotes.bib

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1970,4 +1970,15 @@ @inproceedings{10.1145/2949689.2949711
19701970
numpages = {12},
19711971
location = {Budapest, Hungary},
19721972
series = {SSDBM '16}
1973+
}
1974+
1975+
@article{chomsky1958finite,
1976+
title={Finite state languages},
1977+
author={Chomsky, Noam and Miller, George A},
1978+
journal={Information and control},
1979+
volume={1},
1980+
number={2},
1981+
pages={91--112},
1982+
year={1958},
1983+
publisher={Elsevier}
19731984
}

tex/FormalLanguageConstrainedReachabilityLectureNotes.tex

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,16 @@
4545
\setlength{\parskip}{5pt plus 2pt minus 1pt}
4646
%\setlength{\parindent}{0pt}
4747

48+
\tikzset{snake it/.style={decorate, decoration=snake}}
49+
\tikzset{
50+
side by side/.style 2 args={
51+
line width=2pt,
52+
#1,
53+
postaction={
54+
clip,postaction={draw,#2}
55+
}
56+
}
57+
}
4858

4959
\algtext*{EndWhile}% Remove "end while" text
5060
\algtext*{EndIf}% Remove "end if" text

tex/RegularLanguages.tex

Lines changed: 58 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,19 +72,44 @@ \section{Конечные автоматы}
7272

7373
\section{Лево(право)линейные грамматики}
7474

75+
Наложив некоторые ограничения на внешний вид правил грамматики можно получить грамматики, задающие регулярные языки.
76+
7577
\begin{definition}
76-
Лево(право)линенйная грамматика. Правила вида !!!
78+
Грамматика $G=\langle \Sigma, N, P, S \rangle$ называется леволиненйной, если все её правила имеют вид $$N_i \to \alpha w $$, где $N_i \in N, \alpha \in \{\varepsilon\} \cup N, w \in \Sigma ^*$.
7779
\end{definition}
7880

79-
Построение грамматики по автомату.
81+
\begin{definition}
82+
Грамматика $G=\langle \Sigma, N, P, S \rangle$ называется праволиненйной, если все её правила имеют вид $$N_i \to w \alpha$$, где $N_i \in N, \alpha \in \{\varepsilon\} \cup N, w \in \Sigma ^*$.
83+
\end{definition}
84+
85+
86+
87+
Ноам Хомский и Джордж Миллер в работе~\cite{chomsky1958finite} показали, что лево(право)линейные грамматики задают регулярные языки.
88+
Приведём процедуры построения автомата по грамматике и наоборот, грамматики по автомату.
89+
90+
Пусть дан конечный автомат $M = \langle \Sigma, Q, q_s, Q_f, \delta \rangle$. По нему можно построить праволинейную грамматику $G=\langle \Sigma, N, S, P \rangle$, где
91+
\begin{itemize}
92+
\item $N = Q$
93+
\item $P = \{ q_i \to t q_j \mid (q_i, t, q_j)\in \delta\} \cup \{ q_i \to \varepsilon \mid q_i \in Q_F\}$
94+
\item $S = q_s$
95+
\end{itemize}
96+
97+
Аналогичным образом строится автомат по праволинейной грамматике.
98+
Упростить процедуру можно если заранее привести правила к виду $N_i \to tN_j$, где $t\in \Sigma$, добавив необходимое количество новых нетерминалов:
99+
правило вида $N_i \to twN_k$ преобразуется в два правила
100+
\begin{align*}
101+
N_i& \to tN_l\\
102+
N_l& \to wN_k \\
103+
\end{align*}
104+
, после чего аналогично преобразуется правило для $N_l$.
80105

81106
Пример построения грамматики по автомату.
82107

83108
Автомат по грамматике.
84109

85110
\section{Лемма о накачке}
86111

87-
Лемма о накачке для регулярных языков.
112+
Лемма о накачке для регулярных языков позволяет проверить, что заданный язык не является регулярным.
88113

89114
\begin{lemma}
90115
Пусть $L$ --- регулярный язык над алфавитом $\Sigma$, тогда существует такое $n$, что для любого слова $\omega \in L$, $|\omega| \geq n$ найдутся слова $x,y,z\in \Sigma^*$, для которых верно: $xyz = \omega, y\neq \varepsilon,|xy|\leq n$ и для любого $k \geq 0$ $xy^kz \in L$.
@@ -97,13 +122,41 @@ \section{Лемма о накачке}
97122
\item Возьмём в качестве $n$ количество состояний в автомате.
98123
\item Легко заметить, что для любой цепочки $w \in L, |w| > n$ путь в автомате, соответствующий принятию данной цепочки, будет содержать хотя бы один цикл.
99124
Действительно, в ориентированном графе с $n$ вершинами (а именно таким является автомат по построению) максимальная длина пути без повторных посещений вершин (соответственно, без циклов) не больше $n$.
100-
\item Выберем любой цикл. Он будет задавать искомые цепочки $x, y$ и $z$ так, как представлено на рисунке~\ref{!!!}
125+
\item Выберем любой цикл. Он будет задавать искомые цепочки $x, y$ и $z$ так, как представлено на рисунке~\ref{fig:reg_lang_pumping_lemma}.
126+
Заметим, что вход в цикл и выход из него могут не совпадать, что даёт несколько вариантов разбиения пути на части, и на рисунке представлен лишь один из возможных.
101127
\end{enumerate}
102128

129+
\begin{figure}
130+
\begin{center}
131+
\begin{tikzpicture}[->]
132+
\node[state, initial] (q1) {$q_1$};
133+
\node[state, right of=q1] (q2) {$q_2$};
134+
\node[state, accepting, right of=q2] (q3) {$q_3$};
135+
\node[state, above of=q2] (q4) {$q_4$};
136+
\draw (q1) edge[above, snake it] node{} (q2)
137+
(q2) edge[bend right, snake it, side by side={red}{blue}] node{} (q4)
138+
(q4) edge[bend right, snake it, color=blue] node[left]{$y$} (q2)
139+
(q4) edge[above, snake it, color=green] node[right]{$z$} (q3)
140+
(q1) edge[above, snake it, color=red] node{$x$} (q2)
141+
;
142+
\end{tikzpicture}
143+
\end{center}
144+
\caption{Иллюстрация идеи доказательства леммы о накачке для регулярных языков: любой путь в графе, длина которого достаточно большая, может быть разбит на три части из леммы ($x$--- красный подпуть, $y$ --- синий, $z$ --- зелёный), а многократный проход по циклу $y$ позволяет ``накачать'' слово}
145+
\label{fig:reg_lang_pumping_lemma}
146+
\end{figure}
147+
103148

104149
\section{Замкнутость регулярных языков относительно операций}
105150

106-
Доказательство замкнутости относительно операций. Алгоритмы для соответствующих операций.
151+
\begin{theorem}
152+
Регулярные языки замкнуты относительно перечисленных ниже операций.
153+
\begin{enumerate}
154+
\item Пересечение
155+
\item Дополнение
156+
\item Обращение
157+
\item Разность
158+
\end{enumerate}
159+
\end{theorem}
107160

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

0 commit comments

Comments
 (0)