Замкнутость регулярных языков относительно различных операций — различия между версиями
MikhailOK (обсуждение | вклад) м (→Доказательство) |
MikhailOK (обсуждение | вклад) м (→Доказательство) |
||
Строка 9: | Строка 9: | ||
===Доказательство=== | ===Доказательство=== | ||
Свойства 1,2,3 непосредственно следуют из определения регулярных языков. | Свойства 1,2,3 непосредственно следуют из определения регулярных языков. | ||
− | |||
− | |||
− | |||
− | |||
− | При | + | При доказательстве дальнейших свойств воспользуемся эквивалентностью регулярных и автоматных языков. Пусть языки <tex>L_1</tex> и <tex>L_2</tex> распознаются автоматами <br /> <tex>A_1 = \langle \Sigma , Q_1 , s_1 , T_1 , \delta_1 : Q_1 \times \Sigma \rightarrow 2^{Q_1} \rangle </tex> и <tex>A_2 = \langle \Sigma , Q_2 , s_2 , T_2 , \delta_2 : Q_2 \times \Sigma \rightarrow 2^{Q_2} \rangle </tex> соответственно. |
− | |||
− | |||
− | + | <ol start="4"> | |
+ | <li><p> | ||
+ | Инвертируем множество допускающих состояний: рассмотрим автомат <tex>A_1' = \langle \Sigma , Q_1 , s_1 , Q_1 \setminus T_1 , \delta_1 : Q_1 \times \Sigma \rightarrow 2^{Q_1} \rangle </tex>. Очевидно, он допускает те и только те слова, которые не допускает автомат <tex>A_1</tex>. | ||
+ | <br/> | ||
+ | При таком построении следует помнить, что если в исходном автомате было опущено дьявольское состояние, его нужно явно добавить и сделать допускающим.</p> | ||
+ | </li> | ||
− | <tex> | + | <li><p> |
+ | Следует из пунктов 1 и 4, т.к. <tex>L_1 \cap L_2 = \overline{\overline{L_1} \cup \overline{L_2}}</tex>. <br/> | ||
− | < | + | Автомат для пересечения языков можно построить явно, используя конструкцию пересечения автоматов: </p><p> |
− | <tex> | + | <tex>A = \langle \Sigma , Q , s , T , \delta : Q \times \Sigma \rightarrow 2^{Q} \rangle </tex>, где <br/> |
− | <tex> | + | <tex>Q = \lbrace \langle q_1, q_2 \rangle | q_1 \in Q_1, q_2 \in Q_2 \rbrace</tex> <br/> |
− | <tex> | + | <tex>s = \langle s_1, s_2 \rangle</tex> <br/> |
− | |||
− | |||
− | Соответствующий автомат строится как произведение автоматов для языков <tex>L_1</tex> и <tex>\overline {L_2}</tex> | + | <tex>T = \lbrace \langle t_1, t_2 \rangle | t_1 \in T_1, t_2 \in T_2 \rbrace</tex> <br/> |
+ | |||
+ | <tex>\delta (\langle q_1,q_2 \rangle, c) = \langle \delta_1 (q_1),\delta_2 (q_2) \rangle</tex> </p> | ||
+ | </li> | ||
+ | <li><p> | ||
+ | <tex>L_1 \setminus L_2 = L_1 \cap \overline{L_2}</tex>. | ||
+ | |||
+ | Соответствующий автомат строится как произведение автоматов для языков <tex>L_1</tex> и <tex>\overline {L_2}</tex> </p> | ||
+ | </li> | ||
+ | </ol> |
Версия 01:27, 8 октября 2010
Основные операции
Пусть
- регулярные языки над одним алфавитом . Тогда следующие языки также являются регулярными:Доказательство
Свойства 1,2,3 непосредственно следуют из определения регулярных языков.
При доказательстве дальнейших свойств воспользуемся эквивалентностью регулярных и автоматных языков. Пусть языки
и соответственно.
Инвертируем множество допускающих состояний: рассмотрим автомат
. Очевидно, он допускает те и только те слова, которые не допускает автомат .
При таком построении следует помнить, что если в исходном автомате было опущено дьявольское состояние, его нужно явно добавить и сделать допускающим.Следует из пунктов 1 и 4, т.к.
.
Автомат для пересечения языков можно построить явно, используя конструкцию пересечения автоматов:
, где