Глава 1

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

[73/19%]
Показать
LaTeX
§
Задача 1.1

Ниже приведены диаграммы состояний двух ДКА, M1M_{1} и M2M_{2}. Ответьте на следующие вопросы для каждой из этих машин.

?
(a)

Что является начальным состоянием?

(b)

Что является множеством допускающих состояний?

(c)

Через какую последовательность состояний проходит машина при входной строке aabb?

(d)

Допускает ли машина строку aabb?

(e)

Допускает ли машина строку ε\varepsilon?

Задача 1.2

Приведите формальное описание машин M1M_{1} и M2M_{2}, изображённых в упражнении 1.1.

?
Задача 1.3

Формальное описание ДКА MM — это ({q1,q2,q3,q4,q5},{u,d},δ,q3,{q3})\left(\left\{ q_{1}, q_{2}, q_{3}, q_{4}, q_{5}\right\} ,\left\{ \mathrm{u}, \mathrm{d}\right\} , \delta , q_{3},\left\{ q_{3}\right\} \right), где δ\delta задаётся следующей таблицей. Приведите диаграмму состояний этой машины.

ud
q1q_{1}q1q_{1}q2q_{2}
q2q_{2}q1q_{1}q3q_{3}
q3q_{3}q2q_{2}q4q_{4}
q4q_{4}q3q_{3}q5q_{5}
q5q_{5}q4q_{4}q5q_{5}
?
Задача 1.4

Каждый из следующих языков является пересечением двух более простых языков. В каждом пункте постройте ДКА для более простых языков, а затем объедините их с помощью конструкции, обсуждаемой в сноске 3 (стр. 46), чтобы получить диаграмму состояний ДКА для заданного языка. Во всех пунктах Σ={a,b}\Sigma =\left\{ \mathrm{a}, \mathrm{b}\right\}.

?
(a)

{w∣w содержит не менее трёх букв a и не менее двух букв b}\left\{ w \mid w\text{ содержит не менее трёх букв a и не менее двух букв b}\right\}

(b)

{w∣w содержит ровно две буквы a и не менее двух букв b}\left\{ w \mid w\text{ содержит ровно две буквы a и не менее двух букв b}\right\}

(c)

{w∣w содержит чётное число букв a и одну или две буквы b}\left\{ w \mid w\text{ содержит чётное число букв a и одну или две буквы b}\right\}

(d)

{w∣w содержит чётное число букв a, и за каждой буквой a следует хотя бы одна буква b}\left\{ w \mid w\text{ содержит чётное число букв a, и за каждой буквой }\mathbf{a}\text{ следует хотя бы одна буква }\mathbf{b}\right\}

(e)

{w∣w начинается с a и содержит не более одной буквы b}\left\{ w \mid w\text{ начинается с }\mathbf{a}\text{ и содержит не более одной буквы }\mathbf{b}\right\}

(f)

{w∣w содержит нечётное число букв a и заканчивается на b}\left\{ w \mid w\text{ содержит нечётное число букв a и заканчивается на b}\right\}

(g)

{w∣w имеет чётную длину и нечётное число букв a}\left\{ w \mid w\text{ имеет чётную длину и нечётное число букв a}\right\}

Задача 1.5

Каждый из следующих языков является дополнением более простого языка. В каждом пункте постройте ДКА для более простого языка, а затем, используя его, приведите диаграмму состояний ДКА для заданного языка. Во всех пунктах Σ={a,b}\Sigma =\left\{ \mathrm{a}, \mathrm{b}\right\}.

?
(a)

{w∣w не содержит подстроку ab}\left\{ w \mid w\text{ не содержит подстроку }\mathbf{a b}\right\}

(b)

{w∣w не содержит подстроку baba}\left\{ w \mid w\text{ не содержит подстроку baba}\right\}

(c)

{w∣w не содержит ни подстроки ab, ни подстроки ba}\left\{ w \mid w\text{ не содержит ни подстроки ab, ни подстроки ba}\right\}

(d)

{w∣w — произвольная строка, не принадлежащая a∗ b∗}\left\{ w \mid w \text{ — произвольная строка, не принадлежащая } \mathrm{a}^{*} \mathrm{~ b}^{*}\right\}

(e)

{w∣w — произвольная строка, не принадлежащая (ab+)∗}\left\{ w \mid w \text{ — произвольная строка, не принадлежащая } \left(\mathrm{ab}^{+}\right)^{*}\right\}

(f)

{w∣w — произвольная строка, не принадлежащая a∗∪ b∗}\left\{ w \mid w \text{ — произвольная строка, не принадлежащая } \mathrm{a}^{*} \cup \mathrm{~ b}^{*}\right\}

(g)

{w∣w — произвольная строка, которая не содержит ровно две буквы a}\left\{ w \mid w\text{ — произвольная строка, которая не содержит ровно две буквы a}\right\}

(h)

{w∣w — произвольная строка, кроме a и b}\left\{ w \mid w\text{ — произвольная строка, кроме a и b}\right\}

Задача 1.6

Приведите диаграммы состояний ДКА, распознающих следующие языки. Во всех пунктах алфавит равен {0,1}\left\{ 0,1\right\}.

?
(a)

{w∣w начинается с 1 и заканчивается на 0}\left\{ w \mid w\text{ начинается с 1 и заканчивается на 0}\right\}

(b)

{w∣w содержит не менее трёх единиц}\left\{ w \mid w\text{ содержит не менее трёх единиц}\right\}

(c)

{w∣w содержит подстроку 0101 (т.  е. w=x0101y для некоторых x и y)}\left\{ w \mid w\text{ содержит подстроку 0101 (т.\, е. }w=x 0101 y\text{ для некоторых }x\text{ и }y\text{)}\right\}

(d)

{w∣w имеет длину не менее 3, и её третий символ равен 0}\left\{ w \mid w\text{ имеет длину не менее 3, и её третий символ равен 0}\right\}

(e)

{w∣w начинается с 0 и имеет нечётную длину, либо начинается с 1 и имеет чётную длину}\left\{ w \mid w\text{ начинается с 0 и имеет нечётную длину, либо начинается с 1 и имеет чётную длину}\right\}

(f)

{w∣w не содержит подстроку 110}\left\{ w \mid w\text{ не содержит подстроку 110}\right\}

(g)

{w∣ длина w не превышает 5}\left\{ w \mid \text{ длина }w\text{ не превышает 5}\right\}

(h)

{w∣w — произвольная строка, кроме 11 и 111}\left\{ w \mid w\text{ — произвольная строка, кроме 11 и 111}\right\}

(i)

{w∣ каждая нечётная позиция w равна 1}\left\{ w \mid \text{ каждая нечётная позиция }w\text{ равна 1}\right\}

(j)

{w∣w содержит не менее двух нулей и не более одной единицы}\left\{ w \mid w\text{ содержит не менее двух нулей и не более одной единицы}\right\}

(k)

{ε,0}\left\{ \varepsilon , 0\right\}

(l)

{w∣w содержит чётное число нулей, либо содержит ровно две единицы}\left\{ w \mid w\text{ содержит чётное число нулей, либо содержит ровно две единицы}\right\}

(m)

Пустое множество

(n)

Все строки, кроме пустой строки

Задача 1.7

Приведите диаграммы состояний НКА с указанным числом состояний, распознающих каждый из следующих языков. Во всех пунктах алфавит равен {0,1}\left\{ 0,1\right\}.

?
(a)

Язык {w∣w заканчивается на 00}\left\{ w \mid w\text{ заканчивается на 00}\right\} с тремя состояниями

(b)

Язык из упражнения 1.6c с пятью состояниями

(c)

Язык из упражнения 1.61 с шестью состояниями

(d)

Язык {0}\left\{ 0\right\} с двумя состояниями

(e)

Язык 0∗1∗0+0^{*} 1^{*} 0^{+} с тремя состояниями

(f)

Язык 1∗(001+)∗1^{*}\left(001^{+}\right)^{*} с тремя состояниями

(g)

Язык {ε}\left\{ \varepsilon \right\} с одним состоянием

(h)

Язык 0* с одним состоянием

Задача 1.8

Используя конструкцию из доказательства теоремы 1.45, приведите диаграммы состояний НКА, распознающих объединение языков, описанных в

?
(a)

упражнениях 1.6a и 1.6b.

(b)

упражнениях 1.6c и 1.6f.

Задача 1.9

Используя конструкцию из доказательства теоремы 1.47, приведите диаграммы состояний НКА, распознающих конкатенацию языков, описанных в

?
(a)

упражнениях 1.6g и 1.6i.

(b)

упражнениях 1.6b и 1.6m.

Задача 1.10

Используя конструкцию из доказательства теоремы 1.49, приведите диаграммы состояний НКА, распознающих звезду языков, описанных в

?
(a)

упражнении 1.6b.

(b)

упражнении 1.6j.

(c)

упражнении 1.6m.

Задача 1.11

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

?
Задача 1.12

Пусть D={w∣w содержит чётное число букв a, нечётное число букв b и не содержит подстроку ab}D=\left\{ w \mid w\text{ содержит чётное число букв a, нечётное число букв b и не содержит подстроку ab}\right\}. Приведите ДКА с пятью состояниями, распознающий DD, и регулярное выражение, порождающее DD. (Подсказка: опишите DD более простым способом.)

?
Задача 1.13

Пусть FF — язык всех строк над {0,1}\left\{ 0,1\right\}, не содержащих пары единиц, разделённых нечётным числом символов. Приведите диаграмму состояний ДКА с пятью состояниями, распознающего FF. (Возможно, будет полезно сначала найти НКА с 4 состояниями для дополнения FF.)

?
Задача 1.14
?
(a)

Покажите, что если MM — ДКА, распознающий язык BB, то при взаимной замене допускающих и недопускающих состояний в MM получается новый ДКА, распознающий дополнение BB. Сделайте вывод, что класс регулярных языков замкнут относительно операции дополнения.

(b)

Приведя пример, покажите, что если MM — НКА, распознающий язык CC, то при взаимной замене допускающих и недопускающих состояний в MM не обязательно получается новый НКА, распознающий дополнение CC. Замкнут ли класс языков, распознаваемых НКА, относительно операции дополнения? Обоснуйте свой ответ.

Задача 1.15

Приведите контрпример, показывающий, что следующая конструкция не доказывает теорему 1.49 о замкнутости класса регулярных языков относительно операции звезды. [^fn1] Пусть N1=(Q1,Σ,δ1,q1,F1)N_{1}=\left(Q_{1}, \Sigma , \delta_{1}, q_{1}, F_{1}\right) распознаёт A1A_{1}. Построим N=(Q1,Σ,δ,q1,F)N=\left(Q_{1}, \Sigma , \delta , q_{1}, F\right) следующим образом. Предполагается, что NN распознаёт A1∗A_{1}^{*}.

?
(a)

Состояния NN — это состояния N1N_{1}.

(b)

Начальное состояние NN совпадает с начальным состоянием N1N_{1}.

(c)

F={q1}∪F1F=\left\{ q_{1}\right\} \cup F_{1}. Допускающие состояния FF — это старые допускающие состояния плюс начальное состояние.

(d)

Определим δ\delta так, чтобы для любых q∈Q1q \in Q_{1} и a∈Σεa \in \Sigma_{\varepsilon },

δ(q,a)={δ1(q,a)q∉F1 или a≠εδ1(q,a)∪{q1}q∈F1 и a=ε. \delta (q, a)= \begin{cases} \delta _{1}(q, a) & q \notin F_{1} \text{ или } a \neq \varepsilon \\ \delta _{1}(q, a) \cup \left\{ q_{1}\right\} & q \in F_{1} \text{ и } a=\varepsilon .\end{cases}

(Подсказка: изобразите эту конструкцию графически, как на рисунке 1.50.)

Задача 1.16

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

?
(a)

(b)

Задача 1.17
?
(a)

Постройте НКА, распознающий язык (01∪001∪010)∗(01 \cup 001 \cup 010)^{*}.

(b)

Преобразуйте этот НКА в эквивалентный ДКА. Приведите только ту часть ДКА, которая достижима из начального состояния.

Задача 1.18

Приведите регулярные выражения, порождающие следующие языки (ср. упражнение 1.6). Во всех пунктах алфавит равен {0,1}\left\{ 0,1\right\}.

?
(a)

{w∣w начинается с 1 и заканчивается на 0}\left\{ w \mid w\text{ начинается с 1 и заканчивается на 0}\right\}

(b)

{w∣w содержит не менее трёх единиц}\left\{ w \mid w\text{ содержит не менее трёх единиц}\right\}

(c)

{w∣w содержит подстроку 0101 (т.  е. w=x0101y для некоторых x и y)}\left\{ w \mid w\text{ содержит подстроку 0101 (т.\, е. }w=x 0101 y\text{ для некоторых }x\text{ и }y\text{)}\right\}

(d)

{w∣w имеет длину не менее 3, и её третий символ равен 0}\left\{ w \mid w\text{ имеет длину не менее 3, и её третий символ равен 0}\right\}

(e)

{w∣w начинается с 0 и имеет нечётную длину, либо начинается с 1 и имеет чётную длину}\left\{ w \mid w\text{ начинается с 0 и имеет нечётную длину, либо начинается с 1 и имеет чётную длину}\right\}

(f)

{w∣w не содержит подстроку 110}\left\{ w \mid w\text{ не содержит подстроку 110}\right\}

(g)

{w∣ длина w не превышает 5}\left\{ w \mid \text{ длина }w\text{ не превышает 5}\right\}

(h)

{w∣w — произвольная строка, кроме 11 и 111}\left\{ w \mid w\text{ — произвольная строка, кроме 11 и 111}\right\}

(i)

{w∣ каждая нечётная позиция w равна 1}\left\{ w \mid \text{ каждая нечётная позиция }w\text{ равна 1}\right\}

(j)

{w∣w содержит не менее двух нулей и не более одной единицы}\left\{ w \mid w\text{ содержит не менее двух нулей и не более одной единицы}\right\}

(k)

{ε,0}\left\{ \varepsilon , 0\right\}

(l)

{w∣w содержит чётное число нулей, либо содержит ровно две единицы}\left\{ w \mid w\text{ содержит чётное число нулей, либо содержит ровно две единицы}\right\}

(m)

Пустое множество

(n)

Все строки, кроме пустой строки

Задача 1.19
?
(a)

(0∪1)∗000(0∪1)∗(0 \cup 1)^{*} 000(0 \cup 1)^{*}

(b)

(((00)*(11)) ∪01)∗\cup 01)^{*}

(c)

∅∗\emptyset^{*}

Задача 1.20
?
(a)

a∗ b∗\mathrm{a}^{*} \mathrm{~ b}^{*}

(b)

a(ba)*b

(c)

a∗∪ b∗\mathrm{a}^{*} \cup \mathrm{~ b}^{*}

(d)

(aaa)∗(\mathrm{aaa})^{*}

(e)

Σ∗aΣ∗ bΣ∗aΣ∗\Sigma^{*} \mathrm{a} \Sigma^{*} \mathrm{~ b} \Sigma^{*} \mathrm{a} \Sigma^{*}

(f)

aba∪baba b a \cup b a b

(g)

(ε∪a)b(\varepsilon \cup a) b

(h)

(a∪ba∪bb)Σ∗(\mathrm{a} \cup \mathrm{ba} \cup \mathrm{bb}) \Sigma^{*}

Задача 1.21

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

?
(a)

(b)

Задача 1.22

В некоторых языках программирования комментарии располагаются между разделителями вида / и /. Пусть CC — язык всех корректно оформленных строк-комментариев с такими разделителями. Элемент CC должен начинаться с / и заканчиваться на /, но не должен содержать / внутри себя. Для простоты будем считать, что алфавит для CC — это Σ={a,b,/,#}\Sigma =\left\{ \mathrm{a}, \mathrm{b}, /, \# \right\}.

?
(a)

Постройте ДКА, распознающий CC.

(b)

Приведите регулярное выражение, порождающее CC.

Задача 1.23

Пусть BB — произвольный язык над алфавитом Σ\Sigma. Докажите, что B=B+B=B^{+} тогда и только тогда, когда BB⊆BB B \subseteq B.

?
Задача 1.24

Конечный автомат-преобразователь (finite state transducer, FST) — это разновидность детерминированного конечного автомата, выходом которого является строка, а не просто допуск или отказ. Ниже приведены диаграммы состояний автоматов-преобразователей T1T_{1} и T2T_{2}.

Каждый переход FST помечен двумя символами: один задаёт входной символ для этого перехода, а другой — выходной символ. Эти два символа записываются через косую черту, /, разделяющую их. В T1T_{1} переход из q1q_{1} в q2q_{2} имеет входной символ 2 и выходной символ 1. У некоторых переходов может быть несколько пар вход-выход, как, например, у перехода из T1T_{1} из q1q_{1} в себя. Когда FST работает на входной строке ww, он считывает входные символы w1⋯wnw_{1} \cdots w_{n} один за другим и, начиная с начального состояния, следует по переходам, сопоставляя входные метки с последовательностью символов w1⋯wn=ww_{1} \cdots w_{n}=w. Каждый раз, проходя по переходу, автомат выдаёт соответствующий выходной символ. Например, на входе 2212011 машина T1T_{1} проходит последовательность состояний q1,q2,q2,q2,q2,q1,q1,q1q_{1}, q_{2}, q_{2}, q_{2}, q_{2}, q_{1}, q_{1}, q_{1} и выдаёт на выходе 1111000. На входе abbb автомат T2T_{2} выдаёт на выходе 1011. Укажите последовательность состояний и результат работы для каждого из следующих пунктов.

?
(a)

T1T_{1} на входе 011

(b)

T1T_{1} на входе 211

(c)

T1T_{1} на входе 121

(d)

T1T_{1} на входе 0202

(e)

T2T_{2} на входе b

(f)

T2T_{2} на входе bbab

(g)

T2T_{2} на входе bbbbbb

(h)

T2T_{2} на входе ε\varepsilon

Задача 1.25

Изучите неформальное определение автомата-преобразователя (FST), данное в упражнении 1.24. Дайте формальное определение этой модели по образцу определения 1.5 (стр. 35). Считайте, что у FST есть входной алфавит Σ\Sigma и выходной алфавит Γ\Gamma, но нет множества допускающих состояний. Включите в определение формальное описание вычисления FST. (Подсказка: FST — это пятёрка. Его функция переходов имеет вид δ:Q×Σ⟶Q×Γ\delta : Q \times \Sigma \longrightarrow Q \times \Gamma.)

Упражнение 1.24: Автомат-преобразователь с конечным числом состояний (FST) — это тип детерминированного конечного автомата, выход которого является строкой, а не просто допуском или отклонением. Каждый переход FST помечен двумя символами: один обозначает входной символ для этого перехода, а другой — выходной символ, причём эти два символа записываются через слэш, /, разделяющий их. Некоторые переходы могут иметь несколько пар вход-выход. Когда FST вычисляет на входной строке ww, он берёт входные символы w1⋯wnw_{1} \cdots w_{n} по одному и, начиная с начального состояния, следует переходам, сопоставляя входные метки с последовательностью символов w1⋯wn=ww_{1} \cdots w_{n}=w. Каждый раз, проходя по переходу, он выводит соответствующий выходной символ.

?
Задача 1.26

Используя решение, полученное в упражнении 1.25, приведите формальное описание машин T1T_{1} и T2T_{2}, изображённых в упражнении 1.24.

?
(a)

T1T_{1}

(b)

T2T_{2}

Задача 1.27

Изучите неформальное определение автомата-преобразователя (FST), данное в упражнении 1.24. Приведите диаграмму состояний FST со следующим поведением. Его входной и выходной алфавиты — {0,1}\left\{ 0,1\right\}. Его выходная строка совпадает с входной строкой на чётных позициях, но инвертирована на нечётных позициях. Например, на входе 0000111 он должен выдавать 1010010.

Упражнение 1.24: Автомат-преобразователь с конечным числом состояний (FST) — это тип детерминированного конечного автомата, выход которого является строкой, а не просто допуском или отклонением. Каждый переход FST помечен двумя символами: один обозначает входной символ для этого перехода, а другой — выходной символ, причём эти два символа записываются через слэш, /, разделяющий их. Некоторые переходы могут иметь несколько пар вход-выход. Когда FST вычисляет на входной строке ww, он берёт входные символы w1⋯wnw_{1} \cdots w_{n} по одному и, начиная с начального состояния, следует переходам, сопоставляя входные метки с последовательностью символов w1⋯wn=ww_{1} \cdots w_{n}=w. Каждый раз, проходя по переходу, он выводит соответствующий выходной символ.

?
Задача 1.28

Преобразуйте следующие регулярные выражения в НКА, используя процедуру из теоремы 1.54. Во всех пунктах Σ={a,b}\Sigma =\left\{ \mathrm{a}, \mathrm{b}\right\}.

?
(a)

a(abb)∗∪ b\mathrm{a}(\mathrm{abb})^{*} \cup \mathrm{~ b}

(b)

a+∪(ab)+\mathrm{a}^{+} \cup (\mathrm{ab})^{+}

(c)

(a∪b+)a+b+\left(a \cup b^{+}\right) a^{+} b^{+}

Задача 1.29

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

?
(a)

A1={0n1n2n∣n≥0}A_{1}=\left\{ 0^{n} 1^{n} 2^{n} \mid n \geq 0\right\}

(b)

A2={www∣w∈{a,b}∗}A_{2}=\left\{ w w w \mid w \in \left\{ \mathrm{a}, \mathrm{b}\right\}^{*}\right\}

(c)

A3={a2n∣n≥0}A_{3}=\left\{ \mathrm{a}^{2^{n}} \mid n \geq 0\right\} (Здесь a2n\mathrm{a}^{2^{n}} означает строку из 2n2^{n} букв a.)

Задача 1.30

Опишите ошибку в следующем «доказательстве» того, что 0∗1∗0^{*} 1^{*} не является регулярным языком. (Ошибка обязательно есть, поскольку 0∗1∗0^{*} 1^{*} регулярен.) Доказательство ведётся от противного. Предположим, что 0∗1∗0^{*} 1^{*} регулярен. Пусть pp — длина накачки для 0∗1∗0^{*} 1^{*}, задаваемая леммой о накачке. Возьмём в качестве ss строку 0p1p0^{p} 1^{p}. Мы знаем, что ss принадлежит 0∗1∗0^{*} 1^{*}, но пример 1.73 показывает, что ss нельзя накачать. Таким образом, мы приходим к противоречию. Значит, 0∗1∗0^{*} 1^{*} не регулярен.

?
§
Задача 1.31

Для произвольной строки w=w1w2⋯wnw=w_{1} w_{2} \cdots w_{n} обращением ww, обозначаемым wRw^{\mathcal{R}}, называется строка ww, записанная в обратном порядке, wn⋯w2w1w_{n} \cdots w_{2} w_{1}. Для произвольного языка AA положим AR={wR∣w∈A}A^{\mathcal{R}}=\left\{ w^{\mathcal{R}} \mid w \in A\right\}. Покажите, что если AA регулярен, то и ARA^{\mathcal{R}} регулярен.

?
Задача 1.32

Пусть

Σ3={[000],[001],[010],…,[111]}. \Sigma _{3}=\left\{ \left[\begin{array}{l} 0 \\ 0 \\ 0 \end{array}\right],\left[\begin{array}{l} 0 \\ 0 \\ 1 \end{array}\right],\left[\begin{array}{l} 0 \\ 1 \\ 0 \end{array}\right], \ldots ,\left[\begin{array}{l} 1 \\ 1 \\ 1 \end{array}\right]\right\} .

Σ3\Sigma_{3} содержит все столбцы высотой 3, состоящие из нулей и единиц. Строка символов из Σ3\Sigma_{3} задаёт три строки нулей и единиц. Будем считать каждую строку двоичным числом и положим

B={w∈Σ3∗∣ нижняя строка w является суммой двух верхних строк}. B=\left\{ w \in \Sigma _{3}^{*} \mid \text{ нижняя строка } w \text{ является суммой двух верхних строк}\right\} .

Например,

[001][100][110]∈B, но [001][101]∉B. \left[\begin{array}{l} 0 \\ 0 \\ 1 \end{array}\right]\left[\begin{array}{l} 1 \\ 0 \\ 0 \end{array}\right]\left[\begin{array}{l} 1 \\ 1 \\ 0 \end{array}\right] \in B, \quad \text{ но } \quad \left[\begin{array}{l} 0 \\ 0 \\ 1 \end{array}\right]\left[\begin{array}{l} 1 \\ 0 \\ 1 \end{array}\right] \notin B.

Покажите, что BB регулярен. (Подсказка: работать с BRB^{\mathcal{R}} проще. Вы можете использовать результат, утверждаемый в задаче 1.31.)

?
Задача 1.33

Пусть

Σ2={[00],[01],[10],[11]}. \Sigma _{2}=\left\{ \left[\begin{array}{l} 0 \\ 0 \end{array}\right],\left[\begin{array}{l} 0 \\ 1 \end{array}\right],\left[\begin{array}{l} 1 \\ 0 \end{array}\right],\left[\begin{array}{l} 1 \\ 1 \end{array}\right]\right\} .

Здесь Σ2\Sigma_{2} содержит все столбцы высотой два, состоящие из нулей и единиц. Строка символов из Σ2\Sigma_{2} задаёт две строки нулей и единиц. Будем считать каждую строку двоичным числом и положим

C={w∈Σ2∗∣ нижняя строка w втрое больше верхней строки}. C=\left\{ w \in \Sigma _{2}^{*} \mid \text{ нижняя строка } w \text{ втрое больше верхней строки}\right\} .

Например, [00][01][11][00]∈C\left[\begin{array}{l}0 \\ 0\end{array}\right]\left[\begin{array}{l}0 \\ 1\end{array}\right]\left[\begin{array}{l}1 \\ 1\end{array}\right]\left[\begin{array}{l}0 \\ 0\end{array}\right] \in C, а [01][01][10]∉C\left[\begin{array}{l}0 \\ 1\end{array}\right]\left[\begin{array}{l}0 \\ 1\end{array}\right]\left[\begin{array}{l}1 \\ 0\end{array}\right] \notin C. Покажите, что CC регулярен. (Вы можете использовать результат, утверждаемый в задаче 1.31.)

?
Задача 1.34

Пусть Σ2\Sigma_{2} — то же, что и в задаче 1.33. Будем считать каждую строку двоичным числом и положим

D={w∈Σ2∗∣ верхняя строка w задаёт число, большее, чем нижняя строка}. D=\left\{ w \in \Sigma _{2}^{*} \mid \text{ верхняя строка } w \text{ задаёт число, большее, чем нижняя строка}\right\} .

Например, [00][10][11][00]∈D\left[\begin{array}{l}0 \\ 0\end{array}\right]\left[\begin{array}{l}1 \\ 0\end{array}\right]\left[\begin{array}{l}1 \\ 1\end{array}\right]\left[\begin{array}{l}0 \\ 0\end{array}\right] \in D, а [00][01][11][00]∉D\left[\begin{array}{l}0 \\ 0\end{array}\right]\left[\begin{array}{l}0 \\ 1\end{array}\right]\left[\begin{array}{l}1 \\ 1\end{array}\right]\left[\begin{array}{l}0 \\ 0\end{array}\right] \notin D. Покажите, что DD регулярен.

?
Задача 1.35

Пусть Σ2\Sigma_{2} — то же, что и в задаче 1.33. Будем считать верхнюю и нижнюю строки строками из нулей и единиц, и положим

E={w∈Σ2∗∣ нижняя строка w является обращением верхней строки w}. E=\left\{ w \in \Sigma _{2}^{*} \mid \text{ нижняя строка } w \text{ является обращением верхней строки } w\right\} .

Задача 1.33: Σ2\Sigma_{2} содержит все столбцы из нулей и единиц высоты два,

Σ2={[00],[01],[10],[11]}. \Sigma _{2}=\left\{ \left[\begin{array}{l} 0 \\ 0 \end{array}\right],\left[\begin{array}{l} 0 \\ 1 \end{array}\right],\left[\begin{array}{l} 1 \\ 0 \end{array}\right],\left[\begin{array}{l} 1 \\ 1 \end{array}\right]\right\} .

Строка символов из Σ2\Sigma_{2} задаёт две строки из нулей и единиц. Покажите, что EE не является регулярным.

?
Задача 1.36

Пусть Bn={ak∣k кратно n}B_{n}=\left\{ \mathrm{a}^{k} \mid k \text{ кратно } n\right\}. Покажите, что для каждого n≥1n \geq 1 язык BnB_{n} регулярен.

?
Задача 1.37

Пусть Cn={x∣x — двоичное число, кратное n}C_{n}=\left\{ x \mid x\text{ — двоичное число, кратное }n\right\}. Покажите, что для каждого n≥1n \geq 1 язык CnC_{n} регулярен.

?
Задача 1.38

all-NFA MM — это пятёрка (Q,Σ,δ,q0,F)\left(Q, \Sigma , \delta , q_{0}, F\right), которая допускает x∈Σ∗x \in \Sigma^{*}, если каждое возможное состояние, в котором может оказаться MM после чтения входной строки xx, является состоянием из FF. Заметим, что, в отличие от него, обычный НКА допускает строку, если хотя бы одно из этих возможных состояний является допускающим. Докажите, что all-NFA распознают класс регулярных языков.

?
Задача 1.39

Конструкция из теоремы 1.54 показывает, что каждый ОНКА (обобщённый НКА, GNFA) эквивалентен ОНКА всего с двумя состояниями. Мы можем показать, что для ДКА имеет место противоположное явление. Докажите, что для каждого k>1k>1 существует язык Ak⊆{0,1}∗A_{k} \subseteq \left\{ 0,1\right\}^{*}, который распознаётся ДКА с kk состояниями, но не распознаётся ни одним ДКА с k−1k-1 состояниями.

?
Задача 1.40

Напомним, что строка xx является префиксом строки yy, если существует строка zz такая, что xz=yx z=y, и что xx является собственным префиксом yy, если, кроме того, x≠yx \neq y. В каждом из следующих пунктов определяется операция над языком AA. Покажите, что класс регулярных языков замкнут относительно этой операции.

?
(a)

NOPREFIX⁡(A)={w∈A∣ ни один собственный префикс w не принадлежит A}\operatorname {NOPREFIX}(A)=\left\{ w \in A \mid \text{ ни один собственный префикс }w\text{ не принадлежит }A\right\}.

(b)

NOEXTEND⁡(A)={w∈A∣w не является собственным префиксом никакой строки из A}\operatorname {NOEXTEND}(A)=\left\{ w \in A \mid w\text{ не является собственным префиксом никакой строки из }A\right\}.

Задача 1.41

Для языков AA и BB назовём идеальным перемешиванием (perfect shuffle) AA и BB язык

{w∣w=a1b1⋯akbk, где a1⋯ak∈A и b1⋯bk∈B, каждое ai,bi∈Σ}. \left\{ w \mid w=a_{1} b_{1} \cdots a_{k} b_{k}, \text{ где } a_{1} \cdots a_{k} \in A \text{ и } b_{1} \cdots b_{k} \in B, \text{ каждое } a_{i}, b_{i} \in \Sigma \right\} .

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

?
Задача 1.42

Для языков AA и BB назовём перемешиванием (shuffle) AA и BB язык

{w∣w=a1b1⋯akbk, где a1⋯ak∈A и b1⋯bk∈B, каждое ai,bi∈Σ∗}. \left\{ w \mid w=a_{1} b_{1} \cdots a_{k} b_{k}, \text{ где } a_{1} \cdots a_{k} \in A \text{ и } b_{1} \cdots b_{k} \in B, \text{ каждое } a_{i}, b_{i} \in \Sigma ^{*}\right\} .

Покажите, что класс регулярных языков замкнут относительно операции перемешивания.

?
Задача 1.43

Пусть AA — произвольный язык. Определим DROP-OUT⁡(A)\operatorname {DROP-OUT}(A) как язык, содержащий все строки, которые можно получить, удалив один символ из некоторой строки языка AA. Таким образом, DROP-OUT⁡(A)={xz∣xyz∈A где x,z∈Σ∗,y∈Σ}\operatorname {DROP-OUT}(A)=\left\{ x z \mid x y z \in A \text{ где } x, z \in \Sigma^{*}, y \in \Sigma \right\}. Покажите, что класс регулярных языков замкнут относительно операции DROP-OUT. Приведите как доказательство «на картинке», так и более формальное доказательство с помощью построения, как в теореме 1.47.

?
Задача 1.44

Пусть BB и CC — языки над алфавитом Σ={0,1}\Sigma =\left\{ 0,1\right\}. Определим B←1C={w∈B∣ для некоторого y∈C строки w и y содержат поровну единиц}B \stackrel{1}{\leftarrow } C=\left\{ w \in B \mid \text{ для некоторого }y \in C\text{ строки }w\text{ и }y\text{ содержат поровну единиц}\right\}. Покажите, что класс регулярных языков замкнут относительно операции ←1\stackrel{1}{\leftarrow }.

?
Задача 1.45
  • Пусть A/B={w∣wx∈A для некоторого x∈B}A / B=\left\{ w \mid w x \in A\text{ для некоторого }x \in B\right\}. Покажите, что если AA регулярен, а BB — произвольный язык, то A/BA / B регулярен.
?
Задача 1.46

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

?
(a)

{0n1m0n∣m,n≥0}\left\{ 0^{n} 1^{m} 0^{n} \mid m, n \geq 0\right\}

(b)

{0m1n∣m≠n}\left\{ 0^{m} 1^{n} \mid m \neq n\right\}

(c)

{w∣w∈{0,1}∗ не является палиндромом}\left\{ w \mid w \in \left\{ 0,1\right\}^{*} \text{ не является палиндромом}\right\}[^fn1]

(d)
  • {wtw∣w,t∈{0,1}+}\left\{ w t w \mid w, t \in \left\{ 0,1\right\}^{+}\right\}
Задача 1.47

Пусть Σ={1,#}\Sigma =\left\{ 1, \# \right\} и Y={w∣w=x1#x2#⋯#xk при k≥0, каждое xi∈1∗, и xi≠xj при i≠j}Y=\left\{ w \mid w=x_{1} \# x_{2} \# \cdots \# x_{k} \text{ при } k \geq 0, \text{ каждое } x_{i} \in 1^{*}, \text{ и } x_{i} \neq x_{j} \text{ при } i \neq j\right\}. Докажите, что YY не является регулярным.

?
Задача 1.48

Пусть Σ={0,1}\Sigma =\left\{ 0,1\right\} и D={w∣w содержит поровну вхождений подстрок 01 и 10}D=\left\{ w \mid w\text{ содержит поровну вхождений подстрок 01 и 10}\right\}. Так, 101∈D101 \in D, поскольку 101 содержит одно вхождение 01 и одно вхождение 10, а 1010∉D1010 \notin D, поскольку 1010 содержит два вхождения 10 и одно вхождение 01. Покажите, что DD — регулярный язык.

?
Задача 1.49
?
(a)

Пусть B={1ky∣y∈{0,1}∗, и y содержит не менее k единиц, при k≥1}B=\left\{ 1^{k} y \mid y \in \left\{ 0,1\right\}^{*}, \text{ и } y \text{ содержит не менее } k \text{ единиц, при } k \geq 1\right\}. Покажите, что BB — регулярный язык.

(b)

Пусть C={1ky∣y∈{0,1}∗, и y содержит не более k единиц, при k≥1}C=\left\{ 1^{k} y \mid y \in \left\{ 0,1\right\}^{*}, \text{ и } y \text{ содержит не более } k \text{ единиц, при } k \geq 1\right\}. Покажите, что CC не является регулярным языком.

Задача 1.50

Изучите неформальное определение автомата-преобразователя (FST), данное в упражнении 1.24. Докажите, что ни один FST не может выдавать wRw^{\mathcal{R}} для каждой входной строки ww, если входной и выходной алфавиты равны {0,1}\left\{ 0,1\right\}.

Упражнение 1.24: Автомат-преобразователь с конечным числом состояний (FST) — это тип детерминированного конечного автомата, выход которого является строкой, а не просто допуском или отклонением. Каждый переход FST помечен двумя символами: один обозначает входной символ для этого перехода, а другой — выходной символ, причём эти два символа записываются через слэш, /, разделяющий их. Некоторые переходы могут иметь несколько пар вход-выход. Когда FST вычисляет на входной строке ww, он берёт входные символы w1⋯wnw_{1} \cdots w_{n} по одному и, начиная с начального состояния, следует переходам, сопоставляя входные метки с последовательностью символов w1⋯wn=ww_{1} \cdots w_{n}=w. Каждый раз, проходя по переходу, он выводит соответствующий выходной символ.

?
Задача 1.51

Пусть xx и yy — строки, а LL — произвольный язык. Будем говорить, что xx и yy различимы языком L\boldsymbol {L}, если существует строка zz, такая что ровно одна из строк xzx z и yzy z принадлежит LL; в противном случае, то есть если для каждой строки zz выполнено xz∈Lx z \in L, как только yz∈Ly z \in L, будем говорить, что xx и yy неразличимы языком L\boldsymbol {L}. Если xx и yy неразличимы языком LL, будем писать x≡Lyx \equiv_{L} y. Покажите, что ≡L\equiv_{L} является отношением эквивалентности.

?
Задача 1.52

Теорема Майхилла-Нероуда. Обратитесь к задаче 1.51. Пусть LL — язык, а XX — множество строк. Будем говорить, что XX попарно различимо языком L\boldsymbol {L}, если каждые две различные строки из XX различимы языком LL. Назовём индексом языка L\boldsymbol {L} максимальное число элементов в множестве, попарно различимом языком LL. Индекс языка LL может быть конечным или бесконечным.

?
(a)

Покажите, что если LL распознаётся ДКА с kk состояниями, то индекс LL не превышает kk.

(b)

Покажите, что если индекс LL равен конечному числу kk, то LL распознаётся ДКА с kk состояниями.

(c)

Сделайте вывод, что LL регулярен тогда и только тогда, когда его индекс конечен. Более того, его индекс равен числу состояний наименьшего ДКА, распознающего его.

Задача 1.53

Пусть Σ={0,1,+,=}\Sigma =\left\{ 0,1,+,=\right\} и

ADD={x=y+z∣x,y,z — двоичные целые числа, и x является суммой y и z}. A D D=\left\{ x=y+z \mid x, y, z \text{ — двоичные целые числа, и } x \text{ является суммой } y \text{ и } z\right\} .

Покажите, что ADDA D D не является регулярным.

?
Задача 1.54

Рассмотрим язык F={ai bjck∣i,j,k≥0, и если i=1, то j=k}F=\left\{ \mathrm{a}^{i} \mathrm{~ b}^{j} \mathrm{c}^{k} \mid i, j, k \geq 0, \text{ и если } i=1, \text{ то } j=k\right\}.

?
(a)

Покажите, что FF не является регулярным.

(b)

Покажите, что FF ведёт себя как регулярный язык в лемме о накачке. Иными словами, укажите длину накачки pp и покажите, что FF удовлетворяет трём условиям леммы о накачке для этого значения pp.

(c)

Объясните, почему пункты (a) и (b) не противоречат лемме о накачке.

Задача 1.55

Лемма о накачке утверждает, что у каждого регулярного языка есть длина накачки pp, такая что любую строку языка длины не менее pp можно накачать. Если pp — длина накачки для языка AA, то и любая длина p′≥pp^{\prime } \geq p также является длиной накачки. Минимальной длиной накачки для AA называется наименьшее pp, являющееся длиной накачки для AA. Например, если A=01∗A=01^{*}, минимальная длина накачки равна 2. Причина в том, что строка s=0s=0 принадлежит AA и имеет длину 1, но её нельзя накачать; однако любая строка из AA длины 2 или более содержит 1 и потому может быть накачана, если разбить её так, что x=0,y=1x=0, y=1, а zz — остаток. Для каждого из следующих языков укажите минимальную длину накачки и обоснуйте свой ответ.

?
(a)

0001*

(b)

0∗1∗0^{*} 1^{*}

(c)

001∪0∗1∗001 \cup 0^{*} 1^{*}

(d)

0∗1+0+1∗∪10∗10^{*} 1^{+} 0^{+} 1^{*} \cup 10^{*} 1

(e)

(01)*

(f)

ε\varepsilon

(g)

1∗01∗01∗1^{*} 01^{*} 01^{*}

(h)

10(11∗0)∗010\left(11^{*} 0\right)^{*} 0

(i)

1011

(j)

Σ∗\Sigma^{*}

Задача 1.56
  • Если AA — множество натуральных чисел, а kk — натуральное число, большее 1, положим
Bk(A)={w∣w — представление в системе счисления с основанием k некоторого числа из A}. B_{k}(A)=\left\{ w \mid w \text{ — представление в системе счисления с основанием } k \text{ некоторого числа из } A\right\} .

Здесь мы не допускаем ведущих нулей в представлении числа. Например, B2({3,5})={11,101}B_{2}(\left\{ 3,5\right\} )=\left\{ 11,101\right\} и B3({3,5})={10,12}B_{3}(\left\{ 3,5\right\} )=\left\{ 10,12\right\}. Приведите пример множества AA, для которого B2(A)B_{2}(A) регулярен, а B3(A)B_{3}(A) не регулярен. Докажите, что ваш пример работает.

?
Задача 1.57
  • Если AA — произвольный язык, пусть A12−A_{\frac{1}{2}-} — множество всех первых половин строк из AA, то есть
A12−={x∣ для некоторого y,∣x∣=∣y∣ и xy∈A}. A_{\frac{1}{2}-}=\left\{ x \mid \text{ для некоторого } y,\left|x\right|=\left|y\right| \text{ и } x y \in A\right\} .

Покажите, что если AA регулярен, то и A12−A_{\frac{1}{2}-} регулярен.

?
Задача 1.58
  • Если AA — произвольный язык, пусть A13−13A_{\frac{1}{3}-\frac{1}{3}} — множество всех строк из AA с удалённой средней третью, то есть
A13−13={xz∣ для некоторых y,∣x∣=∣y∣=∣z∣ и xyz∈A}. A_{\frac{1}{3}-\frac{1}{3}}=\left\{ x z \mid \text{ для некоторых } y,\left|x\right|=\left|y\right|=\left|z\right| \text{ и } x y z \in A\right\} .

Покажите, что если AA регулярен, то A13−13A_{\frac{1}{3}-\frac{1}{3}} не обязательно регулярен.

?
Задача 1.59
  • Пусть M=(Q,Σ,δ,q0,F)M=\left(Q, \Sigma , \delta , q_{0}, F\right) — ДКА, а hh — некоторое состояние MM, называемое его «домом». Синхронизирующей последовательностью для MM и hh называется строка s∈Σ∗s \in \Sigma^{*}, для которой δ(q,s)=h\delta (q, s)=h при каждом q∈Qq \in Q. (Здесь мы расширили δ\delta на строки, так что δ(q,s)\delta (q, s) равно состоянию, в котором окажется MM, если начать в состоянии qq и прочитать вход ss.) Будем говорить, что MM синхронизируем, если для него существует синхронизирующая последовательность для некоторого состояния hh. Докажите, что если MM — синхронизируемый ДКА с kk состояниями, то у него есть синхронизирующая последовательность длины не более k3k^{3}. Можете ли вы улучшить эту оценку?
?
Задача 1.60

Пусть Σ={a,b}\Sigma =\left\{ \mathrm{a}, \mathrm{b}\right\}. Для каждого k≥1k \geq 1 пусть CkC_{k} — язык, состоящий из всех строк, содержащих a ровно на kk-м месте от правого конца. Таким образом, Ck=Σ∗aΣk−1C_{k}=\Sigma^{*} \mathrm{a} \Sigma^{k-1}. Опишите НКА с k+1k+1 состояниями, распознающий CkC_{k}, как в виде диаграммы состояний, так и в виде формального описания.

?
Задача 1.61

Рассмотрим языки CkC_{k}, определённые в задаче 1.60. Докажите, что при каждом kk ни один ДКА не может распознавать CkC_{k}, имея менее 2k2^{k} состояний.

Задача 1.60: Пусть Σ={a,b}\Sigma =\left\{ \mathrm{a}, \mathrm{b}\right\}. Для каждого k≥1k \geq 1 пусть CkC_{k} — язык, состоящий из всех строк, содержащих символ a ровно на kk-м месте от правого конца. Таким образом, Ck=Σ∗aΣk−1C_{k}=\Sigma^{*} \mathrm{a} \Sigma^{k-1}.

?
Задача 1.62

Пусть Σ={a,b}\Sigma =\left\{ \mathrm{a}, \mathrm{b}\right\}. Для каждого k≥1k \geq 1 пусть DkD_{k} — язык, состоящий из всех строк, содержащих хотя бы одну a среди последних kk символов. Таким образом, Dk=Σ∗a(Σ∪ε)k−1D_{k}=\Sigma^{*} \mathrm{a}(\Sigma \cup \varepsilon )^{k-1}. Опишите ДКА не более чем с k+1k+1 состояниями, распознающий DkD_{k}, как в виде диаграммы состояний, так и в виде формального описания.

?
Задача 1.63
?
(a)

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

(b)

Пусть BB и DD — два языка. Будем писать B⋐DB \Subset D, если B⊆DB \subseteq D и DD содержит бесконечно много строк, не принадлежащих BB. Покажите, что если BB и DD — два регулярных языка, для которых B∈DB \in D, то можно найти регулярный язык CC, для которого B⋐C⋐DB \Subset C \Subset D.

Задача 1.64

Пусть NN — НКА с kk состояниями, распознающий некоторый язык AA.

?
(a)

Покажите, что если AA непуст, то AA содержит некоторую строку длины не более kk.

(b)

Приведя пример, покажите, что пункт (a), вообще говоря, неверен, если заменить оба вхождения AA на Aˉ\bar{A}.

(c)

Покажите, что если Aˉ\bar{A} непусто, то Aˉ\bar{A} содержит некоторую строку длины не более 2k2^{k}.

(d)

Покажите, что оценка из пункта (c) почти точна; то есть для каждого kk предъявите НКА, распознающий язык AkA_{k}, для которого Ak‾\overline{A_{k}} непусто, а кратчайшие строки в Ak‾\overline{A_{k}} имеют длину, экспоненциальную по kk. Постарайтесь подойти к оценке из пункта (c) как можно ближе.

Задача 1.65
  • Докажите, что для каждого n>0n>0 существует язык BnB_{n}, для которого
?
(a)

BnB_{n} распознаётся НКА с nn состояниями, и

(b)

если Bn=A1∪⋯∪AkB_{n}=A_{1} \cup \cdots \cup A_{k} для регулярных языков AiA_{i}, то хотя бы для одного из AiA_{i} требуется ДКА с экспоненциально большим числом состояний.

Задача 1.66

Гомоморфизмом называется функция f:Σ⟶Γ∗f: \Sigma \longrightarrow \Gamma^{*}, отображающая один алфавит в строки над другим алфавитом. Мы можем распространить ff на строки, определив f(w)=f(w1)f(w2)⋯f(wn)f(w)=f\left(w_{1}\right) f\left(w_{2}\right) \cdots f\left(w_{n}\right), где w=w1w2⋯wnw=w_{1} w_{2} \cdots w_{n} и каждое wi∈Σw_{i} \in \Sigma. Далее мы распространим ff на языки, определив f(A)={f(w)∣w∈A}f(A)=\left\{ f(w) \mid w \in A\right\} для произвольного языка AA.

?
(a)

Приведя формальное построение, покажите, что класс регулярных языков замкнут относительно гомоморфизма. Иными словами, по ДКА MM, распознающему BB, и гомоморфизму ff постройте конечный автомат M′M^{\prime }, распознающий f(B)f(B). Рассмотрим построенную вами машину M′M^{\prime }. Является ли она ДКА в любом случае?

(b)

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

Задача 1.67
  • Назовём вращательным замыканием языка AA множество RC(A)={yx∣xy∈A}R C(A)=\left\{ y x \mid x y \in A\right\}.
?
(a)

Покажите, что для любого языка AA выполнено RC(A)=RC(RC(A))R C(A)=R C(R C(A)).

(b)

Покажите, что класс регулярных языков замкнут относительно операции вращательного замыкания.

Задача 1.68
  • В традиционном способе снятия колоды игральных карт колода произвольно делится на две части, которые меняются местами перед тем, как колода складывается заново. В более сложном варианте снятия, называемом снятием Скарна, колода делится на три части, и при сборке средняя часть кладётся первой. Возьмём снятие Скарна за основу для операции над языками. Для языка AA положим CUT(A)={yxz∣xyz∈A}C U T(A)=\left\{ y x z \mid x y z \in A\right\}.
?
(a)

Предъявите язык BB, для которого CUT⁡(B)≠CUT⁡(CUT⁡(B))\operatorname {CUT}(B) \neq \operatorname {CUT}(\operatorname {CUT}(B)).

(b)

Покажите, что класс регулярных языков замкнут относительно операции CUT.

Задача 1.69

Пусть Σ={0,1}\Sigma =\left\{ 0,1\right\}. Пусть WWk={ww∣w∈Σ∗, и w имеет длину k}W W_{k}=\left\{ w w \mid w \in \Sigma^{*}, \text{ и } w \text{ имеет длину } k\right\}.

?
(a)

Покажите, что при каждом kk ни один ДКА не может распознавать WWkW W_{k}, имея менее 2k2^{k} состояний.

(b)

Опишите значительно меньший НКА для WW‾k\overline{W W}_{k} — дополнения WWkW W_{k}.

Задача 1.70

Определим операцию avoids («избегает») для языков AA и BB как AA avoids B={w∣w∈A, и w не содержит в качестве подстроки ни одной строки из B}B=\left\{ w \mid w \in A\text{, и }w\text{ не содержит в качестве подстроки ни одной строки из }B\right\}. Докажите, что класс регулярных языков замкнут относительно операции avoids.

?
Задача 1.71

Пусть Σ={0,1}\Sigma =\left\{ 0,1\right\}.

?
(a)

Пусть A={0ku0k∣k≥1 и u∈Σ∗}A=\left\{ 0^{k} u 0^{k} \mid k \geq 1 \text{ и } u \in \Sigma^{*}\right\}. Покажите, что AA регулярен.

(b)

Пусть B={0k1u0k∣k≥1 и u∈Σ∗}B=\left\{ 0^{k} 1 u 0^{k} \mid k \geq 1 \text{ и } u \in \Sigma^{*}\right\}. Покажите, что BB не является регулярным.

Задача 1.72

Пусть M1M_{1} и M2M_{2} — ДКА, имеющие k1k_{1} и k2k_{2} состояний соответственно, и пусть U=L(M1)∪L(M2)U=L\left(M_{1}\right) \cup L\left(M_{2}\right).

?
(a)

Покажите, что если U≠∅U \neq \emptyset, то UU содержит некоторую строку ss, для которой ∣s∣<max⁡(k1,k2)\left|s\right|<\max \left(k_{1}, k_{2}\right).

(b)

Покажите, что если U≠Σ∗U \neq \Sigma^{*}, то найдётся строка ss, не принадлежащая UU, для которой ∣s∣<k1k2\left|s\right|<k_{1} k_{2}.

Задача 1.73

Пусть Σ={0,1,#}\Sigma =\left\{ 0,1, \# \right\}. Пусть C={x#xR#x∣x∈{0,1}∗}C=\left\{ x \# x^{\mathcal{R}} \# x \mid x \in \left\{ 0,1\right\}^{*}\right\}. Покажите, что Cˉ\bar{C} является КС-языком.

?