Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория автоматов и формальных языков. Учебник.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
§ 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— систему после подстановки. Всякое решение системы
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]