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

advertisement
Тема 6: Лемма о разрастании для автоматных языков
Пусть будут следующие примеры:
1) Дан следующий КА = (Σ, Q, q0, δ, F), Σ = {0, 1}, Q = {q0, q1, q2,
q3}, F = {q3}, функция перехода
δ: δ(q0, 1)={q2}, δ(q0,
0)={q1}, δ(q1, 0)={q2}, δ(q1, 1)={q3}, δ(q2, 1)={q1}, δ(q2,
0)={q3}, δ(q3, 0)={q3}, δ(q3, 1)={q3}.
0
q1
0
1
q0
0
q3
q3
1
1
0
1
q2
Если проверим на проходимость слово z1 = 10101100 или z2 =
00110011, замечаем что оба они проходят через автомат. Для
прохождения слова z1 через автомат необходимо задействовать
следующие состояния q0-q2-q3-q3-q3-q3-q3-q3-q3. Замечаем повторы
состояний.
2) Следующий язык L01 = {0n1n / n1}не является регулярным. Слова
01, 0011, 000111 принадлежат данному языку. Если бы этот язык
был бы регулярным можно было бы построить эквивалентный КА.
Можно попытатся построить какой то КА, но он не сможет
пропускать все слова языка L01 через свои состояния, потому что
построенный КА не «сможет вспоминать» каждый раз сколько нулей
или
сколько
едениц
он
прочел.
Он
не
может
регулировать
правильность написания слов, потому что язык нерегулярный.
Для решения проблем и неопреденностей из первого и второго
примера необходимо использовать «лемму о разрастании». Она также
называется «леммой о накачке» - pumping lemma и является важной
леммой в теории автоматов позоляющая проверить (очень часто) если
определённый язык является или нет автоматным или нерегулярным.
Поскольку
все
конечные
языки
являются
автоматными,
проверку есть смысл делать только для бесконечных языков.
то
эту
Термин
накачка
(разрастание),
в
названии
леммы
отражает
возможность многократного повторения некоторой подстроки в любой
строке, подходящей длины любого бесконечного автоматного языка.
Лемма: Для любого регулярного языка L существует константа n, так,
чтобы для любого слова z из L длина которого больше или равно чем n,
верны следующие свойства:
1. Слово z можно разбить на 3 подслова u, v, x;
2. Длина подслова uv должна быть меньше или равна чем n, а длина
подслова v должна быть больше единицы, |uv|<=n, а |v|>=1;
3. Слово uvi x тоже принадлежит языку L, где i=0,1,2...
Док-во:
Если язык регулярный для него можно построить эквивалентный КА.
Пусть этот КА будет детерминированный КА. В качестве константы n
возьмем количество состояний автомата.
Пусть будет слово z из L и длина слова z  n. Это означает что слово
z проходит через КА, то есть (q0, z)
(qf,). Напишем состояния через
которые проходит автомат при проверки слова z: q0, q1, q2, …, qj, qj+1,
…, qk, qk+1, …, qm=qf.
Находим первое повторение состояний и выделяем их. Пусть эти
повторения будут qj и qк. Проверяем свойства:
1) z=uvx. Из вышесказанного,

u это та часть слова z, которая проходит через автомат до
первого повторения, qj;

v это та часть слова z, которая проходит через автомат от
состояния qj до qk, включая qk−1;

x это та часть слова z, проходящая через состояния qk до
qm.
То есть : (q0, z)=(q0, uvx)
(qj, vx)
(qk, x)
(qm,).
2) Если n — число состояний автомата, а длина слова больше или равно
чем n, то путь проверки слова проходит по меньшей мере два раза через
одно и то же состояние, т. е. в автомате должен присутствовать хоть один
цикл (петля) – это обьясняет |v|>=1.
При распознавании подслов u и v участвуют разные состояния КА,
поэтому их длина не может превзойти n, то есть |uv|<=n.
3) uvixL, где i=0, 1, 2, …
Пусть i=0, тогда uxL. Значит (q0, ux)
(qm,) –
(qj, x) = (qk, x)
слово проходит и значит оно принадлежит языку L.
Если i>0, тогда uv....vxL,
uvvv…vx)
(qj,
значит можно пройти автомат так: (q0,
vvv…vx)
(qk,vv…vx)
=
(qj,
vv…vx)
(qm,).
(qk,v…vx) … (qk, x)
Замечание.
1) Слова u и x, из леммы, могут быть и пустыми, а v не может быть
пустым.
2) Условия, сформулированные в лемме являются необходимыми для
доказательства автоматности, но не достаточными.
Пример: Для следующего КА = (Σ, Q, q0, δ, F), Σ = {0, 1}, Q = {q0,
q1, q2, q3}, F = {q3}, δ: δ(q0, 1)={q2}, δ(q0, 0)={q1}, δ(q1, 0)={q2},
δ(q1, 1)={q3}, δ(q2, 1)={q1},
δ(q2, 0)={q3}, δ(q3, 0)={q3}, δ(q3, 1)={q3}.
0
q1
0
q0
1
0
q3
q3
1
1
0
q2
1
Необходимо разбить слово z1 = 10101100, на три части uvx. n=4.
z1 = 10101100, z1 =7>4.
1
0
1
0
1
1
0
0
q0 
q2 
q3 
q3 
q3 
q3 
q3 
q3 
q3.








Первое повторение состояний q3-q3. Это означает что

z=uvx, где u = 10, v = 1, x = 01100;

|uv|<=n, |uv|=3<4; а |v|=1;

uvi x тоже принадлежит языку L
Задание: Разбить и проверить слова z2 = 00110011, z3 = 01100011, z4 =
1100110 используя лемму о разрастании.
Применение леммы о разрастании
1) Обратная формулировка леммы о разрастании
Пусть L некоторый язык над алфавитом V. Если для nN, существует 
zL, так что бы |z|n и для любых подстрок u,v,x  VT* для которых
z=uvx, |v|1, существует iN{0} для которого uvixL  то L – не
автоматный.
Используется для доказательства регулярности или нерегулярности
языка. L01 = {0n1n / n1} не является регулярным.
2)
Теорема: Регулярный язык L не ограничен тогда и только тогда, когда
существует слово z из L, имеющее длину n|z|<2n, где n — константа
из леммы о разрастании. (значит существуют повторы)
Док-во:
Пусть zL, n≤/z/<2n  n<2n. Тогда язык L неограничен, поскольку,
используя лемму о разрастании, z можно написать как uvix, и из леммы,
все слова uvix принадлежат L, а так как i=0,1,... то язык бесконечен.
Это и определяет неограниченное количество слов в L.
Download