Регулярные языки: два определения и их эквивалентность — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 2: Строка 2:
 
{{Определение
 
{{Определение
 
|definition =
 
|definition =
Будем обозначать через <math>Reg_t - </math> языки <math>t</math>-го поколения. Рассмотрим языки нулевого поколения: <math>Reg_0=\left\{\varnothing, \left\{\varepsilon \right\}, \left\{c_1 \right\}, \left\{c_2 \right\} ... \left\{c_k \right\} \right\}</math>, (<math>k - </math>размер алфавита). Пусть имеем <math>Reg_i</math>. Построим <math>Reg_{i+1} = Reg_i \cup \left\{L \cup M, LM, L^*| L, M \in Reg_i\right\}</math>. Тогда по определению <em>множество всех регулярных языков</em>: <math>Reg = \bigcup_{i=0}^{\infty}Reg_i</math>.
+
Будем обозначать через <tex>Reg_t - </tex> языки <tex>t</tex>-го поколения.
 +
 
 +
Рассмотрим языки нулевого поколения: <tex>Reg_0=\left\{\varnothing, \left\{\varepsilon \right\}, \left\{c_1 \right\}, \left\{c_2 \right\} ... \left\{c_k \right\} \right\}</tex>, (<tex>k - </tex>размер алфавита).
 +
 
 +
Пусть имеем <tex>Reg_i</tex>. Построим <tex>Reg_{i+1} = Reg_i \cup \left\{L \cup M, LM, L^*| L, M \in Reg_i\right\}</tex>.
 +
 
 +
Тогда по определению <em>множество регулярных языков</em>: <tex>Reg = \bigcup_{i=0}^{\infty}Reg_i</tex>.
 
}}
 
}}
  
 
{{Определение
 
{{Определение
 
|definition =
 
|definition =
Пусть <math>A=\left\{L \right\}</math>. <math>A - </math> хорошее, если
+
Пусть <tex>A - </tex> множество языков. Будем говорить, что <tex>A - </tex> хорошее, если выполнены следующие свойства: языки нулевого поколения являются подмножеством <tex>A</tex> и множество <tex>A</tex> замкнуто относительно операций объединения, конкатенации и замыкания Клини, т.е.:
  
<center> 1) <math> Reg_0 \subset A </math></center>
+
#<tex>Reg_0 \subset A</tex>
 +
#<tex> L_1, L_2 \in A \Rightarrow L_1 \cup L_2 \in A, L_1L_2 \in A, L_1^* \in A</tex>
  
<center> 2) <math> L_1, L_2 \in A \Rightarrow L_1 \cap L_2 \in A, L_1L_2 \in A, L_1^* \in A </math></center>
+
Тогда <em>множеством регулярных языков</em> будем называть <tex>Reg'=\bigcap_{\text{A- xop.}}A</tex>.
Тогда <em>регулярным языком</em> называется <math>Reg'=\bigcap_{\text{A- xop.}}A</math>.
 
 
}}
 
}}
  
Строка 19: Строка 25:
 
Определения 1 и 2 эквивалентны.
 
Определения 1 и 2 эквивалентны.
 
|proof=
 
|proof=
Докажем, что <math>Reg \subset Reg'</math> и <math>Reg' \subset Reg</math>.
+
Докажем, что <tex>Reg \subset Reg'</tex> и <tex>Reg' \subset Reg</tex>.
 +
 
 +
*'''<tex>Reg \subset Reg'</tex>'''
 +
 
 +
Будем доказывать по индукции.
 +
 
 +
База индукции: из первого свойства хорошего языка получаем, что <tex>\forall A: Reg_0 \subset A</tex>. Поэтому из того, что <tex>Reg'</tex> есть пересечение всех хороших языков получаем: <tex>Reg'=\bigcap_{\text{A- xop.}}A \Rightarrow Reg_0 \subset Reg'</tex>.
 +
 
 +
Индукционный переход.
 +
 
 +
Пусть <tex>Reg_i \subset Reg'</tex>. Докажем, что <tex>Reg_{i+1} \subset Reg'</tex>. Действительно, так как <tex>Reg_i \subset Reg'</tex>, то <tex>\forall A: Reg_i \subset A</tex>. Рассмотрим способ построения <tex>Reg_{i+1}</tex>:
 +
 
 +
<tex>Reg_{i+1} = Reg_i \cup \left\{L \cup M, LM, L^*| L, M \in Reg_i\right\}</tex>. Тогда, принимая во внимание вышесказанное, получаем, что <tex>\forall A: L, M \in A</tex>.
 +
 
 +
Тогда, принимая во внимание второе свойство хорошего множества, получаем, что операция образования <tex>Reg_{i+1}</tex> не вывела нас за рамки хорошего множества, так как полученное множество осталось замкнутым относительно операций объединения, конкатенации и замыкания Клини.
 +
 
 +
Таким образом получили, что если <tex>Reg_i \subset Reg' \Rightarrow Reg_{i+1} \subset Reg'</tex>. Значит <tex>Reg \subset Reg'</tex>.
 +
 
 +
*'''<tex>Reg' \subset Reg</tex>'''
 +
 
 +
По определению <tex>Reg</tex> получаем, что
 +
 
 +
# <tex> Reg_0 \subset Reg </tex>
  
*'''<math>Reg \subset Reg'</math>:'''
+
# <tex> L_1, L_2 \in Reg \Rightarrow L_1 \cup L_2 \in Reg, L_1L_2 \in Reg, L_1^* \in Reg </tex>  
  
будем доказывать по индукции. Заметим, что <math>Reg_0 \subset Reg'</math> по определению. Пусть <math>Reg_i \subset Reg'</math>. Тогда <math>Reg_{i+1} \subset Reg'</math> по способу построения множества <math>Reg_{i+1}</math>. Действительно, из того, что <math>Reg_i \subset Reg'</math> следует, что <math>\forall A: Reg_i \subset A</math>. А так как по построению <math>Reg_{i+1}</math> останется хорошим, то и <math>\forall A: Reg_{i+1} \subset A</math>.
+
Значит <tex>Reg - </tex>хорошее множество. А так как <tex>Reg'=\bigcap_{\text{A- xop.}}A</tex>, то <tex>Reg' \subset Reg</tex>.
  
*'''<math>Reg' \subset Reg</math>:'''
+
Таким образом, теорема доказана.
по определению <math>Reg - </math>хорошее множество.
 
 
}}
 
}}

Версия 00:19, 8 октября 2010

Регулярные языки: два определения и их эквивалентность

Определение:
Будем обозначать через [math]Reg_t - [/math] языки [math]t[/math]-го поколения.

Рассмотрим языки нулевого поколения: [math]Reg_0=\left\{\varnothing, \left\{\varepsilon \right\}, \left\{c_1 \right\}, \left\{c_2 \right\} ... \left\{c_k \right\} \right\}[/math], ([math]k - [/math]размер алфавита).

Пусть имеем [math]Reg_i[/math]. Построим [math]Reg_{i+1} = Reg_i \cup \left\{L \cup M, LM, L^*| L, M \in Reg_i\right\}[/math].

Тогда по определению множество регулярных языков: [math]Reg = \bigcup_{i=0}^{\infty}Reg_i[/math].


Определение:
Пусть [math]A - [/math] множество языков. Будем говорить, что [math]A - [/math] хорошее, если выполнены следующие свойства: языки нулевого поколения являются подмножеством [math]A[/math] и множество [math]A[/math] замкнуто относительно операций объединения, конкатенации и замыкания Клини, т.е.:
  1. [math]Reg_0 \subset A[/math]
  2. [math] L_1, L_2 \in A \Rightarrow L_1 \cup L_2 \in A, L_1L_2 \in A, L_1^* \in A[/math]
Тогда множеством регулярных языков будем называть [math]Reg'=\bigcap_{\text{A- xop.}}A[/math].


Теорема:
Определения 1 и 2 эквивалентны.
Доказательство:
[math]\triangleright[/math]

Докажем, что [math]Reg \subset Reg'[/math] и [math]Reg' \subset Reg[/math].

  • [math]Reg \subset Reg'[/math]

Будем доказывать по индукции.

База индукции: из первого свойства хорошего языка получаем, что [math]\forall A: Reg_0 \subset A[/math]. Поэтому из того, что [math]Reg'[/math] есть пересечение всех хороших языков получаем: [math]Reg'=\bigcap_{\text{A- xop.}}A \Rightarrow Reg_0 \subset Reg'[/math].

Индукционный переход.

Пусть [math]Reg_i \subset Reg'[/math]. Докажем, что [math]Reg_{i+1} \subset Reg'[/math]. Действительно, так как [math]Reg_i \subset Reg'[/math], то [math]\forall A: Reg_i \subset A[/math]. Рассмотрим способ построения [math]Reg_{i+1}[/math]:

[math]Reg_{i+1} = Reg_i \cup \left\{L \cup M, LM, L^*| L, M \in Reg_i\right\}[/math]. Тогда, принимая во внимание вышесказанное, получаем, что [math]\forall A: L, M \in A[/math].

Тогда, принимая во внимание второе свойство хорошего множества, получаем, что операция образования [math]Reg_{i+1}[/math] не вывела нас за рамки хорошего множества, так как полученное множество осталось замкнутым относительно операций объединения, конкатенации и замыкания Клини.

Таким образом получили, что если [math]Reg_i \subset Reg' \Rightarrow Reg_{i+1} \subset Reg'[/math]. Значит [math]Reg \subset Reg'[/math].

  • [math]Reg' \subset Reg[/math]

По определению [math]Reg[/math] получаем, что

  1. [math] Reg_0 \subset Reg [/math]
  1. [math] L_1, L_2 \in Reg \Rightarrow L_1 \cup L_2 \in Reg, L_1L_2 \in Reg, L_1^* \in Reg [/math]

Значит [math]Reg - [/math]хорошее множество. А так как [math]Reg'=\bigcap_{\text{A- xop.}}A[/math], то [math]Reg' \subset Reg[/math].

Таким образом, теорема доказана.
[math]\triangleleft[/math]