Пример языка не являющегося регулярным

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

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

Мы рассмотрим подобного рода утверждения для классов регулярных, контекстно-свободных и линейных языков.

Начнем с леммы о разрастании для регулярных языков. Эта лемма (см. теорему 7.10) утверждает, что любой регулярный язык допускает представление всех своих достаточно длинных цепочек в виде соединения трех цепочек, причем средняя цепочка из этих трех не пуста, ограничена по длине, и ее «накачка» — повторение любое число раз — или выбрасывание не выводит за пределы языка (т.е. дает цепочки, принадлежащие данному регулярному языку).

2) контур, проходящий через ;

Примеры доказательств нерегулярности языка

Ясно, что накачка в этом случае выведет за пределы языка, так как при повторении цепочки число символов будет неограниченно расти, а число символов будет оставаться прежним.

Накачка невозможна по той же причине, что и в предыдущем случае.

Полезно иметь в виду следствие из леммы о разрастании.

Следствие 7.4. Если — бесконечный регулярный язык, то в нем найдется последовательность слов, длины которых образуют возрастающую арифметическую прогрессию.

В качестве такой последовательности можно взять последовательность слов из формулировки леммы о разрастании. Их длины образуют арифметическую прогрессию со знаменателем (длина «накачиваемой» средней подцепочки).

Отсюда легко получается вывод о том, что не являются регулярными следующие языки:

Можно доказать, что любой конечный язык регулярен и, более того, допускается конечным автоматом без контуров. Значит, последовательность цепочек, указанная в формулировке леммы, в таком случае не существует, но утверждение леммы остается истинным. Нужно всегда помнить простое логическое правило: утверждение вида «если А, то Б» равносильно утверждению вида «не А или Б».

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

Пример 7.13. Докажем нерегулярность языка правильных скобочных структур, порождаемых КС-грамматикой

Замечание 7.12. С использованием «техники пересечения» можно доказать нерегулярность языка из примера 7.12 следующим образом. Так как язык

нерегулярный, то и язык тоже не является регулярным.

Итак, можно вывести такой «рецепт»: если возникают существенные затруднения в доказательстве нерегулярности какого-либо языка с помощью только леммы о разрастании, то можно попытаться пересечь этот язык с некоторым регулярным языком так, чтобы нерегулярность пересечения легко доказывалась с использованием леммы о разрастании.

Источник

Регулярные языки и конечные автоматы

Регулярные выражения и языки

Тогда Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным, т.е. конкатенация языков состоит из конкатенаций всех слов первого языка со всеми словами второго языка. В частности, если Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным, то Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным, а если Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным, то Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным.

Введем обозначения для «степеней» языка L :

Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным

Итерацию (L) * языка L образуют все слова которые можно разбить на несколько подряд идущих слов из L :

Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным

Ее можно представить с помощью степеней:

Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным

Отметим также, что если рассматривать алфавит Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярнымкак конечный язык, состоящий из однобуквенных слов, то введенное ранее обозначение Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярнымдля множества всех слов, включая и пустое, в алфавите Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярнымсоответствует определению итерации Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярнымэтого языка.

В следующей таблице приведено формальное индуктивное определение регулярных выражений над алфавитом Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярными представляемых ими языков.

Нетрудно проверить, например, такие свойства регулярных операций:

Рассмотрим несколько примеров регулярных выражений и представляемых ими языков.

Пример 5.2. Регулярное выражение (0 +1) * представляет множество всех слов в алфавите <0, 1>.

Пример 5.3. Регулярное выражение 11(0 +1) * 001 представляет язык, состоящий из всех слов в алфавите <0, 1>, которые начинаются на ’11’, а заканчиваются на ‘001’.

Пример 5.4. Регулярное выражение Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярнымпредставляет язык, состоящий из всех слов в алфавите <0, 1>, которые не содержат подслово ‘000’ ( см. задачу 5.3).

Источник

Основные свойства контекстно-свободных языков

В «лекции 2» были доказаны лемма о разрастании и свойства замкнутости класса автоматных языков. Некоторые из этих теорем имеют аналоги для класса контекстно-свободных языков ( разделы 9.1 и 9.4), но этот класс не замкнут относительно дополнения и пересечения (раздел 9.5).

Лемма о разрастании для контекстно-свободных языков формализует явление «периодичности» в этих языках. Для полноты картины в разделах 9.2* и 9.3 приведены некоторые аналогичные теоремы для класса линейных языков, хотя ни в теории, ни в практических приложениях класс линейных языков значительной роли не играет.

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

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

Теорема 9.1.3. Каждый контекстно-свободный язык над однобуквенным алфавитом является автоматным.

Упражнение 9.1.4. Является ли контекстно-свободным язык Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным?

Упражнение 9.1.5. Является ли контекстно-свободным язык Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным?

Упражнение 9.1.6. Является ли контекстно-свободным язык Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным?

Упражнение 9.1.7. Является ли контекстно-свободным язык ?

Упражнение 9.1.8. Является ли контекстно-свободным язык Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным?

Упражнение 9.1.9. Является ли контекстно-свободным язык Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным?

Упражнение 9.1.10. Является ли контекстно-свободным язык Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным?

Упражнение 9.1.11. Является ли контекстно-свободным язык Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным?

Упражнение 9.1.12. Является ли контекстно-свободным язык Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным?

Упражнение 9.1.15. Является ли контекстно-свободным язык

Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным

Упражнение 9.1.16. Какому классу принадлежит язык, порождаемый грамматикой

Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным

Упражнение 9.1.17. Существуют ли такие контекстно-свободные языки Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярными Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным, что язык Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярнымне является контекстно-свободным?

Источник

Регулярные языки и конечные автоматы

Регулярные выражения и языки

Тогда Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным, т.е. конкатенация языков состоит из конкатенаций всех слов первого языка со всеми словами второго языка. В частности, если Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным, то Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным, а если Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным, то Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным.

Введем обозначения для «степеней» языка L :

Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным

Итерацию (L) * языка L образуют все слова которые можно разбить на несколько подряд идущих слов из L :

Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным

Ее можно представить с помощью степеней:

Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным

Отметим также, что если рассматривать алфавит Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярнымкак конечный язык, состоящий из однобуквенных слов, то введенное ранее обозначение Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярнымдля множества всех слов, включая и пустое, в алфавите Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярнымсоответствует определению итерации Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярнымэтого языка.

В следующей таблице приведено формальное индуктивное определение регулярных выражений над алфавитом Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярными представляемых ими языков.

Нетрудно проверить, например, такие свойства регулярных операций:

Рассмотрим несколько примеров регулярных выражений и представляемых ими языков.

Пример 5.2. Регулярное выражение (0 +1) * представляет множество всех слов в алфавите <0, 1>.

Пример 5.3. Регулярное выражение 11(0 +1) * 001 представляет язык, состоящий из всех слов в алфавите <0, 1>, которые начинаются на ’11’, а заканчиваются на ‘001’.

Пример 5.4. Регулярное выражение Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярнымпредставляет язык, состоящий из всех слов в алфавите <0, 1>, которые не содержат подслово ‘000’ ( см. задачу 5.3).

Источник

Лемма о накачке для регулярных языков

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

Лемма о накачке впервые сформулировал Иешуа Бар-Хиллель, Перлес и Шамир в 1961 году. [1] Она полезна для опровержения регулярности заданного языка. Она является одной из нескольких лемм о накачке, у каждой из которых похожее предназначение.

Содержание

Формальное утверждение

Пусть L регулярный язык. Тогда существует целое p ≥ 1 зависящее только от L, такое что любая строка w из L длины по меньшей мере p (p называется «длиной накачки») может быть записано как w = xyz, так что:

y — это подстрока, которую можно накачать (удалить или повторить произвольное число раз, так что результат останется в L). (1) означает, что цикл y должен быть накачан хотя бы длиной 1, (2) означает, что цикл должен быть в пределах первых p символов. На x и z ограничений не накладывается.

Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным

Неформальное утверждение и пояснение

Лемма о накачке описывает существенное свойство регулярных языков. Она утверждает, что слово w языка L длины по меньшей мере m, (где m константа, называемая длиной накачки, зависит лишь от L) можно разделить на три подстроки, Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным, так что среднюю часть, y (непустую), можно повторить произвольное число раз (включая ноль, то есть удалить) и получить строку из L. Этот процесс повторения называется «накачкой». Более того, лемма о накачке гарантирует, что длина xy не превысит m, ограничивая способы разделения строки w. Заметим, что конечные языки удовлетворяют требованиям леммы о накачке тривиально определяя m длиной максимальной строки из языка плюс один.

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

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

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

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

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

Если регулярный язык бесконечен, то существует минимальный КА, его принимающий. Число состояний этого КА и принимается за длину накачки p. Если длина строки превышает p, то хотя бы одно состояние при обработке строки повторяется (назовём его S). Переходы из состояния S и обратно соответствуют некоторой строке. Эту строку обозначим y по условиям леммы, и поскольку автомат примет строку как без части y, так и с повторяющейся частью y, условия леммы выполнены.

Проще понять доказательство, обратившись к примеру. На следующей диаграмме показан КА.

Пример языка не являющегося регулярным. Смотреть фото Пример языка не являющегося регулярным. Смотреть картинку Пример языка не являющегося регулярным. Картинка про Пример языка не являющегося регулярным. Фото Пример языка не являющегося регулярным

Этот КА принимает строку abcbcd. Поскольку длина её превышает число состояний, существуют повторяющиеся состояния. В этом примере повторяются состояния q1 и q2. Поскольку подстрока bcbc строки abcbcd проводит автомат по переходам из состояния q1 обратно в q1, эту строку можно повторять сколько угодно раз, и КА всё равно будет её принимать, например строки abcbcbcbcd и ad. В терминах леммы о накачке, строка abcbcd разбивается на часть x=a, часть y=bc и часть z=bcd. (Заметим, что можно разбить её различными способами, например x=a, y=bcbc, z=d, и все условия будут выполнены, кроме |xy| ≤ p).

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

Если язык L регулярен, то существует число p > 0 (длина накачки), такое что для любой строки uwv из L с |w| ≥ p справедливо представление

uxy i zv принадлежит L для любого целого i ≥ 0.

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

Недостаточность леммы

Заметим, что ни исходная, ни обобщённая леммы о накачке не дают достаточного условия регулярности языка. Так, существуют нерегулярные языки, для которых лемма выполнена. Если лемма не выполняется для некоторого языка L, то L нерегулярен. Если лемма выполняется для L, то L может быть регулярным.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *