Материал из Викиконспекты
Регулярные языки: два определения и их эквивалентность
Определение: |
Будем обозначать через [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\limits_{i=0}^{\infty}Reg_i[/math]. |
Определение: |
Пусть [math]A - [/math] множество языков. Будем говорить, что [math]A - [/math] хорошее, если выполнены следующие свойства: языки нулевого поколения являются подмножеством [math]A[/math] и множество [math]A[/math] замкнуто относительно операций объединения, конкатенации и замыкания Клини, т.е.:
- [math]Reg_0 \subset A[/math]
- [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\limits_{\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\limits_{\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]A - [/math]хорошее, получаем, что [math]Reg_{i+1}[/math] тоже содержится в [math]A[/math], т.е. [math]A - xop. \Rightarrow Reg_{i+1} \subset A[/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] получаем, что
- [math] Reg_0 \subset Reg [/math]
- [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\limits_{\text{A- xop.}}A[/math], то [math]Reg' \subset Reg[/math].
Таким образом, теорема доказана. |
[math]\triangleleft[/math] |