200
правок
Изменения
→Источники информации
== Регулярные языки: два определения и их эквивалентность ==
{{Определение
|id = REG1
|definition =
}}
{{Определение
|definition =
'''Регулярное выражение''' (англ. ''regular expression'') над алфавитом <tex> \Sigma = \left\{c_1, c_2, \ldots ,c_k \right\} </tex> {{---}} способ порождения языка над <tex>\Sigma</tex>. Определяется рекурсивно следующим образом:
* Для любого <tex>i</tex> слово <tex>c_i</tex> является регулярным выражением, задающим язык из одного слова <tex>c_i</tex>.
* <tex>\varepsilon</tex> является регулярным выражением, задающим язык из одной пустой строки, а <tex>\varnothing</tex> {{---}} пустой язык.
* Если <tex>\alpha_1</tex> и <tex>\alpha_2</tex> являются регулярными выражениями, задающими языки <tex>L_1</tex> и <tex>L_2</tex> соответственно, то <tex>(\alpha_1)|(\alpha_2)</tex> {{---}} регулярное выражение, задающее <tex>L_1 \bigcup L_2</tex>.
* Если <tex>\alpha_1</tex> и <tex>\alpha_2</tex> являются регулярными выражениями, задающими языки <tex>L_1</tex> и <tex>L_2</tex> соответственно, то <tex>(\alpha_1)(\alpha_2)</tex> {{---}} регулярное выражение, задающее <tex>L_1L_2</tex>.
* Если <tex>\alpha_1</tex> является регулярным выражением, задающим язык <tex>L_1</tex>, то <tex>(\alpha_1)^*</tex> {{---}} регулярное выражение, задающее <tex>L_1^*</tex>.
* Операции указаны в порядке возрастания приоритета, при этом скобки повышают приоритет аналогично арифметическим выражениям.
}}
{{Утверждение
|statement =
По построению очевидно, что множество языков, порождаемых регулярными выражениями, совпадает со множеством регулярных языков.
}}
{{Определение
|id = REG2
|definition =
Пусть задан алфавит <mathtex>A\Sigma =\left\{L c_1, c_2, \ldots ,c_k \right\}</mathtex>. Множество <tex>\mathrm{R}<math/tex>A - будем называть ''надрегулярным'' множеством над алфавитом <tex> \Sigma </mathtex> хорошее, если:
#<centertex> 1) \mathrm{R_0} \subset \mathrm{R}<math/tex> Reg_0 , где <tex>\mathrm{R_0}=\left\{\varnothing, \left\{\varepsilon \right\subset A }, \left\{c_1 \right\}, \left\{c_2 \right\}, \ldots, \left\{c_k \right\} \right\}</mathtex>,#<tex> L_1, L_2 \in \mathrm{R} \Rightarrow L_1 \cup L_2 \in \mathrm{R}, L_1L_2 \in \mathrm{R}, L_1^* \in \mathrm{R}</centertex>.
Тогда '''множеством регулярных языков''' <centertex> 2) \mathrm{REG'} <math/tex> над алфавитом <tex> L_1, L_2 \in A Sigma = \Rightarrow L_1 left\cap L_2 \in A{c_1, c_2, L_1L_2 \in Aldots , L_1^* c_k \in A </math></center>Тогда <em>регулярным языком</em> называется <math>Reg'=\bigcap_{right\text{A- xop.}}A</mathtex>называется пересечение всех надрегулярных множеств над этим алфавитом.
}}
{{Теорема
|statement=
|proof=
Докажем, что <mathtex>Reg \subset Regmathrm{REG} \subseteq \mathrm{REG'}</mathtex> и <mathtex>Reg\mathrm{REG' } \subseteq \subset Regmathrm{REG}</mathtex>.
*'''<mathtex>Reg \subset Regmathrm{REG} \subseteq \mathrm{REG'}</mathtex>:'''По определению <tex>\mathrm{REG} = \bigcup\limits_{i=0}^{\infty}\mathrm{R_i}</tex>. Покажем, что <tex>\bigcup\limits_{i=0}^{\infty}\mathrm{R_i} \subseteq \mathrm{R}</tex>, где <tex>\mathrm{R}</tex> {{---}} любое надрегулярное множество. Для этого докажем по индукции по <tex>i</tex>, что <tex>\mathrm{R_i} \subseteq \mathrm{R}</tex> для любого <tex>i</tex>.# База: <tex>i = 0</tex>.#: <tex>\mathrm{R_0} \subseteq \mathrm{R}</tex> по определению надрегулярного множества.# Переход: известно, что <tex>\mathrm{R_i} \subseteq \mathrm{R}</tex>, докажем, что <tex>\mathrm{R_{i + 1}} \subseteq \mathrm{R}</tex>.#: По определению надрегулярного множества для любых <tex>L_1, L_2 \in \mathrm{R_i} \subseteq \mathrm{R}</tex> верны утверждения: <tex>L_1 \cup L_2 \in \mathrm{R}, L_1L_2 \in \mathrm{R}, L_1^* \in \mathrm{R}</tex>. То есть: <tex>\left\{L_1 \cup L_2, L_1L_2, L_1^* | L_1, L_2 \in \mathrm{R_i}\right\} \subseteq \mathrm{R}</tex>. Вспоминая [[#REG1 | определение]] <tex>\mathrm{R_{i + 1}}</tex> и предположение индукции (<tex>\mathrm{R_i} \subseteq \mathrm{R}</tex>), получаем, что <tex>\mathrm{R_{i + 1}} \subseteq \mathrm{R}</tex>.Так как <tex>\mathrm{REG} \subseteq R</tex> для любого надрегулярного множества <tex>R</tex>, получаем, что <tex> \mathrm{REG} \subseteq \mathrm{REG'} </tex>.
== См. также ==* [[Детерминированные конечные автоматы]] == Источники информации == *'''<math>Reg' \subset Reg<[http://math>en.wikipedia.org/wiki/Regular_language Wikipedia {{---}} Regular language]* [http:'''//en.wikipedia.org/wiki/Regular_expression Wikipedia {{---}} Regular expression]по определению <math>Reg * [http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA Википедия {{--- <}} Регулярный язык]* [http:/math>хорошее множество/ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F#.D0.92_.D1.82.D0.B5.D0.BE.D1.80.D0.B8.D0.B8_.D1.84.D0.BE.D1.80.D0.BC.D0.B0.D0.BB.D1.8C.D0.BD.D1.8B.D1.85_.D1.8F.D0.B7.D1.8B.D0.BA.D0.BE.D0.B2 Википедия {{---}}Регулярные выражения] [[Категория: Теория формальных языков]][[Категория: Автоматы и регулярные языки]]