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