Задачи
[43/86%]Для произвольной строки обращением , обозначаемым , называется строка , записанная в обратном порядке, . Для произвольного языка положим . Покажите, что если регулярен, то и регулярен.
Пусть
содержит все столбцы высотой 3, состоящие из нулей и единиц. Строка символов из задаёт три строки нулей и единиц. Будем считать каждую строку двоичным числом и положим
Например,
Покажите, что регулярен. (Подсказка: работать с проще. Вы можете использовать результат, утверждаемый в задаче 1.31.)
Пусть
Здесь содержит все столбцы высотой два, состоящие из нулей и единиц. Строка символов из задаёт две строки нулей и единиц. Будем считать каждую строку двоичным числом и положим
Например, , а . Покажите, что регулярен. (Вы можете использовать результат, утверждаемый в задаче 1.31.)
Пусть — то же, что и в задаче 1.33. Будем считать каждую строку двоичным числом и положим
Например, , а . Покажите, что регулярен.
Пусть — то же, что и в задаче 1.33. Будем считать верхнюю и нижнюю строки строками из нулей и единиц, и положим
Задача 1.33: содержит все столбцы из нулей и единиц высоты два,
Строка символов из задаёт две строки из нулей и единиц. Покажите, что не является регулярным.
Пусть . Покажите, что для каждого язык регулярен.
Пусть . Покажите, что для каждого язык регулярен.
all-NFA — это пятёрка , которая допускает , если каждое возможное состояние, в котором может оказаться после чтения входной строки , является состоянием из . Заметим, что, в отличие от него, обычный НКА допускает строку, если хотя бы одно из этих возможных состояний является допускающим. Докажите, что all-NFA распознают класс регулярных языков.
Конструкция из теоремы 1.54 показывает, что каждый ОНКА (обобщённый НКА, GNFA) эквивалентен ОНКА всего с двумя состояниями. Мы можем показать, что для ДКА имеет место противоположное явление. Докажите, что для каждого существует язык , который распознаётся ДКА с состояниями, но не распознаётся ни одним ДКА с состояниями.
Напомним, что строка является префиксом строки , если существует строка такая, что , и что является собственным префиксом , если, кроме того, . В каждом из следующих пунктов определяется операция над языком . Покажите, что класс регулярных языков замкнут относительно этой операции.
ᴬ .
.
Для языков и назовём идеальным перемешиванием (perfect shuffle) и язык
Покажите, что класс регулярных языков замкнут относительно операции идеального перемешивания.
Для языков и назовём перемешиванием (shuffle) и язык
Покажите, что класс регулярных языков замкнут относительно операции перемешивания.
Пусть — произвольный язык. Определим как язык, содержащий все строки, которые можно получить, удалив один символ из некоторой строки языка . Таким образом, . Покажите, что класс регулярных языков замкнут относительно операции DROP-OUT. Приведите как доказательство «на картинке», так и более формальное доказательство с помощью построения, как в теореме 1.47.
ᴬ Пусть и — языки над алфавитом . Определим . Покажите, что класс регулярных языков замкнут относительно операции .
- Пусть . Покажите, что если регулярен, а — произвольный язык, то регулярен.
Докажите, что следующие языки не являются регулярными. Вы можете использовать лемму о накачке и замкнутость класса регулярных языков относительно объединения, пересечения и дополнения.
Пусть и . Докажите, что не является регулярным.
Пусть и . Так, , поскольку 101 содержит одно вхождение 01 и одно вхождение 10, а , поскольку 1010 содержит два вхождения 10 и одно вхождение 01. Покажите, что — регулярный язык.
Пусть . Покажите, что — регулярный язык.
Пусть . Покажите, что не является регулярным языком.
ᴬ Изучите неформальное определение автомата-преобразователя (FST), данное в упражнении 1.24. Докажите, что ни один FST не может выдавать для каждой входной строки , если входной и выходной алфавиты равны .
Упражнение 1.24: Автомат-преобразователь с конечным числом состояний (FST) — это тип детерминированного конечного автомата, выход которого является строкой, а не просто допуском или отклонением. Каждый переход FST помечен двумя символами: один обозначает входной символ для этого перехода, а другой — выходной символ, причём эти два символа записываются через слэш, /, разделяющий их. Некоторые переходы могут иметь несколько пар вход-выход. Когда FST вычисляет на входной строке , он берёт входные символы по одному и, начиная с начального состояния, следует переходам, сопоставляя входные метки с последовательностью символов . Каждый раз, проходя по переходу, он выводит соответствующий выходной символ.
Пусть и — строки, а — произвольный язык. Будем говорить, что и различимы языком , если существует строка , такая что ровно одна из строк и принадлежит ; в противном случае, то есть если для каждой строки выполнено , как только , будем говорить, что и неразличимы языком . Если и неразличимы языком , будем писать . Покажите, что является отношением эквивалентности.
ᴬ Теорема Майхилла-Нероуда. Обратитесь к задаче 1.51. Пусть — язык, а — множество строк. Будем говорить, что попарно различимо языком , если каждые две различные строки из различимы языком . Назовём индексом языка максимальное число элементов в множестве, попарно различимом языком . Индекс языка может быть конечным или бесконечным.
Покажите, что если распознаётся ДКА с состояниями, то индекс не превышает .
Покажите, что если индекс равен конечному числу , то распознаётся ДКА с состояниями.
Сделайте вывод, что регулярен тогда и только тогда, когда его индекс конечен. Более того, его индекс равен числу состояний наименьшего ДКА, распознающего его.
Пусть и
Покажите, что не является регулярным.
Рассмотрим язык .
Покажите, что не является регулярным.
Покажите, что ведёт себя как регулярный язык в лемме о накачке. Иными словами, укажите длину накачки и покажите, что удовлетворяет трём условиям леммы о накачке для этого значения .
Объясните, почему пункты (a) и (b) не противоречат лемме о накачке.
Лемма о накачке утверждает, что у каждого регулярного языка есть длина накачки , такая что любую строку языка длины не менее можно накачать. Если — длина накачки для языка , то и любая длина также является длиной накачки. Минимальной длиной накачки для называется наименьшее , являющееся длиной накачки для . Например, если , минимальная длина накачки равна 2. Причина в том, что строка принадлежит и имеет длину 1, но её нельзя накачать; однако любая строка из длины 2 или более содержит 1 и потому может быть накачана, если разбить её так, что , а — остаток. Для каждого из следующих языков укажите минимальную длину накачки и обоснуйте свой ответ.
ᴬ 0001*
ᴬ
ᴬ
(01)*
1011
- Если — множество натуральных чисел, а — натуральное число, большее 1, положим
Здесь мы не допускаем ведущих нулей в представлении числа. Например, и . Приведите пример множества , для которого регулярен, а не регулярен. Докажите, что ваш пример работает.
- Если — произвольный язык, пусть — множество всех первых половин строк из , то есть
Покажите, что если регулярен, то и регулярен.
- Если — произвольный язык, пусть — множество всех строк из с удалённой средней третью, то есть
Покажите, что если регулярен, то не обязательно регулярен.
- Пусть — ДКА, а — некоторое состояние , называемое его «домом». Синхронизирующей последовательностью для и называется строка , для которой при каждом . (Здесь мы расширили на строки, так что равно состоянию, в котором окажется , если начать в состоянии и прочитать вход .) Будем говорить, что синхронизируем, если для него существует синхронизирующая последовательность для некоторого состояния . Докажите, что если — синхронизируемый ДКА с состояниями, то у него есть синхронизирующая последовательность длины не более . Можете ли вы улучшить эту оценку?
Пусть . Для каждого пусть — язык, состоящий из всех строк, содержащих a ровно на -м месте от правого конца. Таким образом, . Опишите НКА с состояниями, распознающий , как в виде диаграммы состояний, так и в виде формального описания.
Рассмотрим языки , определённые в задаче 1.60. Докажите, что при каждом ни один ДКА не может распознавать , имея менее состояний.
Задача 1.60: Пусть . Для каждого пусть — язык, состоящий из всех строк, содержащих символ a ровно на -м месте от правого конца. Таким образом, .
Пусть . Для каждого пусть — язык, состоящий из всех строк, содержащих хотя бы одну a среди последних символов. Таким образом, . Опишите ДКА не более чем с состояниями, распознающий , как в виде диаграммы состояний, так и в виде формального описания.
Пусть — бесконечный регулярный язык. Докажите, что можно разбить на два бесконечных непересекающихся регулярных подмножества.
Пусть и — два языка. Будем писать , если и содержит бесконечно много строк, не принадлежащих . Покажите, что если и — два регулярных языка, для которых , то можно найти регулярный язык , для которого .
Пусть — НКА с состояниями, распознающий некоторый язык .
Покажите, что если непуст, то содержит некоторую строку длины не более .
Приведя пример, покажите, что пункт (a), вообще говоря, неверен, если заменить оба вхождения на .
Покажите, что если непусто, то содержит некоторую строку длины не более .
Покажите, что оценка из пункта (c) почти точна; то есть для каждого предъявите НКА, распознающий язык , для которого непусто, а кратчайшие строки в имеют длину, экспоненциальную по . Постарайтесь подойти к оценке из пункта (c) как можно ближе.
- Докажите, что для каждого существует язык , для которого
распознаётся НКА с состояниями, и
если для регулярных языков , то хотя бы для одного из требуется ДКА с экспоненциально большим числом состояний.
Гомоморфизмом называется функция , отображающая один алфавит в строки над другим алфавитом. Мы можем распространить на строки, определив , где и каждое . Далее мы распространим на языки, определив для произвольного языка .
Приведя формальное построение, покажите, что класс регулярных языков замкнут относительно гомоморфизма. Иными словами, по ДКА , распознающему , и гомоморфизму постройте конечный автомат , распознающий . Рассмотрим построенную вами машину . Является ли она ДКА в любом случае?
Приведя пример, покажите, что класс нерегулярных языков не замкнут относительно гомоморфизма.
- Назовём вращательным замыканием языка множество .
Покажите, что для любого языка выполнено .
Покажите, что класс регулярных языков замкнут относительно операции вращательного замыкания.
- В традиционном способе снятия колоды игральных карт колода произвольно делится на две части, которые меняются местами перед тем, как колода складывается заново. В более сложном варианте снятия, называемом снятием Скарна, колода делится на три части, и при сборке средняя часть кладётся первой. Возьмём снятие Скарна за основу для операции над языками. Для языка положим .
Предъявите язык , для которого .
Покажите, что класс регулярных языков замкнут относительно операции CUT.
Пусть . Пусть .
Покажите, что при каждом ни один ДКА не может распознавать , имея менее состояний.
Опишите значительно меньший НКА для — дополнения .
Определим операцию avoids («избегает») для языков и как avoids . Докажите, что класс регулярных языков замкнут относительно операции avoids.
Пусть .
Пусть . Покажите, что регулярен.
Пусть . Покажите, что не является регулярным.
Пусть и — ДКА, имеющие и состояний соответственно, и пусть .
Покажите, что если , то содержит некоторую строку , для которой .
Покажите, что если , то найдётся строка , не принадлежащая , для которой .
Пусть . Пусть . Покажите, что является КС-языком.