Лемма о накачке для регулярных языков - Pumping lemma for regular languages

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

В частности, лемма о накачке говорит, что для любого регулярного языка существует постоянная такое, что любое слово в длиной не менее можно разбить на три подстроки, , где средняя часть не должно быть пустым, чтобы слова построен путем повторения ноль или более раз все еще в . Этот процесс повторения известен как «накачивание». Кроме того, лемма о накачке гарантирует, что длина будет самое большее , устанавливая ограничения на способы, которыми могут быть разделены. Конечные языки бессмысленно удовлетворяют лемме о накачке, имея равна максимальной длине строки в плюс один.

Лемма о перекачке полезна для опровержения регулярности конкретного рассматриваемого языка. Впервые это было доказано Майкл Рабин и Дана Скотт в 1959 г.,[1] и вскоре после этого был заново открыт Иегошуа Бар-Гилель, Миха А. Перлес, и Эли Шамир в 1961 г., как упрощение их лемма о прокачке для контекстно-свободных языков.[2][3]

Официальное заявление

Позволять быть обычным языком. Тогда существует целое число в зависимости только от так что каждая строка в длины не менее ( называется «длина накачки»[4]) можно записать как (т.е. можно разделить на три подстроки), удовлетворяющие следующим условиям:

- это подстрока, которую можно перекачивать (удалять или повторять любое количество раз, и результирующая строка всегда находится в ). (1) означает цикл для перекачивания должен быть длиной не менее одного; (2) означает, что цикл должен выполняться в пределах первого символы. должен быть меньше чем (вывод (1) и (2)), но кроме этого, нет никаких ограничений на и .

Проще говоря, для любого обычного языка , любое достаточно длинное слово ) можно разделить на 3 части. , так что все струны за также в .

Ниже приводится формальное выражение леммы о накачке.

Использование леммы

Лемма о накачке часто используется для доказательства того, что конкретный язык нерегулярен: доказательство от противного (регулярности языка) может состоять в отображении слова (требуемой длины) на языке, не обладающем свойством, описанным в лемме о накачке.

Например, язык по алфавиту можно показать как нерегулярные следующим образом:

Позволять , и использоваться в формальная формулировка леммы о накачке над. Мы предполагаем, что существует некоторая постоянная . Позволять в быть предоставленным , которая является строкой длиннее, чем . По лемме о накачке должно существовать разложение с и такой, что в для каждого . С помощью , мы знаем состоит только из экземпляров . Более того, поскольку , он содержит хотя бы один экземпляр буквы . Мы сейчас качаем вверх: имеет больше экземпляров буквы чем письмо , поскольку мы добавили несколько экземпляров без добавления экземпляров . Следовательно, не в . Мы пришли к противоречию. Следовательно, предположение, что регулярна (т.е. существует такая ) должно быть неверным. Следовательно не регулярно.

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

Доказательство леммы о накачке

Идея доказательства: когда достаточно длинный нить xyz признан конечный автомат, он должен был достичь некоторого состояния () дважды. Следовательно, после повторения («прокачки») средней части произвольно часто (xyyz, xyyyz, ...) слово все равно будет распознаваться.

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

Например, на следующем изображении показан FSA.

Автомат, принимающий язык a (bc) * d.svg

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

Общая версия леммы о накачке для регулярных языков

Если язык регулярна, то существует число (длина накачки) так, чтобы каждая струна в с можно записать в виде

со струнами , и такой, что , и

в для каждого целого числа .[5]

Отсюда над стандартная версия следует за особым случаем, причем оба и это пустая строка.

Поскольку общая версия предъявляет более строгие требования к языку, ее можно использовать для доказательства нерегулярности многих других языков, таких как .[6]

Обратное к лемме неверно

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

Например, рассмотрим следующий язык:

.

Другими словами, содержит все строки в алфавите с подстрокой длиной 3, включающей повторяющийся символ, а также со всеми строками в этом алфавите, где ровно 1/7 символов строки равны тройкам. Этот язык не является регулярным, но его все же можно "накачать" . Предположим некоторую строку s имеет длину не менее 5. Тогда, поскольку в алфавите всего четыре символа, по крайней мере два из первых пяти символов в строке должны быть дубликатами. Они разделены максимум тремя символами.

  • Если повторяющиеся символы разделены символами 0 или 1, перекачайте один из двух других символов в строке, что не повлияет на подстроку, содержащую дубликаты.
  • Если повторяющиеся символы разделены 2 или 3 символами, перекачайте 2 символа, разделяющих их. В результате перекачки вниз или вверх создается подстрока размером 3, содержащая 2 повторяющихся символа.
  • Второе условие гарантирует, что не является регулярным: рассмотрим строку . Эта строка находится в именно когда и поэтому не является регулярным Теорема Майхилла – Нероде.

В Теорема Майхилла – Нероде предоставляет тест, который точно характеризует обычные языки. Типичный метод доказательства регулярности языка состоит в построении либо конечный автомат или регулярное выражение для языка.

Смотрите также

Примечания

  1. ^ Рабин, Майкл; Скотт, Дана (Апрель 1959 г.). «Конечные автоматы и проблемы их решения» (PDF). Журнал исследований и разработок IBM. 3 (2): 114–125. Дои:10.1147 / rd.32.0114. Архивировано 14 декабря 2010 года.CS1 maint: неподходящий URL (ссылка на сайт) Здесь: лемма 8, с.119.
  2. ^ Бар-Гилель, Ю.; Perles, M .; Шамир, Э. (1961), "О формальных свойствах грамматик простой фразеологической структуры", Zeitschrift für Phonetik, Sprachwissenschaft und Kommunikationsforschung, 14 (2): 143–172
  3. ^ Джон Э. Хопкрофт; Раджив Мотвани; Джеффри Д. Ульман (2003). Введение в теорию автоматов, языки и вычисления. Эддисон Уэсли. Здесь: раздел 4.6, с.166
  4. ^ Берстель, Жан; Лаув, Аарон; Ройтенауэр, Кристоф; Салиола, Франко В. (2009). Комбинаторика слов. Кристоффель слова и повторы словами. Серия монографий CRM. 27. Провиденс, Род-Айленд: Американское математическое общество. п. 86. ISBN  978-0-8218-4480-9. Zbl  1161.68043.
  5. ^ Савич, Уолтер (1982). Абстрактные машины и грамматики. п.49. ISBN  978-0-316-77161-0.
  6. ^ Джон Э. Хопкрофт и Джеффри Д. Ульман (1979). Введение в теорию автоматов, языки и вычисления. Ридинг / МА: Эддисон-Уэсли. ISBN  978-0-201-02988-8. Здесь: стр. 72, упражнение 3.2 (которое дает немного менее общую версию, требующую |ш|=п) и 3.3

Рекомендации