Тверской государственный университет
Опубликован: 21.08.2007 | Доступ: свободный | Студентов: 1684 / 243 | Оценка: 5.00 / 5.00 | Длительность: 14:18:00
ISBN: 978-5-94774-714-0
Специальности: Программист, Математик
Лекция 6:

Свойства замкнутости класса автоматных языков. Неавтоматные языки

< Лекция 5 || Лекция 6: 1234 || Лекция 7 >
Аннотация: Построение конечного автомата для гомоморфного образа автоматного языка и для обращения гомоморфизма. Теорема о разрастании для автоматных языков. Ее применение для доказательства неавтоматности языка.Примеры неавтоматных языков

Замкнутость относительно гомоморфизмов и их обращений

Обратимся снова к свойствам замкнутости класса автоматных языков. Как мы уже установили с помощью конструкции произведения автоматов, этот класс замкнут относительно объединения, пересечения и разности (см. следствие 4.1.1). Из теоремы 5.1 непосредственно следует, что класс автоматных языков замкнут относительно операций конкатенации и итерации. Можно легко установить, что он также замкнут относительно дополнения.

Предложение 6.1. Пусть L - автоматный язык в алфавите \Sigma. Тогда его дополнение - язык \bar{L} =\{ w\ |\ w \in \Sigma^*\ \textit{ и }w \notin L\} также является автоматным.

Действительно, достаточно заметить, что язык \Sigma ^{*}, включающий все слова в алфавите \Sigma является автоматным и что \overline{L} = \Sigma^* \setminus L.

Определенная ниже операция гомоморфизма формализует идею посимвольного перевода слов одного алфавита в слова другого.

Определение 6.1. Пусть \Sigma и Delta - два алфавита. Отображение \varphi : \Sigma ^{*} \to  Delta^{*} слов первого из них в слова второго называется гомоморфизмом, если

  1. \varphi (\varepsilon ) = \varepsilon ;
  2. для любых двух слов w1 и w2 в алфавите \Sigma имеет место равенство \varphi (w_{1}w_{2}) = \varphi (w_{1})\varphi (w_{2}).

Из этого определения непосредственно следует, что гомоморфизм однозначно определяется своими значениями на символах алфавита \Sigma. Если w=w1w2 ... wn, w_{i} \in  \Sigma  (1 \le  i \le  n), то \varphi (w) = \varphi (w_{1})\varphi (w_{2}) \dots  \varphi (w_{n}).

Пример 6.1.Пусть \Sigma  =\{ a, b, c\}, Delta ={ 0, 1}, а гомоморфизм \phi определен на символах \Sigma следующим образом: \varphi (a) =00, \varphi (b) =\varepsilon , \varphi (c) =101.

Тогда \varphi (aca) = 0010100, \varphi (abcb) =00101, \varphi (bbb) = \varepsilon.

Определение 6.2. Пусть \varphi : \Sigma ^{*} \to  Delta^{*} - произвольный гомоморфизм и L - язык в алфавите \Sigma. Образом \varphi (L) языка L при гомоморфизме \phi называется язык \varphi (L)= \{  \varphi (w) | w \in  L\}, состоящий из образов всех слов языка L.

Пусть L - язык в алфавите \Delta. Прообразом этого языка при гомоморфизме \phi называется язык \varphi ^{-1}(L)= \{  w\in  \Sigma ^{*} | \varphi (w) \in  L\}, состоящий из всех таких слов в алфавите \Sigma, чьи образы при гомоморфизме \phi попадают в L.

Оказывается, что класс автоматных языков замкнут относительно операций гомоморфизма и обращения гомоморфизма (взятия прообраза)

Теорема 6.1. Пусть \varphi : \Sigma ^{*} \to  \Delta ^{*} - произвольный гомоморфизм и L - автоматный язык в алфавите \Sigma. Тогда и язык \varphi (L) вляется автоматным.

Доказательство Пусть A=<\Sigma , Q, q_{0}, F, \Phi > - ДКА, распознающий язык L. Построим по нему НКА M =<\Delta , Q^{M}, q_{0}^{M}, F^{M}, \Phi ^{M}>, распознающий язык \varphi (L). Идея этого построения проста: нужно каждый переход из состояния q в q' по букве a \in  \Sigma в автомате A превратить в переход из q в q' по слову \varphi (a) в автомате M.

Пусть \Sigma  = \{ a_{1}, \dots  , a_{m}\}, Q= {q0, q1, ..., qn} и \varphi (a_{i})= d_{1}^{i}d_{2}^{i} \dots  d_{\{ }k_{i}\} ^{i}, d_{l}^{i} \in  \Delta  (1\le  l \le  k_{i}) (если \varphi (a_{i}) \ne  \varepsilon ). Для каждого ai зафиксируем простой НКА Mi, распознающий язык {d1id2i ... d{ki}i}, имеющий (ki +1) состояние p0i, p1i, ..., p{ki}i и команды p{l-1}dli -> pl (1<= l <= ki). ( Если \varphi (a_{i}) = \varepsilon, то у Mi будут два состояния, соединенные \varepsilon -переходом). Теперь для каждой команды qj ai -> qr поместим в M между qj и qr автомат Mi (цепочку состояний p0i, p1i, ..., p{ki}i ). Чтобы состояния различных цепочек не склеивались, придадим им верхний индекс j, т.е. у каждого qj будет своя копия каждого из автоматов Mi. Для этого положим Q^{M} = Q \cup  \{  p_{l}^{ji} | 0 \le  j \le  n, 1 \le  i \le  m, 0 \le  l \le  k_{i} \}. Таким образом, pl{ji} - это l -ое состояние на пути из qj по "старой" букве ai. Программа \Phi ^{M} автомата M строится по программе A следующим образом. Для каждой команды вида qj ai -> qr из \Phi поместим в \Phi ^{M} следующие команды:

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

Таким образом, из qj автомат M по пустому переходу попадает в начальное состояние p0ji j -ой копии автомата Mi, затем проходит по слову \varphi (a_{i}) и снова по пустому переходу попадает в qr.

Для завершения определения M положим q0M = q0 и FM = F.

Докажем теперь, что наше построение корректно, т.е., что \varphi (L)=\varphi ( L_{A}) = L_{M}.

  1. \varphi (L) \subseteq  L_{M}. Заметим вначале, что если \varepsilon  \in  L, то q_{0} \in  F и по определению q_{0} \in  F^{M}, следовательно \varphi (\varepsilon )=\varepsilon  \in  L_{M}.

    Пусть w=w_{1}w_{2}\dots  w_{k} \in  L, w_{s} \in  \Sigma. Тогда в диаграмме A имеется путь из q0 в некоторое заключительное состояние q' \in  F, который несет слово w. Пусть это путь q_0=q_{j_0}, q_{j_1}, \ldots q_{j_k}= q^\prime. Тогда для каждого 1 <= x <= k в \Phi имеется команда q_{j_{x-1}} w_x \rightarrow q_{j_x}. Но из определения \Phi ^{M} следует, что тогда в автомате M имеется путь из q_{j_{x-1}} в q_{j_x}, несущий слово \varphi (w_{x}). Объединив все такие пути, получим путь из из q0 в q' \in  F^{M}, несущий слово \varphi (w). Следовательно, \varphi (w) \in  L_{M}.

  2. L_{M} \subseteq  \varphi (L). Пусть слово u \in  \Delta ^{*} принадлежит LM. Покажем, что тогда для некоторого w \in  L u =\varphi (w). Рассмотрим для этого путь в диаграмме M из q0 в q' \in  F^{M}, несущий слово u . Выделим на этом пути все состояния из Q. Пусть это будут по порядку состояния q0=q{j0}, q{j1}, ... q{jk}= q'. Тогда слово u разбивается на k подслов: u=u1u2 ... uk таких, что ux переводит в M состояние q_{j_{x-1}} в q_{j_x} ( 1 <= x <= k ). Покажем, что для каждого такого ux существует символ w_{x} \in  \Sigma такой, что u_{x} = \varphi (w_{x}) и в \Phi имеется команда q_{j_{x-1}} w_x \rightarrow q_{j_x}. Действительно, любой путь из q_{j_{x-1}} в M начинается \varepsilon -переходом в некоторое состояние вида p_0^{j_{x-1}i}. Пусть это будет состояние на пути, который несет ux в q_{j_x}. Далее этот путь обязательно будет проходить по состояниям вида p_l^{j_{x-1}i}\ (l=1,\ldots , k_i ) и завершится \varepsilon -переходом из p_{k_i}^{j_x i} в состояние q_{j_x}. Тогда из определения M следует, что u_{x} = \varphi (a_{i}) и в \Phi имеется команда q_{j_{x-1}} w_x \rightarrow q_{j_x}. Положив wx=ai, получим, что u_{x} = \varphi (w_{x}) и u=\varphi (w_{1})\varphi (w_{2}) \dots  \varphi (w_{k}) =\varphi (w), для слова w=w_{1}w_{2} \dots  w_{k} \in  \Sigma ^{*}. При этом каждый символ wx этого слова переводит в автомате A состояние q_{j_{x-1}} в q_{j_x}. Поэтому в A существует путь из q0 в q' \in  F, несущий слово w и, следовательно w \in  L.
< Лекция 5 || Лекция 6: 1234 || Лекция 7 >