Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория автоматов и формальных языков. Учебник.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
§ 4.3. Минимизация ДКА 191
Доказательство. Эквивалентные состояния можно объединить в одно, но тогда автомат не является минимальным.
Сл едствие 100.
Минимальный автомат эквивалентный автомату
сnсостояниями иmвходными символами можно построить за время O(mn3).
Доказательство. При вычислении очередного отношения
≡
достаточно сравнить каждое состояние с каждым, то есть перебрать
n2пар состояний. Для каждой пары нужно перебрать все входные
символы, поэтому время вычисления одного отношения O(mn2). Так как число отношений
≡iне превосходит
≡iсоставляет
n −
1, то общее
время их вычисления составляет O(mn3).
При более эффективной реализации описанный алгоритм можно
выполнить за времяO(
mn2). Существует ещё более эффективный
метод минимизации — алгоритм Хопкрофта, позволяющий выполнить минимизацию автомата за время O(mn log2n).
Пр име р 70.
вычислим отношение ≡. Отношение ≡0задаёт два класса:
Первый из этих классов состоит из незаключительных состояний, а второй — из заключительных. Теперь найдём отношение яние
q0с остальными состояниями первого класса. Сначала рассмотрим
состояния первый класс (состояния
(состояние
ния
q0и
а по символуb— тоже в первый класс (состояние метим, что из транзитивности отношений эти два состояния можно не рассматривать отдельно. Теперь рассмотрим состояния класс ( состояния
(
q1), а из
q1), а из
Построим минимальный ДКА по ДКА на рис. 29а. Сначала
{q0, q1, q2, q3, q6}, {q4, q5}.
≡1. Сначала сравним состо-
q0и
q1. По символуaавтомат переходит из состояний
q3и
q1), а по символуb— тоже в первый класс
q1в обоих случаях), поэтому
q2. По символуaавтомат переходит в первый класс (состояние
q0и
q3. Так как по символуbавтомат переходит из
q3во второй класс (
q0и
q6. По символуbавтомат переходит из
q6— во второй класс (
q5), поэтому
q0≡1q1. Теперь рассмотрим состоя-
q1). Поэтому
≡iследует, что
q4), то
q06≡1q3. Далее рассмотрим
q06≡1q6. Итак, мы нашли один
q1≡1q2, поэтому
q0в первый класс
q0и
q0≡1q2. За-
q0в первый
q1в
q3),
i
192 Глава 4. Алгоритмические проблемы для регулярных языков
из классов эквивалентности по отношению с
q6и
q4с
q5, убеждаемся, что
таким же образом, находим отношения совпадают, то вычисление классов эквивалентных состояний завершено. Получаются следующие разбиения:
≡0: {q0, q1, q2, q3, q6}, {q4, q5};
≡1: {q0, q1, q2}, {q3, q6}, {q4, q5};
≡2: {q0, q2}, {q1}, {q3, q6}, {q4, q5};
≡3: {q0, q2}, {q1}, {q3, q6}, {q4, q5}.
Теперь построим минимальный автомат. Обозначим
Q0= {q0, q2}, Q1= {q1}, Q2= {q3, q6}, Q3= {q4, q5}.
Так как в исходном автомате есть команда
в новом автомате будет команда есть команда каждого класса достаточно рассмотреть только одно состояние, так как остальные состояния дадут такую же команду по теореме 96. Рассматривая остальные состояния, получаем минимальный автомат, показанный на рис. 29б.
q0, b → q1, то в новом автомате будет команда
q3≡1q6,
Q0, a → Q2. Так как в исходном автомате
≡1:
{q0, q1, q2}
q4≡1q5. Продолжая действовать
≡2и
≡3. Так как эти отношения
q0, a → q3,
. Сравнивая
q0∈ Q0,
q3∈ Q2, то
Q0, b → Q1. Для
q
Теперь мы докажем, что для любого регулярного языка минималь-
ный автомат является единственным (с точностью до изоморфизма).
3
Теорема 101.
Минимальные автоматы эквивалентны тогда и толь-
ко тогда, когда они изоморфны.
Доказательство. Очевидно, что изоморфные автоматы экви­валентны. Докажем справедливость обратного утверждения. Пусть
M1= (
автомата. Тогда минимальным. Кроме того, любое состояние из множеств достижимо из состояний не был бы минимальным. Пусть
0
качестве
Q1,Σ, δ1, q0, F1) и
6 i 6 n
выберем слово
w0выберем пустое слово. Запустим автомат
M2= (
|Q1|=|Q2|
q0и
wi, такое что (
Q2,Σ, δ2, p0, F2) — два минимальных
, иначе один из автоматов не был бы
Q1и
Q
p0соответственно, иначе автомат снова
Q1=
{q0, q1, . . . , qn}
q0, wi)
∗
`
M
. Для каждого
(
qi, ε
1
), при этом в
M2на каждом
2
§ 4.3. Минимизация ДКА 193
b
q
a, b
q
0
b
a
b
q
1
2
(а) Исходный ДКА
a
Q
0
Q
a
b
Q
1
a, b
(б) Минимальный ДКА
a
a
b
q
3
q
4
a
b
a
q
6
a
q
5
b
b
2
Q
3
b
a
Рис. 29. Минимизация конечного автомата.
194 Глава 4. Алгоритмические проблемы для регулярных языков
из слов
w0, w1, . . . , wn. Пусть (
обозначение томата
M2. Определим отображение
p0, wi)
p0согласуется с обозначением начального состояния ав-
∗
`
(
pi, ε
M
2
). Так как
w0=ε, то
f : Q1→ Q2следующим образом:
f(qi) = pi. Докажем, что f — изоморфизм автоматов M1и M2.
Отображениеfвзаимно-однозначно. Предположим противное:
пусть
i 6=j
, но
pi=
pj. Поскольку
qi6≡ qj, то существует слово
такое, что
∗
M
∗
M
1
(qf, ε),
(˜q, ε),
1
M1на словах
где
qf∈ F1,
(qi, u) `
(qj, u) `
˜q /∈ F1(или наоборот). Запустим автомат
wiu и wju. Получаем
(q0, wiu) `
(q0, wju) `
поэтому
wiu ∈ L(M1),
wju /∈ L(M1). Теперь запустим автомат
тех же словах. Прочитав
∗
M
∗
M
wiили
(qi, u) `
1
(qj, u) `
1
wj,
∗
(qf, ε),
M
1
∗
(˜q, ε),
M
1
M2перейдёт в состояние
M2на
pi=
pj,
а затем прочитает словоu. В обоих случаях он перейдёт в одно и то же состояние и либо воспримет, либо отвергнет оба слова. Но это противоречит эквивалентности автоматов M1и M2.
Отображениеfпереводит начальное состояние в начальное, то
есть f (q0) = p0. Это следует из того, что w0= ε.
Отображениеfсохраняет заключительные состояния, то есть
qi∈ F1тогда и только тогда, когда qi∈ F1,
эквивалентности автоматов
pi/∈ F2, то
wi∈ L(M1),
M1и
pi∈ F2. Действительно, если
wi/∈ L(M2), что противоречит
M2. Если же
qi/∈ F1,
pi∈ F2, то
wi/∈ L(M1), wi∈ L(M2). Снова получаем противоречие.
Наконец докажем, что
pi, a → pj∈ δ2для любого символа qj∈ δ
минимальный, то
,
pi, a → pk∈ δ2и при этом
1
pj6≡ pk. Следовательно, существует словоuтакое,
qi, a → qj∈ δ1тогда и только тогда, когда
a ∈
Σ. Предположим, что
j 6=k
. Так как автомат
qi, a →
M
u
2
§ 4.3. Минимизация ДКА 195
что
∗
M
∗
M
(pf, ε),
2
(˜p, ε)
2
wiau
и при этом
pf∈ F2,
(pj, u) `
(pk, u) `
˜p /∈ F2(либо наоборот). Рассмотрим слово
Запустим на нём автомат M2:
.
Автомат
(p0, wiau) `
∗
(pi, au) `
M
2
M2отвергает слово
(pk, u) `
M
2
wiau
, значит, в силу эквивалентности
∗
M
(˜p, ε).
2
его отвергает и автомат M1:
(q0, wiau) `
где
˜q /∈ F1. Теперь рассмотрим слово
∗
(qi, au) `
M
1
M
1
(qj, u) `
wju
∗
(˜q, ε),
M
1
. Запустим на этом слове
оба автомата. Получится
Итак,
(q0, wju) `
(p0, wju) `
wju /∈ L(M1),
∗
(qj, u) `
M
1
∗
(pj, u) `
M
2
wju ∈ L(M2). Это противоречит тому, что ав-
∗
M
∗
M
1
(˜q, ε),
(pf, ε).
2
томаты эквивалентны. Следовательно, предположение неверно и
qi, a → qj∈ δ1тогда и только тогда, когда pi, a → pj∈ δ2.
Задачи
164.
Докажите, что отношения≡и
165.
Для автоматов, изображённых на рис. 30, постройте эквивалентные им
минимальные автоматы.
166.
Для следующих языков постройте ДКА с помощью умножения автоматов
(теорема 28) и преобразуйте их в минимальные:
(а) L1= { w ∈ { a, b }∗: |w|aчётно, |w|bнечётно };
(б) L2= { w ∈ { a, b }∗: w не содержит ни aba, ни aab };
(в) L3= { w ∈ { a, b }∗: w содержит подслово baa и не заканчивается на aab }.
167.
Докажите, что для любого
которого ≡
168.
Докажите, что для любых
состояниями, для которого ≡
n−3
6= ≡
n−2
.
≡iявляются отношениями эквивалентности.
n >
3 существует ДКА сnсостояниями, для
n >
3 и 1
6= ≡k, но ≡k= ≡
k−1
6 k 6 n −
k+1
2 существует ДКА с
.
n
196 Глава 4. Алгоритмические проблемы для регулярных языков
a
q
0
b
b
q
2
q
1
a
a
q
5
a
q
1
a
b
b
q
4
q
3
b
a
a
b
q
6
a, b
b
q
3
a
b
q
0
a
b
b
q
5
a
b
a
q
2
b
q
4
a
a
q
a
q
a
0
b
1
q
3
a, b
b
q
5
a
b
q
b
2
b
q
4
a
Рис. 30. Конечные автоматы из задачи 165.
§ 4.4. Проверка эквивалентности ДКА 197
§ 4.4. Проверка эквивалентности ДКА
Мы уже видели, что алгоритм, основанный на умножении ДКА,
решает проблему эквивалентности за времяO( число состояний,m— размер входного алфавита. Если воспользовать­ся алгоритмом Хопкрофта для минимизации, то эту оценку можно улучшить доO(
mn log2n
). В этом параграфе мы опишем ещё более
эффективный алгоритм. Напомним, что ф у н к ц и я А к к е р м а н а определяется следующими рекуррентными соотношениями:
A(0, y) = y + 1,
A(x + 1,0) = A(x, 1),
A(x + 1,y + 1) = A(x, A(x + 1,y)).
Определим обратную функцию α как
α(n) = min{k : A(k, k) > n }.
mn2), гдеn— общее
Эта функция растёт чрезвычайно медленно. Например, для всех
n 6
65536
2
2
2
−
3 выполняется неравенствоα(n)64. Мы опишем алгоритм, который проверяет эквивалентность двух ДКА за время O(mnα(n)).
В алгоритме используется структура данных для работы с непе-
ресекающимися множествами. Операция
НАЙТИ(x
) возвращает но­мер того множества, которому принадлежит элементx. Операция ОБЪЕДИНИТЬ(i, j, k
) объединяет два множества с номерамиiи в множество с номеромk, при этом обязательноk=iилиk=j. В результате выполнения этой операции множество с номером не равнымk«исчезает», а все его элементы добавляются в множество с номеромk. Если изначально имеетсяnмножеств, содержащих по одному элементу каждое, тоnопераций объединения и поиска можно выполнить за времяO(nα(n)). Для этого нужно использовать пред­ставление множеств в виде деревьев со сжатием путей (описание этой структуры данных можно найти в [2]).
j
198 Глава 4. Алгоритмические проблемы для регулярных языков
Напомним, что состоянияqиpназываются эквивалентными (обо­значается в заключительные или незаключительные состояния. Это определе­ние применимо и к состояниям разных автоматов.
Алгоритм проверки эквивалентности ДКА приведён на рис. 31. Алгоритм предполагает, что начальные состояния автоматов эквива­лентны, и вычисляет новые пары эквивалентных состояний до тех пор, пока это возможно. В результате множество на классы попарно эквивалентных состояний. Если в итоге оказывает­ся, что в построенном разбиении никакое заключительное состояние не эквивалентно незаключительному, то предположение было верно и q0≡ p0, в противном случае q06≡ p0.
В алгоритме используется список пар состоянийSи система классов состоянийA. Пара ( предполагает, чтоqиpэквивалентны. Классы системыAсоответ­ствуют множествам состояний, для которых алгоритм уже установил эквивалентность. На этапе инициализации (строки 1–5) вSпоме­щается только пара начальных состояний ( проверить именно условие содержит единственное состояние, так как никакая эквивалентность пока не установлена. Основные вычисления проводятся в цикле в строках 6–16. На очередной итерации алгоритм извлекает из списка
S
очередную пару состояний ( надлежат эти состояния. Если они находятся в одном классе, то их эквивалентность была установлена ранее, поэтому алгоритм перехо­дит к следующей итерации. Если же они находятся в разных классах, то выполняются следующие действия. Сначала алгоритм объединяет два класса в один, так как отношение≡транзитивно, а значит, все состояния обоих классов попарно эквивалентны. Затем алгоритм пе­ребирает все входные символы и для каждого
(
δ1(
q, a), δ2(
q и p следует эквивалентность состояний δ1(q, a) и δ2(p, a). Заметим,
q ≡ p
), если любое слово
q0≡ p0. Каждое множество системы
p, a
)) в списокS, так как из эквивалентности состояний
w ∈
Σ∗переводит их одновременно
Q1∪Q2разбивается
q, p
) попадает в список, если алгоритм
q0, p0), так как требуется
q, p
) и находит классы, которым при-
a ∈
Σ добавляет пару
A
§ 4.4. Проверка эквивалентности ДКА 199
Algorithm ЭквивалентностьДКА Input: M1= (Q1, Σ, δ1, q0, F1) и M2= (Q2, Σ, δ2, p0, F2) — ДКА. Output: «да», если L(M1) = L(M2),
«нет», если L(M1) 6= L(M2).
1: S = (q 2: A = ∅; 3: for all q ∈ Q 4: A = A ∪ {{q }}; 5: end for 6: while существует пара (q, p) ∈ S do 7: S = S \ {(q, p) }; 8: i = НАЙТИ(q); 9: j = НАЙТИ(p);
10: if i 6= j then 11: ОБЪЕДИНИТЬ(i, j, i); 12: for all a ∈ Σ do 13: S = S ∪ {(δ 14: end for 15: end if 16: end while 17: if некоторое множество B ∈ A содержит
, p0);
0
∪ Q2do
1
(q, a), δ2(p, a)) };
1
заключительные и незаключительные состояния then
18: return «нет»; 19: else 20: return «да»; 21: end if
Рис. 31. Алгоритм для проверки эквивалентности двух ДКА.
200 Глава 4. Алгоритмические проблемы для регулярных языков
что алгоритм не проверяет список на наличие такой пары, поэтому список может содержать кратные элементы. Так как число состояний конечно, то операция объединения классов выполняется конечное число раз, а значит, цикл обязательно останавливается. После этого алгоритм проверяет полученные классы на наличие противоречий. Ясно, что никакое заключительное состояние не может быть экви­валентно незаключительному. Если хотя бы один класс содержит и заключительные, и незаключительные состояния, то предположе­ние
q0≡ p0было неверно, поэтому алгоритм возвращает «нет». В
противном случае он возвращает «да».
Перейдём к доказательству правильности алгоритма. Можно счи-
тать, что
Q1∩ Q2=∅, так как в противном случае можно переиме-
новать состояния одного из автоматов. Определим функциюδна множестве (Q1∪ Q2) ×Σ следующим образом:
(
δ(q, a) =
δ1(q, a), если q ∈ Q1, δ2(q, a), если q ∈ Q2.
Мы уже использовали понятие правоинвариантного отношения на множестве слов. Определим аналогичное понятие для множества состояний.
Оп ределен ие 81.
ОтношениеRна множестве состояний
Q1∪Q
2
называется п р а в о и н в а р и а н т н ы м, если для любых состоя­ний
q, p ∈ Q1∪ Q2и любого символа
a ∈
Σ из (
q, p)∈ R
следует
(δ(q, a), δ(p, a)) ∈ R.
Если отношениеRправоинвариантно, то для любого словаwиз
(
q, p)∈ R
следует (δ(
q, w), δ(p, w))∈ R
. Это доказывается непосред-
ственной индукцией по длине w.
Оп ределен ие 82.
алгоритма. Последовательность состояний ( с о е д и н я ю щ е й , если для любого 1
Зафиксируем некоторый момент в выполнении
q1, q2, . . . , qr) называется
6 i 6 r −
1 и для любого
символа a выполняется одно из двух условий:
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]