Замкнутость регулярных языков относительно различных операций — различия между версиями
MikhailOK (обсуждение | вклад) (→Прямой и обратный гомоморфизмы) |
MikhailOK (обсуждение | вклад) (→Основные операции) |
||
Строка 7: | Строка 7: | ||
#<tex>L_1 \cap L_2</tex> | #<tex>L_1 \cap L_2</tex> | ||
#<tex>L_1 \setminus L_2</tex> | #<tex>L_1 \setminus L_2</tex> | ||
+ | #<tex>\overset{\leftarrow}{L_1}</tex> | ||
===Доказательство=== | ===Доказательство=== | ||
Свойства 1,2,3 непосредственно следуют из определения регулярных языков. | Свойства 1,2,3 непосредственно следуют из определения регулярных языков. | ||
Строка 38: | Строка 39: | ||
Соответствующий автомат строится как произведение автоматов для языков <tex>L_1</tex> и <tex>\overline {L_2}</tex> </p> | Соответствующий автомат строится как произведение автоматов для языков <tex>L_1</tex> и <tex>\overline {L_2}</tex> </p> | ||
+ | </li> | ||
+ | <li><p> | ||
+ | Развернем все переходы назад и поменяем стартовое состояние с терминальными: рассмотрим [[Автоматы_с_eps-переходами._Eps-замыкание|НКА c <tex>\varepsilon</tex>-переходами]] <tex>A_1' = \langle \Sigma , Q_1 , s' , \lbrace s_1 \rbrace, \delta_1' \rangle </tex>, где <tex>\delta_1' (v,c) = \lbrace u | \delta_1(u,c) = v \rbrace </tex>; <tex>\delta_1'(s', \varepsilon) = T_1</tex>.<br/> | ||
+ | Если в исходном автомате путь по <tex>\alpha</tex> из <tex>s_1</tex> приводил в терминальное состояние, то в новом автомате существует путь по <tex>\alpha</tex> из этого терминального состояния в <tex>s_1</tex> (и наоборот). Следовательно, этот автомат распознает в точности развернутые слова языка <tex>L_1</tex>, и из [[Автоматы_с_eps-переходами._Eps-замыкание|эквивалентности <tex>\varepsilon</tex>-НКА и ДКА]] язык <tex>\overset{\leftarrow}{L_1}</tex> - регулярный. | ||
+ | </p> | ||
</li> | </li> | ||
</ol> | </ol> |
Версия 07:30, 8 октября 2010
Основные операции
Пусть
- регулярные языки над одним алфавитом . Тогда следующие языки также являются регулярными:Доказательство
Свойства 1,2,3 непосредственно следуют из определения регулярных языков.
При доказательстве дальнейших свойств воспользуемся эквивалентностью регулярных и автоматных языков. Пусть языки
и соответственно.
Инвертируем множество допускающих состояний: рассмотрим автомат
. Очевидно, он допускает те и только те слова, которые не допускает автомат .
При таком построении следует помнить, что если в исходном автомате было опущено дьявольское состояние, его нужно явно добавить и сделать допускающим.Следует из пунктов 1 и 4, т.к.
.
Автомат для пересечения языков можно построить явно, используя конструкцию произведения автоматов:
, где
Развернем все переходы назад и поменяем стартовое состояние с терминальными: рассмотрим НКА c -переходами , где ; .
Если в исходном автомате путь по из приводил в терминальное состояние, то в новом автомате существует путь по из этого терминального состояния в (и наоборот). Следовательно, этот автомат распознает в точности развернутые слова языка , и из эквивалентности язык -НКА и ДКА - регулярный.
Прямой и обратный гомоморфизмы
Определение: |
Отображение | , сохраняющее операцию конкатенации , называется гомоморфизмом.
Гомоморфизм однозначно задается значениями на алфавите:
.Определение: |
Образом языка | при гомоморфизме называется язык .
Определение: |
Прообразом языка | при гомоморфизме называется язык .
Утверждение: |
– регулярный , – гомоморфизм. Тогда – регулярный. |
Рассмотрим ДКА, распознающий . Заменим в нем все переходы по символам на переходы по их образам при гомоморфизме. Полученный автомат (с переходами по строкам) распознает в точности и имеет эквивалентный ДКА. |
Утверждение: |
– регулярный , – гомоморфизм. Тогда – регулярный. |
Рассмотрим ДКА, распознающий . Отследим для каждого состояния и символа строку : и положим в новом автомате (на том же множестве состояний). Автомат с построенной таким образом функцией переходов, очевидно, распознает слова языка и только их. |