Введение в схемы, автоматы и алгоритмы

          

Примеры неавтоматных языков


Рассмотрим несколько примеров применения теоремы о разрастании.

Пример 6.4. Покажем, что язык L1 ={ w =0i 1i | i

Введение в схемы, автоматы и алгоритмы
1 } не является автоматным.

Предположим, что он автоматный. Тогда для него имеется n из утверждения теоремы 6.3. Рассмотрим следующее ("специальное" !) слово w = 0n 1n. Очевидно, что w

Введение в схемы, автоматы и алгоритмы
L1. Предположим, что существует разбиение w = xyz, удовлетворяющего условиям (1) и (2) теоремы. Так как по условию (2) |xy|
Введение в схемы, автоматы и алгоритмы
n, то y = 0i для некоторого i>0. Но тогда слово w0 = xz= 0n-i1n
Введение в схемы, автоматы и алгоритмы
L1, что противоречит условию (3) теоремы. Следовательно язык L1 не автоматный.

Пример 6.5. Покажем, что язык СКОБ правильных скобочных последовательностей в алфавите { (, ) } не является автоматным.

Схема доказательства та же. В качестве специального слова выберем слово w = (n )n, оно, очевидно, принадлежит СКОБ. Тогда для всякого разбиения w = xyz такого, что |xy|

Введение в схемы, автоматы и алгоритмы
n слово y = (i для некоторого i>0. И, как и в предыдущем примере, слово w0 = xz= (n-i)n
Введение в схемы, автоматы и алгоритмы
СКОБ, что противоречит условию (3) теоремы. Следовательно, язык СКОБ не автоматный.

Пример 6.6.

Покажем, что язык L2 ={ w =0i 1j | i

Введение в схемы, автоматы и алгоритмы
2j+1 } не является автоматным.

Здесь, предположив, что L2 автоматный язык и зафиксировав константу n из теоремы 6.3, рассмотрим слово w = 0{2n+1}1n

Введение в схемы, автоматы и алгоритмы
L2. Для всякого разбиения w = xyz такого, что |xy|
Введение в схемы, автоматы и алгоритмы
n слово y = 0i для некоторого i>0. Рассмотрим слово w2 = x y2 z = 0{2n+1+i}1n. Но
Введение в схемы, автоматы и алгоритмы
. Следовательно, w2
Введение в схемы, автоматы и алгоритмы
L2 и язык L2 не является автоматным.

Пример 6.7. Рассмотрим язык "квадратов" в унарном алфавите { | }:

Введение в схемы, автоматы и алгоритмы

Здесь, предположив, что L3 автоматный язык и зафиксировав константу n из теоремы 6.3, рассмотрим слово w = |{n2}. Для всякого разбиения w = xyz такого, что |xy|

Введение в схемы, автоматы и алгоритмы
n слово y = |i для некоторого 0 < i
Введение в схемы, автоматы и алгоритмы
n. Тогда
Введение в схемы, автоматы и алгоритмы
. Но n2 - i
Введение в схемы, автоматы и алгоритмы
n2 -n > n2 -2n +1 =(n-1)2. Следовательно, n2 - i не является полным квадратом и w0
Введение в схемы, автоматы и алгоритмы
L3, т.е. язык "квадратов" L3 не является автоматным.

Пример 6.8.

Рассмотрим язык "простых чисел" в унарном алфавите { | }:

Введение в схемы, автоматы и алгоритмы

Предположим, что Lpr - автоматный язык и зафиксируем для него константу n из теоремы 6.3.
Выберем простое число p > n и рассмотрим слово w = |p. Пусть w = xyz - произвольное разбиение w такое, что |xy|

Введение в схемы, автоматы и алгоритмы
n. Тогда для некоторого 0 < i
Введение в схемы, автоматы и алгоритмы
n слово y = |i и xz = |p -i. Положим k = p - i и рассмотрим слово wk = x yk z. Его длина p' равна |x| +k|y| + |z|= (p-i)(i+1). Так как 1
Введение в схемы, автоматы и алгоритмы
i < n+1
Введение в схемы, автоматы и алгоритмы
p, то p' - составное число и wk
Введение в схемы, автоматы и алгоритмы
Lpr. Следовательно, Lpr - не автоматный язык. Заметим, что в этом примере k выбирается для каждого n по-своему.
Еще один прием доказательства неавтоматности языка L состоит в том, чтобы вместо L рассмотреть некоторый язык L' = op(L,L1,… , Lk), полученный из L и автоматных языков L1,… , Lk
с помощью операций op, сохраняющих автоматность. Если доказать, что L' не является автоматным, то и исходный язык L не автоматен.
Пример 6.9. Рассмотрим язык L4 ={ 0i 1j | i
Введение в схемы, автоматы и алгоритмы
j }.
Пусть L5= {0i1j | i
Введение в схемы, автоматы и алгоритмы
1, j
Введение в схемы, автоматы и алгоритмы
1}. Очевидно, что язык L5 автоматный. Нетрудно заметить, что его пересечение с дополнением L4 совпадает с языком L1
из примера 6.4, т.е. L1 = L5
Введение в схемы, автоматы и алгоритмы
overline{L4}. Так как мы установили, что L1 не автоматный, то и L4 не является автоматным.
Являются ли условия теоремы 6.3 достаточными для того, чтобы язык оказался автоматным? Следующий пример показывает, что ответ на этот вопрос отрицателен.
Пример 6.10.Пусть L6 ={cr ai bi | r
Введение в схемы, автоматы и алгоритмы
1 , i
Введение в схемы, автоматы и алгоритмы
0 }, L7= { aibj | i
Введение в схемы, автоматы и алгоритмы
0, j
Введение в схемы, автоматы и алгоритмы
0}. Рассмотрим язык L8 = L6
Введение в схемы, автоматы и алгоритмы
L7.
Для этого языка можно в качестве n выбрать 1. Каждое слово w из L8 принадлежит L6 или L7. Если слово w= cr ai bi
Введение в схемы, автоматы и алгоритмы
L6 , то оно представимо в виде xyz, где x=?, y=c, z= cr-1 ai bi ( r
Введение в схемы, автоматы и алгоритмы
1, i
Введение в схемы, автоматы и алгоритмы
0 ). Тогда w0 = z= cr-1 ai bi ( r
Введение в схемы, автоматы и алгоритмы
1, i
Введение в схемы, автоматы и алгоритмы
1 ) и при r=1 слово w0 = ai bi
Введение в схемы, автоматы и алгоритмы
L7, а при r > 1, очевидно, w0
Введение в схемы, автоматы и алгоритмы
L6. При k
Введение в схемы, автоматы и алгоритмы
1 имеем wk =cr+k-1 ai bi
Введение в схемы, автоматы и алгоритмы
L6. Если слово w= ai bj
Введение в схемы, автоматы и алгоритмы
L7 и i
Введение в схемы, автоматы и алгоритмы
1, то его можно представить как в виде xyz, где x=?, y=a, z= ai-1 bj ( i
Введение в схемы, автоматы и алгоритмы
1, j
Введение в схемы, автоматы и алгоритмы
0 ) и для каждого k
Введение в схемы, автоматы и алгоритмы
0 wk = aka i-1 bj
Введение в схемы, автоматы и алгоритмы
L7. Если же i =0, то w= bj ( j
Введение в схемы, автоматы и алгоритмы
1 ) и его можно разбить на части x=?, y=b, z= bj-1 ( j
Введение в схемы, автоматы и алгоритмы
1 ). И в этом случае для каждого k
Введение в схемы, автоматы и алгоритмы
0 wk =bk bj-1
Введение в схемы, автоматы и алгоритмы
L7. Во всех случаях wk
Введение в схемы, автоматы и алгоритмы
L8 и, следовательно язык L8 удовлетворяет условиям теоремы 6.3.


Но этот язык не автоматный. Действительно, пусть
Введение в схемы, автоматы и алгоритмы
: {a, b, c}*
Введение в схемы, автоматы и алгоритмы
{0, 1 }* - это гомоморфизм, заданный как
Введение в схемы, автоматы и алгоритмы
(a)=0,
Введение в схемы, автоматы и алгоритмы
(b) = 1,
Введение в схемы, автоматы и алгоритмы
(c) =?. Тогда
Введение в схемы, автоматы и алгоритмы
(L8 \ L7) =
Введение в схемы, автоматы и алгоритмы
(L6) = L1 из примера 6.4. Так как язык L7 является автоматным, а L1 - нет, то и язык L8 не является автоматным.

Теорема о разрастании для автоматных языков


До сих пор мы встречались лишь с автоматными языками и накопили достаточно много средств для доказательства того, что некоторый язык является автоматным. Для этого, например, достаточно построить для него регулярное выражение или получить его с помощью различных рассмотренных выше операций из заведомо автоматных языков. В этом разделе мы установим некоторое необходимое условие, которому удовлетворяют все автоматные языки. После этого, проверив, что некоторый язык этому условию не удовлетворяет, можно заключить, что он не является автоматным.

Теорема 6.3. (о разрастании для автоматных языков)

Пусть L - бесконечный автоматный язык. Тогда существует такая константа n, что любое слово w

Введение в схемы, автоматы и алгоритмы
L длины |w| > n можно разбить на три части x, y и z так, что w = xyz и

|xy|

Введение в схемы, автоматы и алгоритмы
n;|y| > 0;для любого m
Введение в схемы, автоматы и алгоритмы
0 слово wm = x ym z принадлежит языку L.

(Здесь y0= ?, y1=y, yi+1 = yiy).

Доказательство Так как язык L автоматный, то существует ДКА A=<?, Q, q0, F, ? >, распознающий L. Пусть |Q|= n и слово w=w1w2 … wk

Введение в схемы, автоматы и алгоритмы
L имеет длину k > n. Рассмотрим путь
Введение в схемы, автоматы и алгоритмы

в диаграмме A, который несет слово w. Очевидно, что среди первых (n+1) состояний этого пути хотя бы одно встречается дважды. Выберем первое из таких состояний q

Введение в схемы, автоматы и алгоритмы
Q. Тогда для некоторой пары чисел l < j
Введение в схемы, автоматы и алгоритмы
n имеем
Введение в схемы, автоматы и алгоритмы
. Пусть x=w1w2 … wl - это префикс w, который переводит q0 в
Введение в схемы, автоматы и алгоритмы
,
Введение в схемы, автоматы и алгоритмы
- это подслово w, которое переводит
Введение в схемы, автоматы и алгоритмы
в
Введение в схемы, автоматы и алгоритмы
, и
Введение в схемы, автоматы и алгоритмы
- это суффикс w, который переводит
Введение в схемы, автоматы и алгоритмы
в
Введение в схемы, автоматы и алгоритмы
. x и z могут быть пусты, но |y| = j-l
Введение в схемы, автоматы и алгоритмы
1. Длина |xy| = j
Введение в схемы, автоматы и алгоритмы
n. Таким образом, условия (1) и (2) теоремы выполнены. Нетрудно убедиться и в выполнении условия (3). Действительно, выбросив из пути p цикл
Введение в схемы, автоматы и алгоритмы
получим путь p0 из q0 в
Введение в схемы, автоматы и алгоритмы
, который несет слово xz, а повторив этот цикл m раз, получим путь p0 из q0 в q{ik}
Введение в схемы, автоматы и алгоритмы
F, который несет слово xym z. Следовательно, для любого m
Введение в схемы, автоматы и алгоритмы
0 wm = x ym z
Введение в схемы, автоматы и алгоритмы
L.

Содержательно, эта теорема утверждает, что у всякого достаточно длинного слова из автоматного языка имеется непустое подслово, которое можно вырезать или повторить сколько угодно раз, оставаясь внутри языка. Как, используя теорему ref{th-razr}, доказать, что некоторый язык L не является автоматным? Это можно сделать, используя схему доказательства "от противного":


Предположим, что L автоматный язык. Тогда для него имеется константа n из утверждения теоремы ref{th-razr}.Определим по n некотрое "специальное" слово w из L длины > n и докажем, что для любого разбиения w = xyz, удовлетворяющего условиям (1) и (2) теоремы, найдется такое k
Введение в схемы, автоматы и алгоритмы
0, что слово wk=xyk z не принадлежит L.На основании полученного противоречия делаем вывод, что L - не автоматный язык.

Разумеется, в этой схеме самым сложным является выбор "специального" слова w в пункте (2). Что касается, подбора такого k
Введение в схемы, автоматы и алгоритмы
0, для которого wk
Введение в схемы, автоматы и алгоритмы
L, то, как правило, достаточно рассмотреть k = 0 или k = 2.


Примените процедуру детерминизации из теоремы


Задача 6.1. Примените процедуру детерминизации из теоремы 4.2 и постройте ДКА, эквивалентный построенному выше в примере 6.2 НКА M.
Задача 6.2. Цилиндрификация - это операция, которая обратна проекции. Для любых алфавитов ? и ? таких, что ?
Введение в схемы, автоматы и алгоритмы
?, и любого языка L в алфавите ? определим его цилиндрификацию как язык CYL?(L) = {w
Введение в схемы, автоматы и алгоритмы
?* | при вычеркивании из w всех букв, не входящих в ?, получается слово u
Введение в схемы, автоматы и алгоритмы
L).
Показать, что для автоматного языка L язык CYL?(L) также является автоматным языком. Предложите процедуру перестройки автомата, распознающего L , в автомат, распознающий CYL?(L).
Задача 6.3.
Обращением слова w=w1w2 … wk (wi
Введение в схемы, автоматы и алгоритмы
?, i=1, … , k) называется слово w{-1}= wk … w2 w1. Показать, что для автоматного языка L его обращение - язык L{-1} ={ w{-1} | w
Введение в схемы, автоматы и алгоритмы
L} также является автоматным языком.
Задача 6.4.
Пусть L - автоматный язык в алфавите ?. Доказать, что автоматными являются и следующие языки:
ПРЕФ(L) = {w | существует такое слово x
Введение в схемы, автоматы и алгоритмы
?*, что wx
Введение в схемы, автоматы и алгоритмы
L}.СУФ(L) = {w | существует такое слово x
Введение в схемы, автоматы и алгоритмы
?*, что xw
Введение в схемы, автоматы и алгоритмы
L}.КОР(L) = {w | существуют такие слова x, y
Введение в схемы, автоматы и алгоритмы
?*, что xwy
Введение в схемы, автоматы и алгоритмы
L}.MAX(L) = {w | w
Введение в схемы, автоматы и алгоритмы
L и для всякого непустого x слово wx
Введение в схемы, автоматы и алгоритмы
L}.
Задача 6.5. Пусть L - автоматный язык в алфавите ?={a1,…, am}, а L1,…, Lm - это автоматные языки в алфавите ?. Доказать, что автоматным является и язык ЗАМ(L), полученный из слов L заменой каждой буквы ai на некоторое слово из Li, т.е. ЗАМ(L) = {w | textit{ существует такое слово }u=a{i1}a{i2}… a{in}
Введение в схемы, автоматы и алгоритмы
L и такие слова w1,w2,…, wn
Введение в схемы, автоматы и алгоритмы
?*, что w=w1w2… wn и wj
Введение в схемы, автоматы и алгоритмы
L{ij} для всех j=1,2,… n }.
Задача 6.6. Пусть L - автоматный язык в алфавите ?, k - целое положительное число и
Введение в схемы, автоматы и алгоритмы
- отображение ?k в ?. Доказать, что автоматным является язык L1 ={
Введение в схемы, автоматы и алгоритмы
(a1a2… ak) …
Введение в схемы, автоматы и алгоритмы
(a{(n-1)k+1}a(n-1)k+2 … ank) | a1a2… ank
Введение в схемы, автоматы и алгоритмы
L}.
Задача 6.7. Докажите, что теорема 6.3 о разрастании остается справедливой и при замене условия 1) |xy|
Введение в схемы, автоматы и алгоритмы
n на условие 1') |yz|
Введение в схемы, автоматы и алгоритмы
n, т.е. повторяющееся подслово y имеется и в суффиксе w длины
Введение в схемы, автоматы и алгоритмы
n.
Задача 6.8. Доказать, что следующие языки в алфавите ? ={a, b, c} не являются автоматными.
Множество всех слов, в которых букв a на 3 больше, чем букв b. L={ ancbm | m > 3n }. L={ wcw-1 | w =a2bna для некоторого n > 0}. L={ w | |w| = 2n для некоторого целого числа n }. L={ wc|w| | w
Введение в схемы, автоматы и алгоритмы
{a,b}*, |w| - длина слова w}.
Задача 6.9. ?-выражение - это либо переменная x, или символ ?, за которым следует переменная, а далее либо ?-выражение, либо левая скобка, ?-выражение, еще одно ?-выражение и правая скобка. Например, ? x x, ? x(x x), ? x ? x (? x(x x) ? x(x x)) - это правильные ?-выражения, а (x x), ? x(? x) и ? x((x x) - неправильные. Докажите, что язык ?-выражений в алфавите { x, ?, (, ) } не является автоматным.
Задача 6.10. Выше в задаче строился автомат-распознаватель, который проверял правильность сложения двоичных чисел. Докажите, что для операции умножения двоичных чисел такого автомата не существует, т.е. что язык в алфавите троек битов U = {(x1(1),x2(1),y(1)) (x1(2),x2(2),y(2)) … (x1(n),x2(n),y(n)) | y = y(n) … y(2)y(1) - это первые n битов произведения двоичных чисел x1= x1(n)… x1(2)x1(1) и x2 = x2(n)… x2(2)x2(1)} не является автоматным.
Задача 6.11.
Доказать, что язык L = { w | число букв a в w
Введение в схемы, автоматы и алгоритмы
число букв b в w } в алфавите ? ={a, b} не является автоматным.

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


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

Предложение 6.1. Пусть L - автоматный язык в алфавите ?. Тогда его дополнение - язык

Введение в схемы, автоматы и алгоритмы
также является автоматным.

Действительно, достаточно заметить, что язык ?*, включающий все слова в алфавите ? является автоматным и что

Введение в схемы, автоматы и алгоритмы
.

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

Определение 6.1. Пусть ? и Delta - два алфавита. Отображение

Введение в схемы, автоматы и алгоритмы
: ?*
Введение в схемы, автоматы и алгоритмы
Delta* слов первого из них в слова второго называется гомоморфизмом, если

Введение в схемы, автоматы и алгоритмы
(?) = ?; для любых двух слов w1 и w2 в алфавите ? имеет место равенство
Введение в схемы, автоматы и алгоритмы
(w1w2) =
Введение в схемы, автоматы и алгоритмы
(w1)
Введение в схемы, автоматы и алгоритмы
(w2).

Из этого определения непосредственно следует, что гомоморфизм однозначно определяется своими значениями на символах алфавита ?. Если w=w1w2 … wn, wi

Введение в схемы, автоматы и алгоритмы
? (1
Введение в схемы, автоматы и алгоритмы
i
Введение в схемы, автоматы и алгоритмы
n), то
Введение в схемы, автоматы и алгоритмы
(w) =
Введение в схемы, автоматы и алгоритмы
(w1)
Введение в схемы, автоматы и алгоритмы
(w2) …
Введение в схемы, автоматы и алгоритмы
(wn).

Пример 6.1.Пусть ? ={a, b, c}, Delta ={ 0, 1}, а гомоморфизм

Введение в схемы, автоматы и алгоритмы
определен на символах ? следующим образом:
Введение в схемы, автоматы и алгоритмы
(a) =00,
Введение в схемы, автоматы и алгоритмы
(b) =?,
Введение в схемы, автоматы и алгоритмы
(c) =101.

Тогда

Введение в схемы, автоматы и алгоритмы
(aca) = 0010100,
Введение в схемы, автоматы и алгоритмы
(abcb) =00101,
Введение в схемы, автоматы и алгоритмы
(bbb) = ?.

Определение 6.2.

Пусть

Введение в схемы, автоматы и алгоритмы
: ?*
Введение в схемы, автоматы и алгоритмы
Delta* - произвольный гомоморфизм и L - язык в алфавите ?. Образом
Введение в схемы, автоматы и алгоритмы
(L) языка L при гомоморфизме
Введение в схемы, автоматы и алгоритмы
называется язык
Введение в схемы, автоматы и алгоритмы
(L)= {
Введение в схемы, автоматы и алгоритмы
(w) | w
Введение в схемы, автоматы и алгоритмы
L}, состоящий из образов всех слов языка L.

Пусть L - язык в алфавите ?. Прообразом этого языка при гомоморфизме

Введение в схемы, автоматы и алгоритмы
называется язык
Введение в схемы, автоматы и алгоритмы
-1(L)= { w
Введение в схемы, автоматы и алгоритмы
?* |
Введение в схемы, автоматы и алгоритмы
(w)
Введение в схемы, автоматы и алгоритмы
L}, состоящий из всех таких слов в алфавите ?, чьи образы при гомоморфизме
Введение в схемы, автоматы и алгоритмы
попадают в L.

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

Теорема 6.1. Пусть

Введение в схемы, автоматы и алгоритмы
: ?*
Введение в схемы, автоматы и алгоритмы
?* - произвольный гомоморфизм и L - автоматный язык в алфавите ?. Тогда и язык
Введение в схемы, автоматы и алгоритмы
(L) вляется автоматным.


Доказательство Пусть A=<?, Q, q0, F, ?> - ДКА, распознающий язык L. Построим по нему НКА M =<?, QM, q0M, FM, ?M>, распознающий язык
Введение в схемы, автоматы и алгоритмы
(L). Идея этого построения проста: нужно каждый переход из состояния q в q' по букве a
Введение в схемы, автоматы и алгоритмы
? в автомате A превратить в переход из q в q' по слову
Введение в схемы, автоматы и алгоритмы
(a) в автомате M.

Пусть ? = {a1, … , am}, Q= {q0, q1, …, qn} и
Введение в схемы, автоматы и алгоритмы
(ai)= d1id2i … d{ki}i, dli
Введение в схемы, автоматы и алгоритмы
? (1
Введение в схемы, автоматы и алгоритмы
l
Введение в схемы, автоматы и алгоритмы
ki) (если
Введение в схемы, автоматы и алгоритмы
(ai)
Введение в схемы, автоматы и алгоритмы
?). Для каждого ai зафиксируем простой НКА Mi, распознающий язык {d1id2i … d{ki}i}, имеющий (ki +1) состояние p0i, p1i, …, p{ki}i и команды p{l-1}dli
Введение в схемы, автоматы и алгоритмы
pl (1
Введение в схемы, автоматы и алгоритмы
l
Введение в схемы, автоматы и алгоритмы
ki). ( Если
Введение в схемы, автоматы и алгоритмы
(ai) = ?, то у Mi будут два состояния, соединенные ?-переходом). Теперь для каждой команды qj ai
Введение в схемы, автоматы и алгоритмы
qr поместим в M между qj и qr автомат Mi (цепочку состояний p0i, p1i, …, p{ki}i). Чтобы состояния различных цепочек не склеивались, придадим им верхний индекс j, т.е. у каждого qj будет своя копия каждого из автоматов Mi. Для этого положим QM = Q
Введение в схемы, автоматы и алгоритмы
{ plji | 0
Введение в схемы, автоматы и алгоритмы
j
Введение в схемы, автоматы и алгоритмы
n, 1
Введение в схемы, автоматы и алгоритмы
i
Введение в схемы, автоматы и алгоритмы
m, 0
Введение в схемы, автоматы и алгоритмы
l
Введение в схемы, автоматы и алгоритмы
ki }. Таким образом, pl{ji} - это l-ое состояние на пути из qj по "старой" букве ai. Программа ?M автомата M строится по программе A следующим образом. Для каждой команды вида qj ai
Введение в схемы, автоматы и алгоритмы
qr из ? поместим в ?M следующие команды:

Введение в схемы, автоматы и алгоритмы


Таким образом, из qj автомат M по пустому переходу попадает в начальное состояние p0ji j-ой копии автомата Mi, затем проходит по слову
Введение в схемы, автоматы и алгоритмы
(ai) и снова по пустому переходу попадает в qr.

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

Докажем теперь, что наше построение корректно, т.е., что
Введение в схемы, автоматы и алгоритмы
(L)=
Введение в схемы, автоматы и алгоритмы
( LA) = LM .



Введение в схемы, автоматы и алгоритмы
(L)
Введение в схемы, автоматы и алгоритмы
LM. Заметим вначале, что если ?
Введение в схемы, автоматы и алгоритмы
L, то q0
Введение в схемы, автоматы и алгоритмы
F и по определению q0
Введение в схемы, автоматы и алгоритмы
FM, следовательно
Введение в схемы, автоматы и алгоритмы
(?)=?
Введение в схемы, автоматы и алгоритмы
LM.

Пусть w=w1w2… wk
Введение в схемы, автоматы и алгоритмы
L, ws
Введение в схемы, автоматы и алгоритмы
?. Тогда в диаграмме A имеется путь из q0 в некоторое заключительное состояние q'
Введение в схемы, автоматы и алгоритмы
F, который несет слово w. Пусть это путь
Введение в схемы, автоматы и алгоритмы
. Тогда для каждого 1
Введение в схемы, автоматы и алгоритмы
x
Введение в схемы, автоматы и алгоритмы
k в ? имеется команда
Введение в схемы, автоматы и алгоритмы
. Но из определения ?M следует, что тогда в автомате M имеется путь из
Введение в схемы, автоматы и алгоритмы
в
Введение в схемы, автоматы и алгоритмы
, несущий слово
Введение в схемы, автоматы и алгоритмы
(wx). Объединив все такие пути, получим путь из из q0 в q'
Введение в схемы, автоматы и алгоритмы
FM, несущий слово
Введение в схемы, автоматы и алгоритмы
(w). Следовательно,
Введение в схемы, автоматы и алгоритмы
(w)
Введение в схемы, автоматы и алгоритмы
LM.



LM
Введение в схемы, автоматы и алгоритмы
Введение в схемы, автоматы и алгоритмы
(L). Пусть слово u
Введение в схемы, автоматы и алгоритмы
?* принадлежит LM.


Покажем, что тогда для некоторого w
Введение в схемы, автоматы и алгоритмы
L u =
Введение в схемы, автоматы и алгоритмы
(w). Рассмотрим для этого путь в диаграмме M из q0 в q'
Введение в схемы, автоматы и алгоритмы
FM, несущий слово u . Выделим на этом пути все состояния из Q. Пусть это будут по порядку состояния q0=q{j0}, q{j1}, … q{jk}= q'. Тогда слово u разбивается на k подслов: u=u1u2 … uk таких, что ux переводит в M состояние
Введение в схемы, автоматы и алгоритмы
в
Введение в схемы, автоматы и алгоритмы


(1
Введение в схемы, автоматы и алгоритмы
x
Введение в схемы, автоматы и алгоритмы
k). Покажем, что для каждого такого ux существует символ wx
Введение в схемы, автоматы и алгоритмы
? такой, что ux =
Введение в схемы, автоматы и алгоритмы
(wx) и в ? имеется команда
Введение в схемы, автоматы и алгоритмы
. Действительно, любой путь из
Введение в схемы, автоматы и алгоритмы
в M начинается ?-переходом в некоторое состояние вида
Введение в схемы, автоматы и алгоритмы
. Пусть это будет состояние на пути, который несет ux в
Введение в схемы, автоматы и алгоритмы
. Далее этот путь обязательно будет проходить по состояниям вида
Введение в схемы, автоматы и алгоритмы
и завершится ?-переходом из
Введение в схемы, автоматы и алгоритмы
в состояние
Введение в схемы, автоматы и алгоритмы
. Тогда из определения M следует, что ux =
Введение в схемы, автоматы и алгоритмы
(ai) и в ? имеется команда
Введение в схемы, автоматы и алгоритмы
. Положив wx=ai, получим, что ux =
Введение в схемы, автоматы и алгоритмы
(wx) и u=
Введение в схемы, автоматы и алгоритмы
(w1)
Введение в схемы, автоматы и алгоритмы
(w2) …
Введение в схемы, автоматы и алгоритмы
(wk) =
Введение в схемы, автоматы и алгоритмы
(w), для слова w=w1w2 … wk
Введение в схемы, автоматы и алгоритмы
?*. При этом каждый символ wx этого слова переводит в автомате A состояние
Введение в схемы, автоматы и алгоритмы
в
Введение в схемы, автоматы и алгоритмы
. Поэтому в A существует путь из q0 в q'
Введение в схемы, автоматы и алгоритмы
F, несущий слово w и, следовательно w
Введение в схемы, автоматы и алгоритмы
L .