Глава 1

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

[46/52%]
Показать
LaTeX
§
Пример 1.1

Сколько существует строк длины nn над алфавитом A={a1,a2,,ak}A=\left\{ a_{1}, a_{2}, \ldots , a_{k}\right\}, где nn — неотрицательное целое число?

?
Пример 1.2

Для строк xx и yy выполняется (xy)R=yRxR(x y)^{R}=y^{R} x^{R}.

?
Пример 1.3

Решите уравнение в словах

x011=011x x 011=011 x

над алфавитом {0,1}\left\{ 0,1\right\}; то есть найдите множество строк xx над {0,1}\left\{ 0,1\right\}, удовлетворяющих этому уравнению.

?
Пример 1.4
?
(a)

Пусть A={0,1}A=\left\{ 0,1\right\} и B={1,2}B=\left\{ 1,2\right\}. Найдите тогда AB={01,02,11,12}A B=\left\{ 01,02,11,12\right\}.

(b)

Верно ли, что если AA имеет размер n0n \geq 0, а BB имеет размер m0m \geq 0, то ABA B обязательно имеет размер nmn m?

(c)

Пусть A={(01)nn0}A=\left\{ (01)^{n} \mid n \geq 0\right\} и B={01,010}B=\left\{ 01,010\right\}. Найдите ABAB, ABAABA.

Пример 1.5

Язык {0,10}\left\{ 0,10\right\}^{*} — это множество всех двоичных строк, не содержащих подстроки 11 и заканчивающихся на 0.

?
Пример 1.6

Покажите, что для любых языков AA и BB

(AB)=A(BA) (A \cup B)^{*}=A^{*}\left(B A^{*}\right)^{*}
?
Пример 1.7

A+=AA^{+}=A^{*} тогда и только тогда, когда εA\varepsilon \in A.

?
Пример 1.8

Для языков AA и BB выполняется (AB)R=BRAR(A B)^{R}=B^{R} A^{R} и (AB)R=ARBR(A \cup B)^{R}= A^{R} \cup B^{R}.

?
Пример 1.9

(Лемма Ардена). Предположим, что A,BA, B — два языка, причём εA\varepsilon \notin A, и XX — язык, удовлетворяющий соотношению X=AXBX=A X \cup B. Тогда X=ABX=A^{*} B.

?
Пример 1.10

Предположим, что языки A,B{a,b}A, B \subseteq \left\{ a, b\right\}^{*} удовлетворяют следующим двум уравнениям:

A={ε}{a}A{b}B,B={ε}{b}B. \begin{aligned} & A=\left\{ \varepsilon \right\} \cup \left\{ a\right\} A \cup \left\{ b\right\} B, \\ & B=\left\{ \varepsilon \right\} \cup \left\{ b\right\} B. \end{aligned}

Найдите простые представления для AA и BB.

?
Задача 1.1.1

Пусть A={ grand, ε}A=\left\{ \text{ grand, }\varepsilon \right\} и B={ mother, father }B=\left\{ \text{ mother, father }\right\}. Чему равны ABA B и ABA^{*} B?

?
Задача 1.1.2

Пусть AA — язык над {a,b}\left\{ a, b\right\}, и x{a,b}x \in \left\{ a, b\right\}^{*}. Найдите необходимые и достаточные условия на xx и AA, при которых выполняется уравнение

A{x}=A+ A^{*}-\left\{ x\right\} =A^{+}
?
Задача 1.1.3

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

?
(a)

(AR)=(A)R\left(A^{R}\right)^{*}=\left(A^{*}\right)^{R}.

(b)

(A+)=A\left(A^{+}\right)^{*}=A^{*}.

(c)

(AAR)=A(A)R\left(A \cup A^{R}\right)^{*}=A^{*} \cup \left(A^{*}\right)^{R}.

(d)

A2B2=(AB)2A^{2} \cup B^{2}=(A \cup B)^{2}.

(e)

AB=(AB)A^{*} \cap B^{*}=(A \cap B)^{*}.

Задача 1.1.4
?
(a)

Покажите, что при k1k \geq 1 выполняется i=0kAi=({ε}A)k\bigcup_{i=0}^{k} A^{i}=(\left\{ \varepsilon \right\} \cup A)^{k}.

(b)

Покажите, что при n1n \geq 1 выполняется (A)n=A\left(A^{*}\right)^{n}=A^{*}.

(c)

Предположим, что εA\varepsilon \notin A. Покажите, что при n1n \geq 1 выполняется (A+)n=AnA\left(A^{+}\right)^{n}=A^{n} A^{*}.

Задача 1.1.5

Докажите следующие тождества для языков A,B,C,DA, B, C, D :

?
(a)

A(BA)=(AB)AA(B A)^{*}=(A B)^{*} A.

(b)

(AB)=(AB)(A \cup B)^{*}=\left(A^{*} B^{*}\right)^{*}.

(c)

A(BC)=ABACA(B \cup C)=A B \cup A C.

(d)

(AB)C=ACBC(A \cup B) C=A C \cup B C.

(e)

AB(DABC)=(ABCD)BCA^{*} B\left(D A^{*} B \cup C\right)^{*}=\left(A \cup B C^{*} D\right)^{*} B C^{*}.

Задача 1.1.6

Найдите кратчайшую строку над алфавитом {0}\left\{ 0\right\}, которая не принадлежит {ε,0,02,05}3\left\{ \varepsilon , 0,0^{2}, 0^{5}\right\}^{3}

?
Задача 1.1.7

Найдите общее решение уравнения

xy=yx x y=y x

для x,y{0,1}x, y \in \left\{ 0,1\right\}^{*}.

?
Задача 1.1.8

Решите следующую систему языковых уравнений относительно языков A,B,C{a,b}A, B, C \subseteq \left\{ a, b\right\}^{*} :

A={a}C{b}BB={ε}{b}A{a}CC={ε}{a}A \begin{aligned} A & =\left\{ a\right\} C \cup \left\{ b\right\} B \\ B & =\left\{ \varepsilon \right\} \cup \left\{ b\right\} A \cup \left\{ a\right\} C \\ C & =\left\{ \varepsilon \right\} \cup \left\{ a\right\} A \end{aligned}
?
§
Пример 1.11
?
(a)

Является ли множество {ε}\left\{ \varepsilon \right\} регулярным языком?

(b)

Является ли множество {001,110}\left\{ 001,110\right\} регулярным языком над двоичным алфавитом?

Пример 1.12

a(a+b)=(a+ba)a^{*}(a+b)^{*}=\left(a+b a^{*}\right)^{*}.

?
Пример 1.13

(ba)+(ab+a)=(ba)ba+b(ba)^{+}\left(a^{*} b^{*}+a^{*}\right)=(b a)^{*} b a^{+} b^{*}.

?
Пример 1.14

Найдите регулярное выражение для множества двоичных представлений целых чисел, являющихся степенями 4.

?
Пример 1.15

Найдите регулярное выражение для множества двоичных строк, содержащих хотя бы одно вхождение подстроки 001.

?
Пример 1.16

Найдите регулярное выражение для множества AA двоичных строк, не содержащих подстроки 001.

?
Пример 1.17

Найдите регулярное выражение для множества BB всех двоичных строк, содержащих не более одной пары последовательных 0 и не более одной пары последовательных 1.

?
Пример 1.18

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

?
Пример 1.19

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

?
Пример 1.20

Найдите регулярное выражение для множества всех строк над алфавитом

{[000],[100],[010],[001],[110],[101],[011],[111]} \left\{ \left[\begin{smallmatrix} 0 \\ 0 \\ 0 \end{smallmatrix}\right],\left[\begin{smallmatrix} 1 \\ 0 \\ 0 \end{smallmatrix}\right],\left[\begin{smallmatrix} 0 \\ 1 \\ 0 \end{smallmatrix}\right],\left[\begin{smallmatrix} 0 \\ 0 \\ 1 \end{smallmatrix}\right],\left[\begin{smallmatrix} 1 \\ 1 \\ 0 \end{smallmatrix}\right],\left[\begin{smallmatrix} 1 \\ 0 \\ 1 \end{smallmatrix}\right],\left[\begin{smallmatrix} 0 \\ 1 \\ 1 \end{smallmatrix}\right],\left[\begin{smallmatrix} 1 \\ 1 \\ 1 \end{smallmatrix}\right]\right\}

которые представляют корректные операции сложения над двоичными представлениями целых чисел, с добавлением ведущих 0 при необходимости. Например, соотношение

0110+01011011 \begin{array}{r} 0110 \\ +\quad 0101 \\ \hline 1011 \end{array}

означает, что строка

[001][110][101][011] \left[\begin{smallmatrix} 0 \\ 0 \\ 1 \end{smallmatrix}\right]\left[\begin{smallmatrix} 1 \\ 1 \\ 0 \end{smallmatrix}\right]\left[\begin{smallmatrix} 1 \\ 0 \\ 1 \end{smallmatrix}\right]\left[\begin{smallmatrix} 0 \\ 1 \\ 1 \end{smallmatrix}\right]

принадлежит этому множеству.

?
Пример 1.21

Для каждого языка LL над алфавитом Σ\Sigma пусть LL^{\prime } — множество всех суффиксов строк из LL, то есть L={wuwL для некоторой строки u}L^{\prime }=\left\{ w \mid u w \in L\text{ для некоторой строки }u\right\}. Покажите, что если LL — регулярный язык, то и LL^{\prime } тоже регулярен.

?
Пример 1.22

Покажите, что каждый регулярный язык обладает регулярным выражением в дизъюнктивной нормальной форме α1+α2++αn\alpha_{1}+\alpha_{2}+\cdots +\alpha_{n}, в котором каждое αi\alpha_{i}, для i=1,2,,ni=1,2, \cdots , n, не содержит оператора + .

?
Задача 1.2.1

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

?
(a)

(01)0\left(0^{*} 1^{*}\right)^{*} 0.

(b)

(01)0\left(01^{*}\right)^{*} 0.

(c)

(00+11+(01+10)(00+11)(01+10))\left(00+11+(01+10)(00+11)^{*}(01+10)\right)^{*}.

(d)

0+(01+011)(0+1+0+11)00^{*}+\left(0^{*} 1+0^{*} 11\right)\left(0^{+} 1+0^{+} 11\right)^{*} 0^{*}.

Задача 1.2.2

Упростите следующие регулярные выражения:

?
(a)

(00)0+(00)(00)^{*} 0+(00)^{*}.

(b)

(0+1)(ε+00)++(0+1)(0+1)(\varepsilon +00)^{+}+(0+1).

(c)

(0+ε)01(0+\varepsilon ) 0^{*} 1.

Задача 1.2.3

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

?
(a)

Множество всех строк, у которых пятый символ справа равен 0.

(b)

Множество всех строк, содержащих в качестве подстроки либо 000, либо 111.

(c)

Множество всех строк, не содержащих в качестве подстроки ни 000, ни 111.

(d)

Множество всех строк, не содержащих подстроки 010.

(e)

Множество всех строк, содержащих нечётное число 0.

(f)

Множество всех строк, содержащих чётное число вхождений подстроки 011. [Подсказка: сначала найдите регулярное выражение для множества двоичных строк, не содержащих подстроки 011.]

Задача 1.2.4

Покажите, что (02+03)=(020)\left(0^{2}+0^{3}\right)^{*}=\left(0^{2} 0^{*}\right)^{*}.

?
Задача 1.2.5

Постройте регулярное выражение для множества всех строк над алфавитом

{[000],[100],[010],[001],[110],[101],[011],[111]} \left\{ \left[\begin{smallmatrix} 0 \\ 0 \\ 0 \end{smallmatrix}\right],\left[\begin{smallmatrix} 1 \\ 0 \\ 0 \end{smallmatrix}\right],\left[\begin{smallmatrix} 0 \\ 1 \\ 0 \end{smallmatrix}\right],\left[\begin{smallmatrix} 0 \\ 0 \\ 1 \end{smallmatrix}\right],\left[\begin{smallmatrix} 1 \\ 1 \\ 0 \end{smallmatrix}\right],\left[\begin{smallmatrix} 1 \\ 0 \\ 1 \end{smallmatrix}\right],\left[\begin{smallmatrix} 0 \\ 1 \\ 1 \end{smallmatrix}\right],\left[\begin{smallmatrix} 1 \\ 1 \\ 1 \end{smallmatrix}\right]\right\}

которые представляют корректные операции вычитания. Например,

101110010010110 \begin{array}{rrrr} 1011 & 10 \\ - & 01001 \\ \hline 0110 \end{array}

означает, что строка

[100][011][101][110] \left[\begin{smallmatrix} 1 \\ 0 \\ 0 \end{smallmatrix}\right]\left[\begin{smallmatrix} 0 \\ 1 \\ 1 \end{smallmatrix}\right]\left[\begin{smallmatrix} 1 \\ 0 \\ 1 \end{smallmatrix}\right]\left[\begin{smallmatrix} 1 \\ 1 \\ 0 \end{smallmatrix}\right]

принадлежит этому множеству.

?
Задача 1.2.6

Покажите, что для любого регулярного языка L,Lodd={xLx=нечётно}L, L_{\text{odd}}=\left\{ x \in L \mid \left|x\right|=\text{нечётно}\right\} и Leven={xLx=чётно}L_{\text{even}}=\left\{ x \in L \mid \left|x\right|=\text{чётно}\right\} являются регулярными.

?
Задача 1.2.7

Покажите, что если LL — регулярный язык, то L={uv,uvL}L^{\prime \prime }=\left\{ u \mid \exists v, u v \in L\right\} также регулярен.

?
Задача 1.2.8

Пусть h:ΣΓh: \Sigma^{*} \rightarrow \Gamma^{*} — отображение, удовлетворяющее условию h(xy)=h(x)h(y)h(x y)=h(x) h(y) для любых x,yΣx, y \in \Sigma^{*}. Покажите, что если AA — регулярное множество над Σ\Sigma, то h(A)={h(x)xA}h(A)=\left\{ h(x) \mid x \in A\right\} является регулярным множеством над Γ\Gamma. Обратно, если BB — регулярное множество над Γ\Gamma, то h1(B)={xΣh(x)B}h^{-1}(B)=\left\{ x \in \Sigma^{*} \mid h(x) \in B\right\} является регулярным множеством над Σ\Sigma.

?
§
Пример 1.24

Постройте G(r)G(r) для r=(11+0)(00+1)r=(11+0)^{*}(00+1)^{*}.

?
Пример 1.26

Постройте G(r)G(r) для r=ab(c+dab)r=a^{*} b\left(c+d a^{*} b\right)^{*}.

?
Задача 1.3.1

Какова кратчайшая строка в каждом из следующих языков? Какова кратчайшая непустая строка в каждом языке?

?
(a)

10+(0+11)0110+(0+11) 0^{*} 1.

(b)

(00+11+(01+10)(00+11)(01+10))\left(00+11+(01+10)(00+11)^{*}(01+10)\right)^{*}.

(c)

((00+11)+(001+110))\left((00+11)^{*}+(001+110)^{*}\right)^{*}.

Задача 1.3.2
?
(a)

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

(b)

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

Задача 1.3.3

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

?
(a)

(00+10)(101)+01(00+10)(101)^{*}+01.

(b)

((00+11)+(001+110))\left((00+11)^{*}+(001+110)^{*}\right)^{*}.

(c)

(a+bcd)bc\left(a+b c^{*} d\right)^{*} b c^{*}.

Задача 1.3.4

Определите регулярные выражения, представляемые орграфами на рисунке 1.7.

Рисунок 1.7: Три орграфа к упражнению 4.Рисунок 1.7: Три орграфа к упражнению 4.

?
Задача 1.3.5

Найдите простейший орграф, представляющий ε\varepsilon.

?
Задача 1.3.6

Найдите контрпримеры, показывающие, что теорема 1.25 неверна, если убрать требования о том, что uu должна быть нефинальной вершиной, а vv — неначальной вершиной.

Теорема 1.25: Пусть rr — регулярное выражение. Тогда ε\varepsilon-ребро (u,v)(u, v) в G(r)G(r), являющееся единственным исходящим ребром из нефинальной вершины uu или единственным входящим ребром в неначальную вершину vv, можно стянуть в одну вершину, сохранив при этом свойство теоремы 1.23. (Если один из концов ε\varepsilon-ребра является начальной или конечной вершиной, то таковой является и получившаяся вершина.)

?