Замкнутость регулярных языков относительно различных операций — различия между версиями
Kirelagin (обсуждение | вклад) (Произведение автоматов на радость Роме) |
|||
| Строка 15: | Строка 15: | ||
#*<tex>L_1 \cup L_2</tex> является регулярным по определению [[Регулярные языки: два определения и их эквивалентность|регулярных языков]]. | #*<tex>L_1 \cup L_2</tex> является регулярным по определению [[Регулярные языки: два определения и их эквивалентность|регулярных языков]]. | ||
#*Рассмотрим автомат <tex>A_1' = \langle \Sigma , Q_1 , s_1 , Q_1 \setminus T_1 , \delta_1 \rangle </tex>, то есть автомат <tex>A</tex>, в котором терминальные и нетерминальные состояния инвертированы. (При таком построении следует помнить, что если в исходном автомате было опущено дьявольское состояние, его нужно явно добавить и сделать допускающим.) Очевидно, он допускает те и только те слова, которые не допускает автомат <tex>A_1</tex>, а значит, задаёт язык <tex>\overline{L_1}</tex>. Таким образом, <tex>\overline{L_1}</tex> {{---}} регулярный. | #*Рассмотрим автомат <tex>A_1' = \langle \Sigma , Q_1 , s_1 , Q_1 \setminus T_1 , \delta_1 \rangle </tex>, то есть автомат <tex>A</tex>, в котором терминальные и нетерминальные состояния инвертированы. (При таком построении следует помнить, что если в исходном автомате было опущено дьявольское состояние, его нужно явно добавить и сделать допускающим.) Очевидно, он допускает те и только те слова, которые не допускает автомат <tex>A_1</tex>, а значит, задаёт язык <tex>\overline{L_1}</tex>. Таким образом, <tex>\overline{L_1}</tex> {{---}} регулярный. | ||
| − | #*<tex>L_1 \cap L_2 = \overline{\overline{L_1} \cup \overline{L_2}}</tex>. Тогда <tex>L_1 \cap L_2</tex> {{---}} регулярный. | + | #*<tex>L_1 \cap L_2 = \overline{\overline{L_1} \cup \overline{L_2}}</tex>. Тогда <tex>L_1 \cap L_2</tex> {{---}} регулярный. Также автомат для пересечения языков можно построить явно, используя конструкцию [[Прямое произведение ДКА|произведения автоматов]]. |
#*<tex>L_1 \setminus L_2 = L_1 \cap \overline{L_2}</tex>. Тогда <tex>L_1 \setminus L_2</tex> {{---}} регулярный. | #*<tex>L_1 \setminus L_2 = L_1 \cap \overline{L_2}</tex>. Тогда <tex>L_1 \setminus L_2</tex> {{---}} регулярный. | ||
#<tex>L_1^*</tex> является регулярным по определению [[Регулярные языки: два определения и их эквивалентность|регулярных языков]]. | #<tex>L_1^*</tex> является регулярным по определению [[Регулярные языки: два определения и их эквивалентность|регулярных языков]]. | ||
Версия 10:05, 17 января 2012
| Теорема: |
Пусть — регулярные языки над одним алфавитом . Тогда следующие языки также являются регулярными:
|
| Доказательство: |
|
Как известно, классы регулярных и автоматных языков совпадают. Пусть языки и распознаются автоматами и соответственно.
|
Прямой и обратный гомоморфизмы
| Определение: |
| Отображение , сохраняющее операцию конкатенации , называется гомоморфизмом. |
Гомоморфизм однозначно задается значениями на алфавите: .
| Определение: |
| Образом языка при гомоморфизме называется язык . |
| Определение: |
| Прообразом языка при гомоморфизме называется язык . |
| Утверждение: |
— регулярный , — гомоморфизм. Тогда — регулярный. |
| Рассмотрим ДКА, распознающий . Заменим в нем все переходы по символам на переходы по их образам при гомоморфизме. Полученный автомат (с переходами по строкам) распознает в точности и имеет эквивалентный ДКА. |
| Утверждение: |
— регулярный , — гомоморфизм. Тогда — регулярный. |
| Рассмотрим ДКА, распознающий . Отследим для каждого состояния и символа строку : и положим в новом автомате (на том же множестве состояний). Автомат с построенной таким образом функцией переходов, очевидно, распознает слова языка и только их. |