Доказательство нерегулярности языков: лемма о разрастании — различия между версиями
Ateuhh (обсуждение | вклад) (→Пример нерегулярного языка, для которого выполняется лемма о разрастании) |
Ateuhh (обсуждение | вклад) (→Лемма о разрастании в общем виде) |
||
Строка 15: | Строка 15: | ||
== Лемма о разрастании в общем виде == | == Лемма о разрастании в общем виде == | ||
− | + | {{Лемма | |
+ | |id= ==lemma== | ||
+ | |about=о разрастании, о накачке в общем виде | ||
+ | |statement= | ||
Если язык <tex>L</tex> является регулярным, то существует число <tex>p \geqslant 1</tex> такое что для любого слова <tex>uwv</tex> из языка <tex>L</tex>, где <tex>|w| \geqslant p</tex> может быть записано в форме <tex>uwv = uxyzv</tex>, | Если язык <tex>L</tex> является регулярным, то существует число <tex>p \geqslant 1</tex> такое что для любого слова <tex>uwv</tex> из языка <tex>L</tex>, где <tex>|w| \geqslant p</tex> может быть записано в форме <tex>uwv = uxyzv</tex>, | ||
где слова <tex>x</tex>, <tex>y</tex> и <tex>z</tex> такие, что <tex>|xy| \leqslant p</tex>, <tex>|y| \geqslant 1</tex> и <tex>uxy^izv</tex> принадлежит языку <tex>L</tex> для любого целого числа <tex>i \geqslant 0</tex>. | где слова <tex>x</tex>, <tex>y</tex> и <tex>z</tex> такие, что <tex>|xy| \leqslant p</tex>, <tex>|y| \geqslant 1</tex> и <tex>uxy^izv</tex> принадлежит языку <tex>L</tex> для любого целого числа <tex>i \geqslant 0</tex>. | ||
+ | |proof= | ||
+ | Исходя из формулировки леммы в общем виде, стандартная версия леммы, которая описана выше, является особым случаем, в котором строки <tex>u</tex> и <tex>v</tex> пусты. | ||
+ | Доказательство леммы в общем виде аналогично доказательству стандартной версии леммы, с тем отличием, что строки <tex>u</tex> и <tex>v</tex> теперь могут быть как не пусты, так и пусты. | ||
− | + | }} | |
− | + | '''Замечание.'''Поскольку лемма в общем виде накладывает более жесткие требования на язык, то она может быть использована для доказательства нерегулярности многих других языков, таких как <tex> L =\{ a^mb^nc^n : m \geqslant 1 , n \geqslant 1 \}</tex>. | |
− | Поскольку лемма в общем виде накладывает более жесткие требования на язык, то она может быть использована для доказательства нерегулярности многих других языков, таких как <tex> L =\{ a^mb^nc^n : m \geqslant 1 , n \geqslant 1 \}</tex>. | ||
== Использование леммы для доказательства нерегулярности языков == | == Использование леммы для доказательства нерегулярности языков == |
Версия 11:40, 9 ноября 2016
Лемма о разрастании[1](Pumping lemma) — лемма, позволяющая во многих случаях проверить, является ли данный язык регулярным.
Содержание
Лемма о разрастании
Лемма (о разрастании, о накачке): |
Пусть регулярный язык над алфавитом , тогда существует такое , что для любого слова длины не меньше найдутся слова , для которых верно: и . — |
Доказательство: |
Пусть — регулярный язык над алфавитом . Поскольку регулярный язык является автоматным, то найдётся автомат , допускающий язык . Пусть — размер автомата. Докажем, что удовлетворяет условию леммы.
|
Замечание. Условие леммы не является достаточным для регулярности языка. (См. пример)
Лемма о разрастании в общем виде
Лемма (о разрастании, о накачке в общем виде): |
Если язык является регулярным, то существует число такое что для любого слова из языка , где может быть записано в форме ,
где слова , и такие, что , и принадлежит языку для любого целого числа . |
Доказательство: |
Исходя из формулировки леммы в общем виде, стандартная версия леммы, которая описана выше, является особым случаем, в котором строки Доказательство леммы в общем виде аналогично доказательству стандартной версии леммы, с тем отличием, что строки и пусты. и теперь могут быть как не пусты, так и пусты. |
Замечание.Поскольку лемма в общем виде накладывает более жесткие требования на язык, то она может быть использована для доказательства нерегулярности многих других языков, таких как
.Использование леммы для доказательства нерегулярности языков
Для доказательства нерегулярности языка часто удобно использовать отрицание леммы о разрастании. Пусть
— язык над алфавитом . Если для любого натурального найдётся такое слово из данного языка, что его длина будет не меньше и при любом разбиении на три слова такие, что непустое и длина не больше , существует такое , что , то язык нерегулярный.Рассмотрим такой подход на примере языка правильных скобочных последовательностей. Для фиксированного
предъявляем слово . Пусть как-то разбили на . Так как , то , где . Для любого такого разбиения берём и получаем , что не является правильной скобочной последовательностью. Значит, язык правильных скобочных последовательностей нерегулярен.Пример нерегулярного языка, для которого выполняется лемма о разрастании
Рассмотрим следующий язык:
Докажем, что он нерегулярный. Для этого рассмотрим вспомогательный язык
и докажем его нерегулярность. Воспользуемся предложенным в предыдущем пункте подходом. Для фиксированного выберем слово . Заметим, что при любом разбиении на слово не пусто (по условию леммы) и содержит только символы и (согласно выбранному слову и условию из леммы ). Это означает, что при слово либо не содержит символа , либо количество символов меньше . В обоих случаях полученное слово не принадлежит языку. Значит язык нерегулярный.Предположим, что язык
регулярный. Заметим, что . В силу того, что пересечение регулярных языков регулярно, имеем в правой части равенства регулярный язык. При этом в левой части стоит язык, нерегулярность которого была доказана ранее. Значит наше предположение неверно, и язык нерегулярный.Докажем, что язык удовлетворяет лемме о разрастании. Выберем в лемме
. Это означает, что длина рассматриваемых слов не меньше (иными словами ). Для каждого случая значений выберем соответствующие слова и из леммы. Легко проверить, что в каждом из приведенных ниже случаев условие леммы выполняется:- . Слово имеет вид . Выберем .
- . Слово имеет вид . Выберем .
- . Слово имеет вид . Выберем .
- . Слово имеет вид . Выберем .
- . Слово имеет вид . Выберем .
Таким образом, язык
удовлетворяет второй части леммы и при этом является нерегулярным, что доказывает тот факт, что лемма о разрастании не является достаточным для регулярности языка.Рассмотрим другой пример.
примерно из символов слова является символом
Предположим, что некоторая строка языка
имеет длину пять. Поскольку в алфавите всего четыре символа, то как минимум два символа из пяти в этой строке будут одинаковыми, и они разделены максимум тремя символами:- Если дубликаты разделены нулями или единицами, накачаем один из двух остальных символов в строке, которые не повлияют на подстроку, которая содержит дубликаты,
- Если дубликаты разделены двойками или тройками, накачаем 2 символа, разделяющих их. Накачка также уменьшает или увеличивает результат во время создания подстроки размера 3, которая содержит 2 продублированных символа
Второе условие языка
обеспечивает, что - нерегулярный, то есть в нем бесконечное число строк, которые принадлежат , но не могут быть получены путям разрастания некоторой меньшей строки вСм. также
- Лемма о разрастании для КС-грамматик
- Интерпретация булевых формул с кванторами как игр для двух игроков
Примечания
- ↑ Лемму также часто называют леммой о накачке.
Источники
- Хопкрофт Д., Мотвани Р., Ульман Д. — Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — М.:Издательский дом «Вильямс», 2002. — С. 144. — ISBN 5-8459-0261-4
- Wikipedia — Pumping lemma for regular languages