Свойства замкнутости класса автоматных языков. Неавтоматные языки
Замкнутость относительно гомоморфизмов и их обращений
Обратимся снова к свойствам замкнутости класса автоматных языков. Как мы уже установили с помощью конструкции произведения автоматов, этот класс замкнут относительно объединения, пересечения и разности (см. следствие 4.1.1). Из теоремы 5.1 непосредственно следует, что класс автоматных языков замкнут относительно операций конкатенации и итерации. Можно легко установить, что он также замкнут относительно дополнения.
Предложение 6.1. Пусть L - автоматный язык в алфавите Тогда его дополнение - язык
также является автоматным.
Действительно, достаточно заметить, что язык , включающий все слова в алфавите
является автоматным и что
.
Определенная ниже операция гомоморфизма формализует идею посимвольного перевода слов одного алфавита в слова другого.
Определение 6.1. Пусть и Delta - два алфавита. Отображение
слов первого из них в слова второго называется гомоморфизмом, если
- для любых двух слов w1 и w2 в алфавите
имеет место равенство
.
Из этого определения непосредственно следует, что гомоморфизм однозначно определяется
своими значениями на символах алфавита Если w=w1w2 ... wn,
,
то
.
Пример 6.1.Пусть , Delta ={ 0, 1}, а гомоморфизм
определен
на символах
следующим образом:
.
Тогда .
Определение 6.2.
Пусть - произвольный гомоморфизм и L - язык
в алфавите
Образом
языка L при гомоморфизме
называется язык
, состоящий из образов всех слов языка L.
Пусть L - язык в алфавите Прообразом этого языка при гомоморфизме
называется язык
, состоящий из всех таких слов в алфавите
чьи образы при гомоморфизме
попадают в L.
Оказывается, что класс автоматных языков замкнут относительно операций гомоморфизма и обращения гомоморфизма (взятия прообраза)
Теорема 6.1. Пусть - произвольный гомоморфизм и L - автоматный язык
в алфавите
Тогда и язык
вляется автоматным.
Доказательство Пусть - ДКА, распознающий
язык L. Построим по нему НКА
,
распознающий язык
. Идея этого построения проста: нужно каждый переход из состояния q
в q' по букве
в автомате A превратить в переход из q в q' по слову
в автомате M.
Пусть , Q= {q0, q1, ..., qn} и
(если
).
Для каждого ai зафиксируем простой НКА Mi, распознающий язык {d1id2i ... d{ki}i}, имеющий (ki +1) состояние p0i, p1i, ..., p{ki}i и команды p{l-1}dli -> pl (1<= l <= ki).
( Если
, то у Mi будут два состояния, соединенные
-переходом).
Теперь для каждой команды qj ai -> qr поместим в M между qj и qr автомат Mi (цепочку состояний p0i, p1i, ..., p{ki}i ). Чтобы состояния различных цепочек не
склеивались, придадим им верхний индекс j, т.е. у каждого qj будет своя копия каждого из автоматов Mi.
Для этого
положим
. Таким образом, pl{ji} - это l -ое состояние на пути из qj по "старой" букве ai.
Программа
автомата M строится по программе A следующим образом.
Для каждой команды вида qj ai -> qr из
поместим в
следующие команды:
![q_j \rightarrow p_0^{ji},\\ p_0^{ji}d_1^i \rightarrow p_1^{ji},\\
\bullet \ \bullet\ \bullet \\
p_{k_i-1}^{ji}d_{k_i}^i \rightarrow p_{k_i}^{ji},\\ p_{k_i}^{ji} \rightarrow q_r](/sites/default/files/tex_cache/f8239e8c39722d3fe5e7d9b836148238.png)
Таким образом, из qj автомат M по пустому переходу попадает в начальное состояние p0ji j -ой копии автомата Mi, затем проходит по слову и снова по пустому переходу
попадает в qr.
Для завершения определения M положим q0M = q0 и FM = F.
Докажем теперь, что наше построение корректно, т.е., что .
-
. Заметим вначале, что если
, то
и по определению
, следовательно
.
Пусть
. Тогда в диаграмме A имеется путь из q0 в некоторое заключительное состояние
, который несет слово w. Пусть это путь
. Тогда для каждого 1 <= x <= k в
имеется команда
. Но из определения
следует, что тогда в автомате M имеется путь из
в
, несущий слово
. Объединив все такие пути, получим путь из из q0 в
, несущий слово
. Следовательно,
.
-
. Пусть слово
принадлежит LM. Покажем, что тогда для некоторого
. Рассмотрим для этого путь в диаграмме M из q0 в
, несущий слово u . Выделим на этом пути все состояния из Q. Пусть это будут по порядку состояния q0=q{j0}, q{j1}, ... q{jk}= q'. Тогда слово u разбивается на k подслов: u=u1u2 ... uk таких, что ux переводит в M состояние
в
( 1 <= x <= k ). Покажем, что для каждого такого ux существует символ
такой, что
и в
имеется команда
. Действительно, любой путь из
в M начинается
-переходом в некоторое состояние вида
. Пусть это будет состояние на пути, который несет ux в
. Далее этот путь обязательно будет проходить по состояниям вида
и завершится
-переходом из
в состояние
. Тогда из определения M следует, что
и в
имеется команда
. Положив wx=ai, получим, что
и
, для слова
. При этом каждый символ wx этого слова переводит в автомате A состояние
в
. Поэтому в A существует путь из q0 в
, несущий слово w и, следовательно