Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория автоматов и формальных языков. Учебник.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
§ 2.4. Регулярные выражения 91
Оп ределен ие 55.
л я р н ы м в ы р а ж е н и е м над алфавитом Σ называется слово в алфавите Σ щим образом.
Б а з и с и н д у к ц и и .
1) Если r = ∅, то r — регулярное выражение.
2) Если r = ε, то r — регулярное выражение.
3) Если r = a, где a ∈ Σ, то r — регулярное выражение.
Ш а г и н д у к ц и и .
1)
Еслиpиq— регулярные выражения, то (p+q) — регулярное выражение.
2)
Еслиpиq— регулярные выражения, то ( выражение.
3)
Еслиp— регулярное выражение, то ние.
Каждому регулярному выражению над алфавитом Σ соответству­ет некоторый язык в алфавите Σ.
∪ {∅, ε,(,),+, ·,∗}
Пусть Σ — произвольный алфавит. Р е г у -
, определяемое по индукции следую-
p · q
) — регулярное
p∗— регулярное выраже-
Оп ределен ие 56.
н ы м в ы р а ж е н и е мr(обозначаетсяL(r)), индукцией по длинеr.
Б а з и с и н д у к ц и и .
1) Если r = ∅, то L(r) = ∅.
2) Если r = ε, то L(r) = {ε }.
3) Если r = a, где a ∈ Σ, то L(r) = {a }.
Ш а г и н д у к ц и и .
1) Если r = (p + q), то L(r) = L(p) ∪L(q).
2) Если r = (p · q), то L(r) = L(p) · L(q).
Определим язык, з а д а в а е м ы й р е г у л я р -
92 Глава 2. Конечные автоматы и регулярные выражения
3) Если r = p∗, то L(r) = L(p)∗.
ЯзыкLназывается р е г у л я р н ы м, если он задаётся некоторым
регулярным выражением.
Введём несколько сокращений при записи регулярных выражений.
1) Не будем писать внешние скобки.
2)
Не будем писать скобки, если несколько выражений связаны одной из операций + или·. Это не приведёт к неоднозначности, так как операции объединения и конкатенации ассоциативны.
3) Будем опускать символ ·.
4)
Будем считать, что операция∗имеет приоритет выше, чем·, а имеет более высокий приоритет, чем +.
·
С учётом этих соглашений регулярное выражение (((
a · b)· a
) +
((b · b)∗+ (a∗· a))) можно записать в виде aba + (bb)∗+ a∗a.
Приведём несколько примеров языков и задающих их регулярных выражений. Во всех примерах Σ = {a, b }.
Пр име р 33.
Пр име р 34.
множество всех слов в алфавите в точности те слова, которые можно представить в виде конкатенации нескольких слов a и b. Но любое слово имеет такой вид.
Пр име р 35.
держащий те и только те слова, которые содержат подслово w ∈ L(r3), то по определениюwможно представить в видеw= что
x, z ∈ L((a+b
baa
. Наоборот, еслиwсодержит
слова. Поэтому x, y ∈ L((a + b)∗), baa ∈ L(baa), а значит, w ∈ L(r3).
Пр име р 36.
и только те слова, в которых число символовaчётно. Если можно представить в видеw=
Выражение
Выражение
Выражение
)∗),
y ∈ L(baa
Выражение
r1=ab+
r2= (a+b)∗задаёт язык
r3= (a+b)∗baa(a+b
r4= (b+
bba+bbb
{a, b }
). Поэтомуy=
baa
, тоw=
ab∗a
w1w2. . . wn, где
задаёт язык
. Действительно,L(
xbbay
)∗задаёт язык
baaиw
, гдеx,y— произвольные
wi=bили
L1=
{ab, bba, bbb }
L2=
{a, b }∗, то есть
r2) содержит
)∗задаёт язык
baa
содержит подслово
L4, содержащий те
w ∈ L(r4), то
wi∈ L(ab∗a
L3, со-
. Если
xyz
так,
). В
.
w
§ 2.4. Регулярные выражения 93
обоих случаях ловaв словеwтакже чётно. Наоборот, пусть лыaв пары, тогда словоwпредставляется в виде
k
ui=
i
b
, ется в виде конкатенации в виде конкатенации слов видаbили жат языкуL(b+
Пр име р 37.
содержащий те и только те слова, в которых нет подслова
wiсодержит чётное число символовa, поэтому число симво-
|w|aчётно. Объединим симво-
u1v1u2v2. . . unvnu
m
vi=
i
ab
a
для некоторых
ki, mi>
0. Каждое слово
uiпредставля-
kiсимволовb. Поэтому всё словоwпредставляется
m
i
ab
a
. Так как такие слова принадле-
ab∗a
), тоwпринадлежит его итерации, то есть
Выражение
r5= (b+ab+
aab
)∗(ε+a+aa) задаёт язык
n+1
w ∈ L(r4).
aaa
. Слова,
, где
L5,
задаваемые этим выражением, не могут содержать трёх символовaподряд, так как после подсловаaaлибо стоит символb, либо слово заканчивается. Наоборот, еслиwне содержит трёхaподряд, то оно может содержать блоки из символовbпроизвольной длины, а также блоки видаabили
aab
. Все эти фрагменты учтены в первой скобке. Если же слово заканчивается на символы a, то этот суффикс можно задать с помощью второй скобки.
Пр име р 38.
Рассмотрим более сложный пример. Пусть
L6— это множе-
ство всех слов, в которых и числоa, и числоbчётно. Этот язык задаётся сле­дующим регулярным выражением: Разобьём слово
w ∈ L6на блоки по два символа. Существует четыре слова
r6= (aa+bb+(ab+ba)(aa+bb)∗(ab+ba))∗.
длины два:aa,ab,baиbb. Словаaaиbbне влияют на итоговую чётность числаaиb, поэтому эти подслова могут встречаться вwна любых местах и в любых количествах. Подсловаabиbaменяют чётность числа каждого из символов на противоположную, поэтому они могут встречаться толь­ко парами. Подслово, содержащее ровно два таких фрагмента, задаётся выражением (ab+ba)(aa+bb)∗(ab+ba), поэтому
L6задаётся выражением
r6.
Оп ределен ие 57.
Регулярные выраженияpиqназываются э к ­в и в а л е н т н ы м и, еслиL(p) =L(q). Эквивалентность регулярных выражений p и q обозначается p ≡ q.
Из теоремы 7 получаем следующие эквивалентности для регуляр-
ных выражений.
Теорема 39.
Для любых регулярных выражений имеют место сле-
дующие эквивалентности:
94 Глава 2. Конечные автоматы и регулярные выражения
1) p + q ≡ q + p;
2) (p + q) + r ≡ p + (q + r);
3) (pq)r ≡ p(qr);
4) p(q + r) ≡ pq + pr;
5) (p + q)r ≡ pr + qr;
6) p + ∅ ≡ ∅ + p ≡ p;
7) p∅ ≡ ∅p ≡ ∅;
8) (p∗)∗≡ p∗;
9) p∗p∗≡ p∗;
10) pp∗≡ p∗p;
11) p∗p + ε ≡ p∗;
12) (p + q)∗≡ (p∗q∗)∗;
13) ∅∗≡ ε∗≡ ε;
14) (p + q∗)∗≡ (p + q)∗.
Мы докажем, что класс языков, распознаваемых конечными ав­томатами, совпадает с классом языков, задаваемых регулярными выражениями. Сначала мы докажем, что класс языков, задаваемых НКА, замкнут относительно объединения, конкатенации и итерации. При этом мы ограничимся НКА с одним заключительным состоянием.
1
Ле мма 40.
(
Q2,Σ, δ2, q
По любым двум НКА
2
2
, {q
}
0
) можно построить НКАMс одним заключитель-
f
M1= (
Q1,Σ, δ1, q
0
, {q
1
}
) и
f
M2=
ным состоянием такой, что L(M ) = L(M1) ∪L(M2).
Доказательство. Можно считать, что в противном случае достаточно переименовать состояния. Пусть и
qf— два новых состояния. Определим автомат
Q1∩ Q2=∅, так как
q
M
следующим
образом: M = (Q, Σ, δ, q0, {qf}), где
0
Q = Q1∪ Q2∪ {q0, qf},
δ = δ1∪ δ2∪ {q0, ε → q
Автомат
M
изображён на рис. 13. Докажем, чтоL(M) =L(
1
; q0, ε → q
0
L(M2).
Пусть тала команда а автоматы
M
посещает состояния из множества
(
q0, w)`
w ∈ L(M
M1и
j
(
q, w0) для некоторых
M
i
), то есть (
q0, ε → q
i
0
M2не имеют общих состояний, то далее автомат
q0, w)`
для некоторого
w0∈
2
1
; q
0
f
∗
(
qf, ε
M
i ∈ {1,2}
, ε → qf; q
). На первом шаге срабо-
2
, ε → qf}.
f
. Поскольку
q
Qi. (Более формально: если
Σ∗,
j ∈ ω
, то либоq=
qf, либо
M1)
i
∈ Qi,
0
∪
§ 2.4. Регулярные выражения 95
1
q
ε
q
0
0
M
1
ε
2
q
0
M
2
1
q
f
ε
q
f
ε
2
q
f
Рис. 13. НКА для объединения.
q ∈ Qi. Утверждение доказывается индукцией поj.) Единственный
способ попасть из
Qiв
qf— использовать команду
i
q
, ε → qf, причём
f
эта команда обязательно должно применяться на последнем шаге. Поэтому вычисление автомата M на слове w имеет вид
Поэтому (
(q0, w) `M(q
i
q
, w)`
0
∗
M
i
0
i
(
q
, ε
), так как внутри
f
i
, w) `
∗
i
(q
, ε) `M(qf, ε).
M
f
Miновых команд нет.
Следовательно, w ∈ L(Mi) и w ∈ L(M1) ∪L(M2).
Пусть теперь рого
i ∈ {1,2}
w ∈ L(M1)
∪ L(M2). Тогда
. Это значит, что (
i
q
, w)`
0
w ∈ L(Mi) для некото-
∗
i
(
q
, ε
M
i
). Добавляя новые
f
команды в начало и в конец этого вычисления, получаем
(q0, w) `M(q
i
0
, w) `
∗
i
(q
, ε) `M(qf, ε).
M
f
Следовательно, w ∈ L(M).
1
Ле мма 41.
(
Q2,Σ, δ2, q
По любым двум НКА
2
2
, {q
}
0
) можно построить НКАMс одним заключитель-
f
M1= (
Q1,Σ, δ1, q
0
, {q
1
}
) и
f
M2=
ным состоянием такой, что L(M ) = L(M1) ·L(M2).
Доказательство. Как и в доказательстве предыдущей леммы можно считать, что
Q1∩ Q2=∅. Определим автоматMследующим
96 Глава 2. Конечные автоматы и регулярные выражения
1
образом: M = (Q, Σ, δ, q
, {q
0
2
}), где
f
Q = Q1∪ Q2,
δ = δ1∪ δ2∪ {q
1
, ε → q
f
2
}.
0
Автомат
M
изображён на рис. 14. Докажем, чтоL(M) =L(
L(M2).
1
q
0
2
q
f
Пусть
∈ Q2и
w ∈ L(M
), то есть (
Q1∩ Q2=∅, то на некотором шаге должна применяться
команда, перерабатывающая состояние из множества из множества
Q2. Ни одна команда автоматаMне может перевести
автомат обратно в состояние из множества
, w)`
∗
2
(
q
, ε
M
). Поскольку
f
Q1в состояние
Q1. Поэтому вычисление
1
q
0
разбивается на две части: сначала работают команды автомата затем применяется команда томата команды
M2. Пустьu— префикс словаw, прочитанный до применения
1
q
, ε → q
f
2
, аv— оставшийся суффикс. Тогда вычисление
0
1
q
, ε → q
f
2
, а затем работают команды ав-
0
имеет вид
(q
0
1
, uv) `
∗
M
1
(q
, v) `M(q
f
2
, v) `
0
∗
M
(q
2
f
, ε).
Следовательно,
1
∗
(q
, u) `
0
M
(q
1
1
, ε), (q
f
2
, v) `
0
∗
M
2
(q
, ε).
f
2
Поэтому u ∈ L(M1), v ∈ L(M2) и w ∈ L(M1) ·L(M2).
Пусть теперь языковw=uv, где
2
, v)`
∗
M
(
2
(
q
0
M. Добавляя команду q
w ∈ L(M1)
u ∈ L(M1),
2
q
, ε
). Эти же вычисления может выполнить и автомат
f
1
(q
, uv) `
0
· L(M2). По определению конкатенации
(q
2
f
, ε),
1
q
0
, u)`
1
, ε → q
f
∗
(q
M
v ∈ L(M2). Значит, (
2
, получаем
0
1
, v) `M(q
f
2
, v) `
0
∗
M
∗
M
1
M1)
∈ Q1,
M1,
1
(
q
, ε
f
·
),
поэтому w ∈ L(M).
Ле мма 42.
строить НКА
По любому НКА
M
L(M) = L(M1)∗.
1
M1= (
Q1,Σ, δ1, q
0
, {q
1
}
) можно по-
f
с одним заключительным состоянием такой, что
§ 2.4. Регулярные выражения 97
ε
1
q
0
M
1
1
q
f
2
q
0
M
2
2
q
f
Рис. 14. НКА для конкатенации.
Доказательство. Пусть
q0и
qf— два новых состояния. Опреде-
лим автомат M следующим образом: M = (Q, Σ, δ, q0, {qf}), где
Q = Q1∪ {q0, qf}
δ = δ1∪ {q0, ε → q
Автомат
M
изображён на рис. 15. Докажем, чтоL(M) =L(
Легко видеть, что
; q
0
ε ∈ L(M
1
, ε → qf; q0, ε → qf; q
f
), поэтому будем рассматривать только
1
, ε → q
f
1
}.
0
M1)∗.
1
непустые слова.
Пусть состоянийπ= (
w
такая, что
q
m−1
кроме последнего, в числу состояний q
=
q
w ∈ L(M
qm=
1
. Пусть
f
). Это значит, что существует последовательность
q0, q1, . . . , q
, qm) автоматаMпри работе на слове
m−1
qf. В этой последовательности обязательно
π0= (
1 0
q1, . . . , q
m−1
π0стоит состояние
в π0.
). После каждого состояния
1
q
. Проведём индукцию по
0
q1=
q
q
Б а з и с и н д у к ц и и . Если такое состояние одно, то автомат
работает как M1. Поэтому w ∈ L(M1) и w ∈ L(M1)∗.
Ш а г и н д у к ц и и . Пусть
имеет вид (
qjи
q
m−1
1
q
, причём в состоянии
f
π00, qj, q
нет
j+1
1
q
,
π00содержитiсостояний
0
. . . , q
q
π0содержитi+1 состояние
, q
m−2
j−1
), где
m−1
1
=
q
применяется команда
f
qj=
1
q
и заканчивается на
0
1
q
,
q
m−1
0
q
=
1
. Тогда
0
1
q
, между
f
q
1
q
, ε → q
f
j−1
π
=
Пустьu— префикс словаw, который автомат считывает в состояниях от
q1до
q
Тогда
, аv— суффикс, считываемый в состояниях от
j−1
v ∈ L(M1), а по индукционному предположению
qjдо
q
m−1
u ∈ L(M1)∗,
поэтому w ∈ L(M1)∗.
1
,
0 1
,
f
0
1
.
0
.
98 Глава 2. Конечные автоматы и регулярные выражения
ε
q
ε
0
1
q
0
M
1
q
ε
1
f
q
f
ε
Рис. 15. НКА для итерации.
Пусть теперь для всех i. Индукцией по k докажем, что (q
Б а з и с и н д у к ц и и . Еслиk= 1, то (
1
ку (q
, w1) `
0
w ∈ L(M1)∗. Тогдаw=
∗
1
(q
M
, ε).
f
1
w1w2. . . wk, где
q
1 0
1
, w1)
0
, w) `
∗
1
(q
M
f
∗
`
(
q
M
wi∈ L(M1)
, ε).
1
, ε
), посколь-
f
Ш а г и н д у к ц и и . Пусть утверждение верно дляkи пусть
1
k+1
1
q
, w1. . . wk)
0
1
(
q
, ε
). Используя
f
∗
) `
(q
M
1
f
, ε).
w=w1. . . w
1
(
q
, ε
). Так как
f
команду q
1
(q
, w1. . . wkw
0
Итак, (
1
q
0
, w)`
. По индукционному предположению (
k+1
1
, ε → q
f
w
k+1
1
, получаем
0
k+1
∗
1
(
q
, ε
M
f
∈ L(M1), то (
∗
M
(q
1
f
) `
). Добавляя в начало и в конец вычисления
, w
q
k+1
1
, w
k+1
0
) `M(q
∗
)
`
M
1
, w
0
новые команды, получаем
∗
`
M
(q0, w) `M(q
1
0
, w) `
∗
1
(q
, ε) `M(qf, ε),
M
f
поэтому w ∈ L(M).
Теперь мы покажем, как построить конечный автомат по регуляр­ному выражению.
Теорема 43.
По любому регулярному выражению можно построить
эквивалентный ему НКА.
§ 2.4. Регулярные выражения 99
q
0
(а) НКА для ∅.
q
f
(б) НКА для ε.
ε
q
0
q
f
(в) НКА для a.
a
q
0
q
f
Рис. 16. НКА для языков ∅, ε и a.
Доказательство. Проведём индукцию по длине регулярного выраженияr. Конечные автоматы, которые мы построим, будут обладать ровно одним заключительным состоянием.
Б а з и с и н д у к ц и и . Еслиr=∅, тоL(r) распознаётся НКА
M = ({q0, qf}, Σ, ∅, q0, {qf}) (см. рис. 16а).
Еслиr=ε, тоL(r) распознаётся НКАM= (
{q0, qf},Σ, δ, q0, {qf}
с единственной командой q0, ε → qf(см. рис. 16б).
Еслиr=ε, тоL(r) распознаётся НКАM= (
{q0, qf},Σ, δ, q0, {qf}
с единственной командой q0, a → qf(см. рис. 16в).
Заметим, что приведённая конструкция избыточна. Например, для выражения∅состояние
qfне нужно, поскольку оно недостижимо. Мы
создаём такие «лишние» состояния для упрощения доказательства, чтобы все автоматы содержали заключительное состояние.
Ш а г и н д у к ц и и . Еслиr=p+q,r=
p · q
илиr=
p∗, то
для языковL(p) иL(q) по индукционному предположению можно построить эквивалентные НКА с одним заключительным состоянием. Поэтому к этим автоматам применимы леммы 40, 41 и 42.
)
)
Сл едствие 44.
строить эквивалентный НКАM= (Q,Σ
По любому регулярному выражениюrможно по-
, δ, q0, F
) такой, что
|Q| 62|r|
и из каждого состояния имеется не более двух переходов.
Доказательство. На каждом шаге построения НКА добавляется не более двух новых состояний. Непосредственно проверяется, что ни из какого состояния нет трёх переходов.
Описанная конструкция создаёт много пустых переходов. Некото­рые из них можно опустить. Например, если регулярное выражение
100 Глава 2. Конечные автоматы и регулярные выражения
является конкатенацией символов n + 1 состояние q0, q1, . . . , qnи добавить команды qi, a
Пр име р 39.
r
= (ab+b)∗a
abиb
(рис. 17а). Для выраженияabмы использовали приём, описанный перед примером, чтобы не создавать лишнююε-команду. Далее мы объ­единяем эти автоматы в один, добавляя новое начальное состояние новое заключительное состояние на рис. 17б. После этого мы добавляем ещё два состояния и получаем автомат для выражения (ab + b)∗(рис. 17в). Наконец, мы строим автомат для выраженияaи проводим ребро из заключительного состояния первого автомата в начальное состояние второго. Итоговый автомат изображён на рис. 17г.
Построим конечный автомат по регулярному выражению
. Сначала построим автоматы для регулярных выражений
a1a2. . . an, то можно просто взять
→ q
i+1
q6. Получается автомат, изображённый
i+1
.
q5и
Теперь докажем обратную теорему.
Теорема 45.
По любому конечному автомату можно построить
эквивалентное ему регулярное выражение.
Доказательство. Пусть НКА. Можно считать, чтоQ=
n >
1. Для каждого числаk= 0
яний
qi, qj∈ Q
множество состояния
мы построим регулярное выражение
(k)
L
тех слов в алфавите Σ, которые переводят автомат из
i,j
qiв состояние
стояния в вычислении принадлежат множеству Мы будем строить выражения
M
= (Q,Σ
{q0, q1, . . . , q
, . . . , n −
, δ, q0, F
) — произвольный
}
для некоторого
n−1
1 и для каждых двух состо-
k
r
, задающее
i,j
qjтак, что при этом все промежуточные со-
Qk=
{q0, . . . , q
k
r
индукцией поkи сразу же дока-
i,j
k−1
зывать их правильность.
Б а з и с и н д у к ц и и . Приk= 0 обозначим через
выражение
[
0
ˆr
регулярное
i,j
a ∈ Σ ∪{ε } : qi, a → qj∈ δ.
.
}
Здесь символSобозначает операцию объединения +. Тогда просто сумма меток всех рёбер, ведущих из таких рёбер нет, то
0
ˆr
=∅. Выражения
i,j
qiв
qj. В частности, если
0
r
определяются следующим
i,j
ˆr
i,j
0
— это
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]