Я думаю, что вы получите лучшие ответы на cs.stackexchange, но вот основной обзор:
Лемма о накачке (для регулярных языков; есть более сложная лемма для контекстно-свободных языков) — это результат о регулярных языках, который гласит: «Если L — регулярный язык, то существует целое число p, такое что каждое слово в L не меньше длины поскольку p можно разделить на три части x, y и z так, что xz ∈ L, xyz ∈ L, xyyz ∈ L, xyyyz ∈ L и т. д.». (Есть еще несколько деталей, например, длина y не меньше 1, а длина xy равна ‹= p, так что проверьте формальное утверждение в Википедии) «p» часто называют «длиной накачки» языка.
Этот результат обычно используется как способ доказать, что язык не является регулярным — эти доказательства работают, говоря что-то вроде:
Если бы L был регулярным, у него была бы длина накачки p, как в лемме о накачке.
Создайте строку длиннее, чем p букв в языке. Обычно эта строка оказывается намного длиннее, чем длина p символов, но в начале будет часть, состоящая из p символов, чтобы упростить следующий шаг.
Покажите, что когда вы «накачиваете» эту строку (то есть когда вы повторяете часть «у» некоторое количество раз), вы получаете материал, которого нет в языке L.
Следовательно, лемма о накачке для L неверна, а значит, L нерегулярна.
Обратите внимание, что вы не можете использовать это в обратном порядке, чтобы доказать, что язык является регулярным! Вы можете использовать это только для доказательства того, что язык не является регулярным, и очень редко его можно использовать для доказательства того, что регулярный язык содержит определенные типы строк.
Доказательство примера следует этому формату. Вот еще одно доказательство, взятое из недавнего вопроса stackoverflow:
L = {w ∈ {0,1}* | w has an odd length and the middle character is 0}
Теперь, доказывая, что L не является регулярным:
Если бы L был регулярным, он имел бы длину накачки p.
Рассмотрим строку s = '1'*p + '0' + '1'*p - эта строка состоит из L и длиннее p символов. Следовательно, по лемме о накачке s можно разделить на три части x, y, z такие, что |xy|‹=p, |y|>0, а строки вида xyyyz находятся в L.
Но из-за того, как было построено s, мы знаем, что часть y содержит только символы «1», имеет ли строка xyyyz только один символ «0», и в ней больше символов «1» слева от «0», чем вправо, поэтому xyyyz не находится в L.
Следовательно, L не является регулярным.
person
Daniel Martin
schedule
03.02.2016