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

Конечные автоматы и регулярные выражения 51
Глава 2
Конечные автоматы и регулярные выражения
§ 2.1. Детерминированные конечные автоматы
Конечные автоматы являются простейшим типом устройств для
обработки слов. Такой автомат имеет конечную память, а его работа
состоит в том, что он читает символы входного слова по одному слева
направо и сохраняет некоторую информацию в памяти. Когда автомат
доходит до конца слова, он выдаёт ответ, принадлежит ли слово
некоторому языку. Фактически, это просто одноленточная машина
Тьюринга с командами вида
объём информации можно хранить в состоянии.
Дадим точное определение конечного автомата.
q, a → p, a,
+1, поскольку конечный
Оп ределен ие 40.
т о м а т (ДКА) — это пятёрка M = (Q, Σ, δ, q0, F ), где
1) Σ — конечный в х о д н о й алфавит;
2) Q — конечное множество с о с т о я н и й;
3) δ : Q ×Σ→ Q
Д е т е р м и н и р о в а н н ы й к о н е ч н ы й а в -
— ф у н к ц и я п е р е х о д о в (или п р о г р а м -

52 Глава 2. Конечные автоматы и регулярные выражения
м а );
4) q0∈ Q — начальное состояние;
5) F ⊆ Q — множество з а к л ю ч и т е л ь н ы х состояний.
Рассмотрим три основных способа задания конечных автоматов.
Пусть задан ДКА M = (Q, Σ, δ, q0, F ), |Σ| = n, |Q| = m.
Первый способ — представление автомата в виде таблицы. Таблица
содержитmстрок, помеченных состояниями, иnстолбцов, помеченных входными символами. На пересечении строки, помеченнойq, и
столбца, помеченногоa, записывается состояниеδ(
лицы будем помечать начальное и заключительные состояния. Рядом
с начальным состоянием будем ставить пометку «нач», а рядом с
заключительными — пометку «закл».
Второй способ — представление автомата в виде диаграммы.
q, a
). Слева от таб-
Оп ределен ие 41.
(Q, Σ, δ, q0, F ) — это размеченный мультиграф D такой, что:
1)
множество вершин мультиграфа совпадает с множеством состояний автомата;
2)
в мультиграфе отмечены начальное и заключительное состояния;
3)
еслиδ(
Если изqвpидут несколько рёбер, то мы будем рисовать одно
ребро и писать на нём несколько меток через запятую. Начальное
состояние будем отмечать входящей стрелкой, а заключительные
будем обводить в двойной кружок.
Третий способ — задание автомата в виде списка команд. Если
δ(q, a
) =p, то мы записываем это в виде
заключительные состояния указываются в явном виде. Далее мы
будем отождествлять слова вида
Например, еслиQ=
q, a
) =p, то в мультиграфе есть ребро (
Д и а г р а м м а конечного автомата
q, p
) с меткойa.
{q0, q1}
, Σ =
q, a → p
q, a → p
{a, b },δ(q0, a
с кортежами ((
. Начальное и
) =
q0,δ(
q0, b
M
q, a), p
) =
=
q1,
).

§ 2.1. Детерминированные конечные автоматы 53
δ(q1, a) = q1, δ(q1, b) = q0, то мы будем писать просто
δ = {q0, a → q0; q0, b → q1; q1, a → q1; q1, b → q0}.
Вместо δ(q, a) = b мы также будем использовать запись q, a → p ∈ δ.
Работа автомата состоит в том, что он читает входное слово по
одному символу. Если в состоянииqавтомат видит на входе символ
a
, то он считывает его и переходит в состояниеδ(
q, a
). Чтение одной
буквы формализуется с помощью отношения перехода за один шаг
на множестве конфигураций.
Оп ределен ие 42.
нечного автоматаM= (Q,Σ
К о н ф и г у р а ц и я детерминированного ко-
, δ, q0, F
) — это пара (
q, w
), где
q ∈ Q
w ∈ Σ∗.
На множестве конфигураций автоматаMопределяется отношение п е р е х о д а з а о д и н ш а г
некоторого символа
a ∈
Σ выполняется
`M: (
q1, w1)
w1=
`M(
q2, w2), если для
aw2и
q2=δ(
q1, a
). В
этом случае будем говорить, что автомат делает a- т а к т .
Конфигурация вида (
q0, w
) называется н а ч а л ь н о й. Конфи-
гурация вида (q, ε), где q ∈ F , называется з а к л ю ч и т е л ь н о й .
Конфигурация описывает текущее положение автомата при чтении слова. Конфигурация (
состояниеqи ему остаётся прочитать словоw. Если автомат
q, w
) означает, что автомат перешёл в
M
ясен из контекста или несущественен, то будем опускать индексMи
писать просто `.
Через
Содержательно, (
перейти из конфигурации (
n
`
как обычно обозначаетсяn-я степень отношения
M
q, w)`
n
M
(
p, v
) означает, что автомат
q, w
) в конфигурацию (
p, v
`M.
M
может
), проделав
ровно n тактов.
Оп ределен ие 43.
последовательность конфигураций ((
кая, что
q0— начальное состояние,
В ы ч и с л е н и е ДКА
q0, w0),(
w0=w, (
M
на словеw— это
q1, w1)
, . . . ,(qn, wn)) та-
qi, wi)
`M(
q
, w
i+1
i+1
для 0 6 i 6 n − 1.
,
)

54 Глава 2. Конечные автоматы и регулярные выражения
Вычисление будем записывать в виде
(q0, w0) `M(q1, w1) `M··· `M(qn, wn).
В определении не требуется, чтобы последняя конфигурация была
заключительной, поэтому можно рассматривать и «неполные» вычисления, когда слово не прочитано до конца.
Через
отношения
(
q1, w1)
транзитивное замыкание отношения
тогда и только тогда, когда (
Если (
∗
`
обозначается рефлексивное транзитивное замыкание
M
`M, то есть (
`n(
q2, w2) для некоторого
q, w)`∗(
q1, w1)
p, ε
), то будем говорить, что словоwп е р е в о д и т
`∗(
q2, w2) тогда и только тогда, когда
+
`
обозначается
M
q1, w1)
q1, w1)
n >
0. Через
`M, то есть (
`n(
q2, w2) для некоторого
`+(
q2, w2)
n >
состояние q в состояние p.
0.
Оп ределен ие 44.
п о з н а ё т (д о п у с к а е т , в о с п р и н и м а е т) слово
(
q0, w)`∗(
q, ε
) для некоторого
Конечный автомат
q ∈ F
. В противном случае автомат
M
= (Q,Σ
, δ, q0, F
w ∈
) р а с -
Σ∗, если
о т в е р г а е т слово w.
Язык, р а с п о з н а в а е м ы й ДКАM, — это множество всех
слов, распознаваемых автоматомM. Язык, распознаваемый автоматом M , обозначается L(M ).
ЯзыкLназывается а в т о м а т н ы м, если он распознаётся некоторым ДКА.
Таким образом, язык распознаваемый автоматомM, — это множество всех слов, переводящих начальное состояние в какое-нибудь
заключительное.
Как и для грамматик, вводится понятие эквивалентных автоматов.
Оп ределен ие 45.
ДКА
M1и
M2называются э к в и в а л е н т -
н ы м и, если L(M1) = L(M2).
Пр име р 20.
Рассмотрим конечный автоматM= (Q,Σ
, δ, q0, F
), в котором

§ 2.1. Детерминированные конечные автоматы 55
a b
нач, закл q0q1q
q1q2q
q2q3q
закл q3q1q
q4q4q
q
0
4
2
0
4
0
b
q
4
b
a
a, b
q
1
b
a
b
a
Рис. 2. Детерминированный конечный автомат из примера 2.
Q = {q0, q1, q2, q3, q4}, Σ = {a, b }, F = {q0, q3}, с программой
q0, a → q
q0, b → q
q1, a → q
q1, b → q
На рис. 2 показаны таблица и диаграмма этого автомата.
Рассмотрим работу автомата на слове
имеет вид
1
4
2
2
q2, a → q
q2, b → q
q3, a → q
q3, b → q
3
0
1
4
w1=
q4, a → q
q4, b → q
abaab
4
0
. Вычисление автомата
q
2
a
q
3
(q0, abaab) ` (q1, baab) ` (q2, aab) ` (q3, ab) ` (q1, b) ` (q2, ε),
поэтому (
q0, ababb)`5(
q2, ε
). Так как
q2/∈ F
, тоMотвергает слово
abaab
то есть abaab /∈ L(M).
Теперь рассмотрим слово w2= babaaa. Вычисление имеет вид
(q0, babaaa) ` (q4, abaaa) ` (q4, baaa) ` (q0, aaa) ` (q1, aa) ` (q2, a) ` (q3, ε),
поэтому (
q0, babaaa)`6(
q3, ε
). Так как
q3∈ F
, тоMраспознаёт слово
babaaa, то есть babaaa ∈ L(M ).
Функция переходов определена на множестве
Q ×
Σ. Её можно
продлить до функции, определённой на множестве Q × Σ∗.
,

56 Глава 2. Конечные автоматы и регулярные выражения
Оп ределен ие 46.
Σ
→ Q
на множество всех слов называется функция
П р о д о л ж е н и е м функции переходов
δ0: Q ×
δ : Q×
Σ∗→ Q
определённая следующим образом:
δ0(q, ε) = q для всех q ∈ Q,
δ0(q, wa) = δ(δ0(q, w), a) для всех q ∈ Q, w ∈ Σ∗, a ∈ Σ.
Если слово w состоит из одной буквы a, то
δ0(q, a) = δ(δ0(q, ε), a) = δ(q, a).
Поэтому
δ0действительно является продолжениемδ. Всюду далее
продолжение функцииδбудем обозначать той же буквойδ. Из определения отношения перехода и продолжения функции переходов сразу
получается простое следствие.
Ле мма 22.
Для любого слова
w ∈
Σ∗и любого состояния
q ∈ Q
имеет место (q, w) `∗(δ(q, w), ε).
Доказательство. Индукция по длине w.
Пр име р 21. Мы уже видели в примере 20, что
(q0, abaab) `5(q2, ε), (q0, babaaa) `6(q3, ε), (q4, ba) `2(q1, ε)
,
(последнее вычисление является частью вычисления на слове babaaa). По-
этому δ(q0, abaab) = q2, δ(q0, babaaa) = q3, δ(q4, ba) = q1.
Для каждого состоянияqопределим множество слов, переводящих
начальное состояние в q.
Оп ределен ие 47.
L(M, q) обозначается множество {w ∈ Σ∗: (q0, w) `
Если автомат ясен из контекста, то вместоL(
ПустьM= (Q,Σ
, δ, q0, F
) — ДКА,
∗
M
M, q
q ∈ Q
. Через
(q, ε) }.
) будем писать
простоL(q). Из определений 44 и 47 получаются простые следствия.
Сл едствие 23.
[
L(M) =
q∈F
Для любого ДКАM= (Q,Σ
L(M, q).
, δ, q0, F
) имеет место

§ 2.1. Детерминированные конечные автоматы 57
b a
a
q
0
q
b
1
b
q
2
a, b
a
q
3
Рис. 3. Конечный автомат для языка из примера 22.
Сл едствие 24.
Для любого ДКАMи любых состоянийpиqтаких,
что p 6= q, имеет место L(M, p) ∩L(M, q) = ∅.
Сл едствие 25.
состояний Q имеет место
Таким образом, множество{L(
Для любого ДКАMс алфавитом Σ и множеством
[
L(M, q) = Σ∗.
q∈Q
M, q
) :
q ∈ Q }
является разбиением
множества Σ∗.
Пусть нужно доказать, что ДКАMраспознаёт языкL. Общая
схема доказательства такова.
1) Для каждого состояния q определить язык L(M, q).
2)
Индукцией по длине словаwдоказать, что если
w ∈ L(M, q
то описанные условия выполняются. Фактически, требуется
проверить, что применение любой команды автомата сохраняет
описанные свойства. Поэтому число случаев, которые нужно
рассмотреть, равно |Σ| · |Q|.
[
3) Доказать, что L =
L(M, q).
q∈F
),
Пр име р 22. На рис. 3 изображён конечный автомат для языка
L = {w ∈ {a, b }∗: w содержит подслово aba }.
Для каждого состояния q определим язык L(q):
1) L(q0) ={w:
2) L(q1) = {w : w не содержит aba и заканчивается на a };
w не содержит aba и не заканчивается ни на a, ни на ab }
;

58 Глава 2. Конечные автоматы и регулярные выражения
3) L(q2) = {w : w не содержит aba и заканчивается на ab };
4) L(q3) = {w : w содержит aba }.
Докажем правильность этих описаний индукцией по длине слова.
Б а з и с и н д у к ц и и . Если
(
q0, ε
). Пустое слово не содержит
|w|
= 0, тоw=ε. По определению (
aba
и не заканчивается наa, так что
q0, ε)`
условия выполняются.
Ш а г и н д у к ц и и . Пусть для слов длиныnутверждение верно и
пусть
|w|=n
x ∈ { a, b }
+ 1. Это значит, чтоw=
w0x
, где
w0— слово длиныn,
. При работе на словеwавтомат сначала читает
w0и переходит
в некоторое состояниеq, а затем в состоянииqчитает символxсогласно
программе. Рассмотрим восемь возможных случаев.
1)
Пусть (
w0не содержит
(
q0, w0a)`∗(
w0не содержит
q0, w0)
q0, a)`(q1, ε
`∗(
q0, ε
) иx=a. По индукционному предположению
aba
и не заканчивается ни наa, ни наab. Тогда
). Словоw=
aba
и на конце также нет
w0a
не содержит
aba
aba(w0не заканчивается
, так как
наab). Ясно, что словоwзаканчивается наa, поэтому все условия
нашего утверждения про q1выполняются.
2)
Пусть (
Словоw=
w0не содержит
q0, w0)
w0b
`∗(
q0, ε
) иx=b. Тогда (
не содержит
aba
. Очевидно, чтоwне заканчивается наa(последний
aba
, так как последний символ не равенaи
q0, w0b)`∗(
q0, b)`(q0, ε
символ — b), так что все условия утверждения про q0выполняются.
3)
Пусть (
w0не содержит
(
q1, ε
q0, w0)
`∗(
q1, ε
) иx=a. По индукционному предположению
aba
и заканчивается наa. Тогда (
). Словоwне содержит
aba
, так как в
w0нет
q0, w0a)`∗(
aba
и вторая буква
q1, a)`
с конца в слове w равна a. Ясно, что w заканчивается на a.
4)
Пусть (
Словоwне содержит
q0, w0)
`∗(
q1, ε
) иx=b. Тогда (
aba
, так как
q0, w0b)`∗(
w0не содержит
q1, b)`(q2, ε
aba
и последняя
буква словаwравнаb. Словоwзаканчивается наab, так как
заканчивается на a и w = w0b.
Пусть (
5)
w0не содержит
(
q3, ε
q0, w0)
`∗(
). Поскольку
q2, ε
) иx=a. По индукционному предположению
aba
и заканчивается наab. Тогда (
w0заканчивается наab, то
q0, w0a)`∗(
w0a
содержит
q2, a)`
aba
на
конце.
0
).
).
0
w

§ 2.1. Детерминированные конечные автоматы 59
6)
Пусть (
Словоwне содержит
ется наb. Очевидно, чтоwне заканчивается ни наa, ни наab(оно
заканчивается на bb).
7)
Пусть (
w0содержит
так как это подслово содержится даже в w0.
8)
Случай (
q0, w0)
q0, w0)
q0, w0)
`∗(
`∗(
aba
. Тогда (
`∗(
q2, ε
) иx=b. Тогда (
aba
, так как
q3, ε
) иx=a. По индукционному предположению
q0, w0a)`∗(
q3, ε
) иx=bполностью аналогичен предыдущему.
w0не содержит
q0, w0b)`∗(
abaиw
q3, a)`(q3, ε).w
q2, b)`(q0, ε
заканчива-
содержит
aba
).
,
Итак, мы доказали, что описания языковL(
вильны. По условиюL=L(
ным состоянием, поэтому L(M ) = L.
q3). Но
q3является единственным заключитель-
q0),L(
q1),L(
q2),L(
q3) пра-
Теперь приведём пример более интересного с практической точки
зрения ДКА.
Пр име р 23.
следующий вид. Константа начинается на мантиссу, за которой может
следовать порядок, отделённый символомE. Мантисса может быть целым
числом, а может иметь дробную часть, отделённую точкой. При этом даже
при наличии точки целая или дробная часть может быть пустой (но не обе).
Порядок — это просто целое число. Как мантисса, так и порядок могут
иметь знак + или−. Конечный автомат для констант изображён на рис. 4.
Для сокращения записи десять цифр собраны в один столбец с меткой Ц, а
оба знака собраны в столбец с меткой З.
В состоянии
лом является знак, то автомат переходит в
Если автомат видит цифру, предшествующую точке, то он переходит в
состояние
видит точку, то его действие зависит от того, были ли цифры в целой
части. Если цифры были, то автомат переходит в
часть мантиссы (возможно, пустую). Если же целая часть пуста, то сначала
автомат переходит в состояние
этого он переходит в
он переходит в состояние
цифру порядка. Получив знак, автомат переходит в состояние
допустимым входным символом является уже только цифра. В состоянии
Пусть константы некоторого языка программирования имеют
q0автомат ожидает начало константы. Если первым симво-
q1и ожидает цифру или точку.
q2, в котором считывает целую часть мантиссы. Если автомат
q4и считывает дробную
q3, в котором ожидает цифру, и только после
q4. Если после мантиссы автомат видит символE, то
q5, в котором ожидает либо знак, либо первую
q6, в котором

60 Глава 2. Конечные автоматы и регулярные выражения
Ц . З E
нач q0q2q3q1e
q1q2q3e e
закл q2q2q4e q
5
q3q4e e e
закл q4q4e e q
5
q5q7e q6e
q6q7e e e
закл q7q7e e e
e e e e e
Рис. 4. Конечный автомат для констант.
q7автомат дочитывает оставшиеся цифры порядка. Наконец, состояние
соответствует всем словам, содержащим хотя бы одну ошибку.
Заключительные состояния автомата соответствуют случаям целого
числа без порядка (состояние
(состояние q4) и числа с порядком (состояние q7).
q2), числа с дробной частью без порядка
Следующий пример демонстрирует связь конечных автоматов с
цепями Маркова.
Пр име р 24.
вают последовательность выпадений орлов и решек. Если в получившейся
последовательности раньше встречается подслово ООО, то выигрывает
первый игрок, а если раньше встречается РОР — то второй игрок. Например, если выпадает последовательность, РРРООРООРООО, то выигрывает
первый игрок, а если выпадает последовательность РРООРООРОР — то
второй. Требуется определить вероятности выигрыша для каждого из игроков.
Построим конечный автомат, выполняющий поиск во входном слове
подслов ООО и РОР (рис. 5а). Для удобства состояния автомата обозначены
префиксами искомых подслов, а состояния, соответствующие обнаружению
подслова, обозначены номером победителя. Нетрудно проверить, что если
в словеwподслово ООО встречается раньше, чем РОР, тоwпереводит
Два игрока подбрасывают симметричную монету и записы-
e
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
