Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теория автоматов и формальных языков. Учебник.pdf

§ 2.4. Регулярные выражения 101
a b b
q
0
(а) НКА для выражений ab и b.
(б) НКА для выражения ab + b.
ε ε
q
7
q
1
ε
q
5
ε
q
0
q
2
a b
q
1
b
q
3
q
3
q
2
ε
q
4
q
4
ε
q
6
ε
a b
q
0
ε
q
5
ε
q
1
b
q
3
q
2
ε
q
6
ε
q
4
q
8
ε
(в) НКА для выражения (ab + b)∗.
ε
a b
q
0
ε ε
q
7
ε
q
5
ε
q
1
b
q
3
q
q
4
ε
(г) НКА для выражения (ab + b)∗a.
Рис. 17. НКА из примера 39.
2
ε
q
6
q
8
ε a
q
9
q
10
ε

102 Глава 2. Конечные автоматы и регулярные выражения
образом:
Пусть
w ∈ L
(0)
. Так как
i,j
случаях: либоw— метка ребра, ведущего из
w = ε. Но все такие случаи учтены в r
Наоборот, пусть
есть ребро с меткойw, ведущее из
не содержит промежуточных состояний, поэтому
жеi=j, то либо в диаграмме есть ребро из
0
r
=
i,j
w ∈ L(r
(
0
ˆr
, если i 6= j
i,j
0
ˆr
+ ε, если i = j.
i,j
Q0=∅, то это возможно только в двух
qiв
0
). Если
i,j
0
, поэтому w ∈ L(r
i,j
i 6=j
, то в диаграмме автомата
qiв
qj. Вычисление (
qj, либо
w ∈ L
qiв
qj(этот случай
qi=
0
).
i,j
qi, w)`(qj, ε
(0)
i,j
qjи
. Если
рассматривается как предыдущий), либо такого ребра нет иw=ε.
Вычисление для пустого слова также не содержит промежуточных
(r
k
k,k
(0)
.
i,j
k
r
построены для всех
i,j
k
)∗r
.
k,j
состояний, так что снова получаем w ∈ L
Ш а г и н д у к ц и и . Пусть выражения
и j. Выражения r
Пусть
w ∈ L
k+1
строятся следующим образом:
i,j
k+1
r
i,j
(k+1)
. Тогда существует вычисление автоматаM,
i,j
= r
k
i,j
+ r
k
i,k
в котором все промежуточные состояния принадлежат множеству
Q
=
k+1
чается, то
w ∈ L(r
{q0, . . . , qk}
w ∈ L
k
), а значит,
i,j
числении встречается состояние
. Если состояние
(k)
, поэтому по индукционному предположению
i,j
w ∈ L(r
k+1
i,j
qkв этом вычислении не встре-
). Предположим теперь, что в вы-
qk. Тогда словоwможно разбить на
несколько частей w1w2. . . wmтак, что
)
i
(qi, w1) `∗(qk, ε),
(qk, wl) `∗(qk, ε) для 2 6 l 6 m − 1,
(qk, wm) `∗(qj, ε),
причём все эти вычисления не содержат
qkсреди промежуточных
состояний. Тогда по индукционному предположению
w1∈ L(r
k
), wl∈ L(r
i,k
k
), wm∈ L(r
k,k
k
k,j
).

§ 2.4. Регулярные выражения 103
k
k
Следовательно, w ∈ L(r
Пусть теперь
Если
w ∈ L(r
w ∈ L(r
k
), то по индукционному предположению существует
i,j
вычисление, переводящее
i,k
(r
k+1
i,j
qiв
состояний за исключением, быть может,
не содержит
qk, поэтому
w ∈ L
k
)∗r
k,k
) и w ∈ L(r
k,j
), то есть
qjи не содержащее промежуточных
q0, . . . , q
(k+1)
. Если
i,j
словоwможно представить в виде конкатенацииw=
k+1
i,j
w ∈ L(r
k−1
w ∈ L(r
).
k
k
i,j
+
k
r
(
r
k,k
)∗r
i,k
. Это вычисление
k
k
k,k
)∗r
k
k,j
), то
i,k
(
r
w1w2. . . w
k
k,j
так, что
w1∈ L(r
wl∈ L(r
wm∈ L(r
k
),
i,k
k
) для 2 6 l 6 m − 1,
k,k
k
).
k,j
По индукционному предположению существуют вычисления
(qi, w1) `∗(qk, ε), (qk, wl) `∗(qk, ε), (qk, wm) `∗(qj, ε),
в которых все промежуточные состояния принадлежат множеству
Qk= {q0, . . . , q
(qi, w1w2. . . wm) `∗(qk, w2. . . wm) `∗(qk, w3. . . wm) `
}. Тогда в вычислении
k−1
∗
).
m
`∗··· `∗(qk, w
все состояния принадлежат множеству
снова w ∈ L
Из доказанного следует, что
когда (
(k+1)
i,j
qi, w)`∗(
.
w ∈ L(r
qj, ε
), так как приk=nвсе состояния допустимы в
m−1wm
) `∗(qk, wm) `∗(qj, ε)
Q
=
k+1
{q0, . . . , qk}
n
) тогда и только тогда,
i,j
, поэтому
качестве промежуточных.
Осталось построить регулярное выражениеr, задающее язык
L(M). Положим
r =[{r
n
: qi∈ F },
0,i
то есть в качествеrмы берём сумму выражений, которые задают
все вычисления, заканчивающиеся в каком-нибудь заключительном

104 Глава 2. Конечные автоматы и регулярные выражения
состоянии. Если
для некоторого
w ∈ L(r
), то
w ∈ L(M
qi∈ F
w ∈ L(r
), то существует вычисление (
. Тогда
n
) для некоторого
0,i
w ∈ L(r
n
0,i
) и
qi∈ F
w ∈ L(r
. Тогда (
q0, w)`∗(
qi, ε
). Наоборот, если
q0, w)`∗(
qi, ε
и w ∈ L(M). Следовательно, L(r) = L(M ).
Пр име р 40.
заканчиваются наb. Построим по этому автомату регулярное выражение,
используя конструкцию из теоремы 45. Сначала выпишем регулярные
выражения r
Теперь построим выражения r
1
r
0,0
1
r
0,1
1
r
1,0
1
r
1,1
Итак,
Наконец построим выражения r
2
0,0
2
0,1
2
1,0
2
1,1
= r
= r
= r
= r
1
0,0
1
0,1
1
1,0
1
1,1
r
r
r
r
Выпишем получившиеся выражения:
Так как
чительное состояние, то регулярное выражение
Заметим, что оно не является кратчайшим регулярным выражением эквивалентным автоматуM. Регулярное выражение (a+b)∗b
множество всех слов, заканчивающихся на b.
На рис. 18 изображён ДКАM, распознающий слова, которые
0
0
0
, r
0,0
0
r
0,0
0
= r
0,0
0
= r
0,1
0
= r
1,0
0
= r
1,1
1
r
≡ a∗, r
0,0
+ r
+ r
+ r
+ r
, r
0,1
= ε + a, r
0
+ r
0,0
0
+ r
0,0
0
+ r
1,0
0
+ r
1,0
1
1
(r
0,1
1,1
1
1
(r
0,1
1,1
1
1
(r
1,1
1,1
1
1
(r
1,1
1,1
2
r
≡ a∗+ a∗b(a∗b)∗aa∗, r
0,0
2
r
≡ a∗b(a∗b)∗, r
0,1
q0— начальное состояние автоматаM, а
0
, r
1,0
(r
(r
(r
(r
)∗r
)∗r
)∗r
)∗r
:
1,1
0
= b, r
0,1
1
, r
0,0
0
0
)∗r
0,0
0
0,0
0
0,0
0
0,0
1
0,1
1
1,0
1
1,1
1
1,0
1
1,1
= ε + a + (ε + a)(ε + a)∗(ε + a) ≡ a∗;
0,0
0
)∗r
= b + (ε + a)(ε + a)∗1 ≡ b + a∗b ≡ a∗b;
0,1
0
)∗r
= a + a(ε + a)∗(ε + a) ≡ aa∗;
0,0
0
)∗r
= ε + b + a(ε + a)∗b ≡ ε + a∗b.
0,1
≡ a∗b, r
2
0,0
≡ a∗+ a∗b(ε + a∗b)∗aa∗≡ a∗+ a∗b(a∗b)∗aa∗;
≡ a∗b + a∗b(ε + a∗b)∗(ε + a∗b) ≡ a∗b(a∗b)∗;
≡ aa∗+ (ε + a∗b)(ε + a∗b)∗aa∗≡ (a∗b)∗aa∗;
≡ ε + a∗b + (ε + a∗b)(ε + a∗b)∗(ε + a∗b) ≡ (a∗b)∗.
, r
1
0,1
2
0,1
, r
1
1,0
, r
0
= a, r
1,0
1
1
, r
1,1
:
1,0
≡ aa∗, r
2
2
, r
1,0
:
1,1
2
≡ (a∗b)∗aa∗,
1,0
2
≡ (a∗b)∗.
1,1
0
= ε + b.
1,1
1
≡ ε + a∗b.
1,1
q1— единственное заклю-
2
r
эквивалентно автомату.
0,1
также задаёт
)
)

§ 2.4. Регулярные выражения 105
b
q
0
q
1
a
a
b
Рис. 18. Конечный автомат из примера 40
Из приведённого примера видно, что даже для маленького автомата с двумя состояниями процедура построения регулярного выражения является весьма громоздкой. Конечно, мы выполнили некоторые лишние вычисления. Так, например, на последнем шаге можно
было построить только
2
r
, так как остальные три выражения не
0,1
соответствуют допускающим вычислениям. Число промежуточных
регулярных выражений можно уменьшить с помощью следующего
приёма. Выпишем все формулы для выражений
выпишем все формулы для тех выражений
n
r
, где
0,j
n−1
r
, которые встретились
l,m
qj∈ F
. Затем
в правых частях предыдущих формул. Продолжаем этот процесс,
пока не дойдём до выражений вида
только те
примере
от всех четырёх выражений
k
r
, которые встретились с построенном списке. В нашем
l,m
2
r
зависит только от
0,1
0
r
0,0
0
r
. После этого мы выписываем
l,m
1
r
0,1
,
r
0
0,1
1
и
r
. Выражение
1,1
0
,
r
,
r
1,0
1
r
зависит
0
. Поэтому достаточно
1,1
1,1
построить только семь регулярных выражений. Тем не менее даже
при таком подходе построение регулярного выражения остаётся весьма трудоёмким. В следующем параграфе мы опишем другой метод
построения регулярного выражения по конечному автомату, основанный на решении систем уравнений. Во многих случаях он позволяет
построить выражение, используя гораздо меньшее количество вычислений. Ещё один способ преобразования автомата в регулярное
выражение описан в упражнении 92.
Из теорем 43 и 45 получаем
Сл едствие 46.
Класс автоматных языков совпадает с классом

106 Глава 2. Конечные автоматы и регулярные выражения
регулярных языков.
Задачи
83. Постройте регулярные выражения, задающие следующие языки:
(а) L1= { w ∈ { a, b }∗: длина слова w чётна };
(б) L2= { w ∈ { a, b }∗: |w| = n }, где n — фиксированное натуральное число;
(в) L3= { w ∈ { a, b }∗: w не начинается на bba };
(г) L4= { w ∈ { a, b }∗: w содержит подслова baa и aba };
(д) L5= { w ∈ { a, b }∗: число символов a в w нечётно };
(е) L6= { w ∈ { a, b }∗: символы a встречаются в w только по два подряд };
(ж) L7= { w ∈ { a, b }∗: w содержит подслово ab, |w|aчётно };
(з) L8= { w ∈ { a, b, c }∗: любые три идущие подряд
буквы в w попарно различны };
(и) L9= { w ∈ { a, b }∗: w не содержит ни baa, ни bab };
(к) L10= { w ∈ { a, b }∗: w не содержит ни aa, ни bb };
(л) L11= { w ∈ { a, b }∗: w содержит ровно одно подслово aaa };
(м) L12= { w ∈ { a, b }∗: |w|aчётно, |w|bнечётно };
(н) L13= { w ∈ { a, b }∗: |w|aнечётно, |w|bнечётно };
(о) L14= { w ∈ { a, b, c }∗: между любыми двумя
символами a в слове w стоит чётное число символов b
и ненулевое число символов c }.
84. Упростите следующие регулярные выражения:
(а) r1= ((ba)∗+ baba)∗ba + (abb)∗;
(б) r2= (abb + ab + b)∗b∗;
(в) r3= ((ba + b)∗+ a∗)∗((bb)∗+ aa);
(г) r4= ((a∗b∗)∗bb)∗;
(д) r5= a∗+ a∗b(a∗b)∗aa∗.
85. Преобразуйте НКА из примера 39 в эквивалентный ДКА.
86.
Постройте конечные автоматы по следующим регулярным выражениям и
преобразуйте их в эквивалентные ДКА:
(а) r1= ((abb + aa)∗b + (aa)∗b)∗;
(б) r2= (bab∗+ (ab)∗)(ab)∗;
(в) r3= ((aba)∗b + (ab)∗a)∗;

§ 2.5. Системы уравнений 107
(г) r4= ((ab)∗a + aa)∗bb.
87.
Постройте для следующих языков конечные автоматы. Постройте по этим
автоматам регулярные выражения с помощью теоремы 45:
(а) L1= { w ∈ { a, b }∗: |w|aнечётно };
(б) L2= { w ∈ { a, b }∗: w содержит подслово aa };
(в) L3= { w ∈ { a, b }∗: w не содержит подслова ba }.
88.
Назовём регулярное выражениеrпростым, если оно имеет вид
где
piиq— суммы, состоящие из∅,εи символов алфавита Σ. Докажите, что
∗
p
+
1
если регулярное выражение не содержит конкатенации, то оно эквивалентно
некоторому простому регулярному выражению.
89.
Приведите пример регулярного языка, который не задаётся никаким регу-
лярным выражением, не содержащим итерации.
90.
Приведите пример регулярного языка, который не задаётся никаким регу-
лярным выражением, не содержащим конкатенации.
91.
Приведите пример регулярного языка, который не задаётся никаким регу-
лярным выражением, не содержащим объединения.
92.
ПустьM= (Q,Σ
δ={ c0, c1, . . . , c
удалением всех команд, кроме
всех слов, переводящих
построить регулярные выражения r
, δ, q0, F
},Q={ q0, . . . , q
m−1
qiв
) — НКА. Упорядочим все его команды и состояния:
}
n−1
{ c0, . . . , c
k−1
qjв автомате
k
для языков L
i,j
. Пусть
Mk— НКА, полученный из
}
. Обозначим через
Mk. Покажите индукцией поk, как
(k)
i,j
.
(k)
L
i,j
∗
· · ·+p
n
+q,
M
множество
§ 2.5. Системы уравнений
Уравнения в языках являются весьма полезным инструментом
для изучения языков. Они представляют собой обычные уравнения,
в которых коэффициенты и переменные обозначают языки.
Оп ределен ие 58.
натура,
Var
— множество переменных. У р а в н е н и е — это слово
вида s = t, где s и t — термы сигнатуры Ω с переменными из Var.
С и с т е м а у р а в н е н и й — это конечное множество уравнений.
Р е ш е н и е с и с т е м ы у р а в н е н и й — это отображение
f : Var →
P(Σ∗) такое, что для любого уравненияs=tимеет
место равенство f (s) = f(t).
Пусть Σ — произвольный алфавит, Ω — сиг-

108 Глава 2. Конечные автоматы и регулярные выражения
Далее мы будем считать, что сигнатура Ω содержит символы
+ и·, интерпретируемые как объединение и пересечение, а также
константы, обозначающие отдельные символы алфавита Σ.
Чтобы упростить запись, в этом параграфе мы будем отождествлять языки и их обозначения. Например, вместо «языкL(
будем писать «язык
a∗», а вместо «значениемxявляется язык
a∗)» мы
a∗»
будем писать «x = a∗».
Рассмотрим несколько примеров. Во всех примерах Σ =
{a, b }
, а
переменная обозначена буквой x.
Пр име р 41.
этого же уравнение — язык { a, b }∗.
Пр име р 42.
x=∅
, то левая часть пуста, а правая непуста. Если же
часть содержит хотя бы одно слово, начинающееся наa, а правая часть не
содержит таких слов.
Уравнениеxx=x+
Уравнениеax=bне имеет решений. Действительно, если
xax
имеет решение∅. Другое решение
x 6=∅
, то левая
Особый интерес представляют наименьшие решения систем урав-
нений.
Оп ределен ие 59.
Решениеfсистемы с переменными
x1, . . . , x
n
называется н а и м е н ь ш и м , если для любого решенияgвыполняется f(xi) ⊆ g(xi) для всех переменных xi.
Мы будем рассматривать только уравнения специального вида.
Их левая часть является переменной, а правая представляет собой
«линейную комбинацию».
Оп ределен ие 60.
ф и ц и е н т а м и — это слово вида
У р а в н е н и е с р е г у л я р н ы м и к о э ф -
xi=
p1x1+
···+pnxn+q, где
x1, . . . , xn— переменные, p1, . . . , pn, q — регулярные выражения.
Пр име р 43.
решение x = a∗b, так как
ЕслиLобозначает произвольный язык (не обязательно даже регулярный),
Уравнение с регулярными коэффициентамиx=
a∗a∗b + b = a∗b + b = (a∗+ ε)b = a∗b.
a∗x+b
имеет

§ 2.5. Системы уравнений 109
то a∗(b + L) — тоже решение. Действительно,
a∗a∗(b + L) + b = a∗(b + L) + b = a∗b + a∗L + b =
= (a∗+ ε)b + a∗L = a∗b + a∗L = a∗(b + L).
Мы видим, что даже уравнения с регулярными коэффициентами могут
иметь бесконечно много решений.
Наименьшие решения систем уравнений тесно связаны с языками,
порождаемыми грамматиками. Далее мы опишем алгоритм, позволяющий находить наименьшие решения линейных систем. Сначала
покажем, как найти наименьшее решение одного линейного уравнения.
Теорема 47.
Наименьшим решением уравненияx=px+qявляется
язык p∗q.
Доказательство. Непосредственной подстановкой убеждаемся в
том, что p∗q — решение:
pp∗q + q = (pp∗+ ε)q = p∗q.
Докажем, что это решение наименьшее. ПустьL— произвольное
решение уравнения x = px + q. Тогда выполняется равенство
L = pL + q. (2)
Индукцией поiдокажем следующее утверждение:
piq ⊆ L
для всех
i ∈ ω.
Б а з и с и н д у к ц и и . Приi= 0 включение
q ⊆ L
следует из
равенства (2).
Ш а г и н д у к ц и и . Пусть дляiвыполняется индукционное пред-
положение. Тогда
i+1
p
q=p(piq)⊆ pL ⊆ L
. Последнее включение
снова следует из равенства (2).
Из утверждения следует, что
∞
[
p∗q =
piq ⊆ L,
i=0

110 Глава 2. Конечные автоматы и регулярные выражения
поэтому решение p∗q наименьшее.
Заметим, что в теореме 47pиqмогут обозначать произвольные
языки, не обязательно регулярные.
Сл едствие 48.
Наименьшее решение уравненияx=px+qмоно-
тонно по p и по q.
Пусть теперь дана произвольная система уравнений вида
xi= p
i,1x1
+ p
i,2x2
+ ··· + p
+ qi, 1 6 i 6 n.
i,nxn
Наименьшее решение такой системы можно найти, используя метод
подстановки.
1) Выразить из последнего уравнения xn:
xn= p
Здесь рольpиграет выражение
p
n,1x1
+ ··· + p
∗
(p
n,1x1
n,n
n,n−1xn−1
+ ··· + p
+ qn.
n,n−1xn−1
p
, а рольq— выражение
n,n
+ qn). (3)
2) Подставить это выражение для xnв остальные уравнения.
3) Привести подобные члены.
4) Решить получившуюся систему уравнений.
5)
Подставить найденные значения переменных
x1, . . . , x
n−1
в вы-
ражение для xn.
Докажем корректность описанного алгоритма.
Теорема 49.
Алгоритм подстановки находит наименьшее решение
системы уравнений.
Доказательство. Индукция по числу переменных n.
Б а з и с и н д у к ц и и . В случаеn= 1 утверждение доказано в
теореме 47.
Ш а г и н д у к ц и и . Обозначим черезKисходную систему, а
через
K0— систему после подстановки. Всякое решение системы
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
