Россия, Москва, МГУПИ |
Свойства замкнутости класса автоматных языков. Неавтоматные языки
Пример 6.2. Пусть алфавиты и гомоморфизм определены как выше в примере 6.1. Рассмотрим язык L={ w | число букв а в слове w нечетно }.
На следующем рисунке показана диаграмма ДКА A, распознающего язык L, и диаграммы автоматов Ma для , Mb для и Mc для .
Подставив в A вместо a -переходов автомат Ma, вместо b -переходов автомат Mb и вместо c -переходов автомат Mc, получим представленный на рис. 6.2 недетерминированный автомат M, распознающий язык . На этом рисунке каждая из -петель в состояниях q0 и q1 заменяет по три -перехода, связанных с Mb.
Отметим, что конструкция автомата M в теореме 6.1 удобна для доказательства, но несколько избыточна. Без труда можно сократить в ней все -переходы, склеив начальные и заключительные состояния автоматов Mi с соответствующими состояниями автомата A. Например, в автомате на рис. 6.2 можно объединить начальные состояния p00 и p001 с q0, заключительные состояния p201 и p313 с q1 и т.п.
Одним из интересных частных случаев гомоморфизма является проекция.
Определение 6.3. Пусть . Проекцией языка L в алфавите на подалфавит называется язык получено из некоторого слова вычеркиванием всех символов, не принадлежащих алфавиту .
Определим гомоморфизм следующим образом: , если и , если . Тогда для всякого языка L в алфавите имеет место равенство . Отсюда и из предыдущей теоремы 6.1 получаем замкнутость класса автоматных языков относительно проекции.
Предложение 6.2. Для любых алфавитов и таких, что , и любого автоматного языка L в алфавите проекция также является автоматным языком.
Отметим, что для проекции конструкция автомата M для по ДКА A для L существенно упрощается: достаточно в A все переходы по символам из заменить на -переходы.
Следующая теорема устанавливает замкнутость класса автоматных языков относительного обращения гомоморфизмов.
Теорема 6.2. Пусть - произвольный гомоморфизм и L - автоматный язык в алфавите Тогда и язык является автоматным.
Доказательство Пусть - ДКА, распознающий язык L. Пусть , Q= {q0, q1, ..., qn} и (если ).
Перестроим его в ДКА с тем же множеством состояний, начальным и заключительными состояниями, который распознает язык .
Идея этого построения состоит в том, чтобы переходить из состояния q в q' по букве в автомате M, если в автомате A слово переводит q в q'. Если же для образ пуст, т.е. , то в автомате M слово a переводит каждое состояние в себя, так как символы a могут встречаться в каждом слове из в любом месте и в любом количестве.
Таким образом, положим для каждой пары и , если и в автомате A . Если же , то полагаем .
Так как A - детерминированный автомат, то функция переходов определена однозначно и для всех пар и . Следовательно, M детерминированный.
Нетрудно показать, что .
Действительно, если слово , то в M путь , несущий это слово ведет в заключительное состояние . Из определения следует, что тогда в A существует соответствующий путь из q0 в , который несет слово . Следовательно, .
Обратно, пусть . Тогда слово и в автомате A имеется путь, несущий u, который переводит q0 в некоторое заключительное состояние . Зафиксируем на этом пути состояния , в которые он попадает после прочтения префиксов слова u (j = 1, 2, ... , k). Тогда и для всех j = 1, 2, ... , k имеет место . Отсюда и из определения получаем, что в M для всех j = 1, 2, ... , k имеет место переход ха один шаг . Следовательно, в M путь q0, q{i1}q{i2}... q{ik} несет слово w и завершается в заключительном состоянии . А это означает, что .
Пример 6.3. Пусть алфавиты и гомоморфизм определены как выше в примере: . Рассмотрим язык L={ w | число букв 0 в слове w нечетно, а число букв 1 - четно}.
На следующем рисунке показана диаграмма ДКА A, распознающего язык L.
Применив к этому автомату конструкцию из теоремы 6.2, обнаружим, что a и b оставляют все состояния на месте, а c переводит каждое состояние в соседнее состояние "по горизонтали". В результате получаем автомат M, показанный ниже на рис. 6.4.
Легко заметить, что в нем состояния q2 и q3 недостижимы из начального состояния q0 и что этот автомат M распознает язык
Имеется еще много операций, относительно которых замкнут класс автоматных языков. Некоторые из них приведены далее в разделе задач.