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

Алгоритмические проблемы для регулярных языков 171

Глава 4
Алгоритмические проблемы
для регулярных языков
§ 4.1. Алгоритмические проблемы для конечных автоматов
Рассмотрим основные «естественные» алгоритмические проблемы, связанные с конечными автоматами. Во всех проблемах мы будем считать, что на вход подаются ДКА. Поскольку разные способы задания регулярных языков допускают взаимное преобразование, то такое ограничение никак не повлияет на разрешимость проблем. Однако следует учесть, что разные представления регулярного языка могут существенно различаться по размеру (как, например, НКА и ДКА). Поэтому выбор представление языка может повлиять на сложность задачи.
В качестве модели вычислений мы выберем машины с произволь­ным доступом к памяти (см. [2]). Мы будем предполагать, что все ДКА заданы в виде таблицы, то есть в виде двумерного массива. При оценке времени мы будем придерживаться стандартного предположе­ния, что любое используемое число хранится в одной переменной и
172 Глава 4. Алгоритмические проблемы для регулярных языков
обрабатывается за времяO(1). Также мы считаем, что обращение к ячейке массива по её индексам требует времениO(1). Если, например, по состоянию ратиться к клетке двумерного массива с индексамиiиj. При нашем предположении такая операция выполняется за время O(1).
Первой проблемой, которую мы рассмотрим, будет п р о б л е м а п у с т о т ы . Вход: ДКА M = (Q, Σ, δ, q0, F ). Вопрос: L(M ) = ∅?
qiи символу
ajнужно найтиδ(
qi, aj), то требуется об-
Теорема 79.
за время O(mn), где m = |Σ|, n = |Q|.
Доказательство. Построим по автоматуMего диаграммуD=
(
Q, E
). Тогда языкL(M) пуст тогда и только тогда, когда в графе нет пути из вершины графе можно проверить с помощью обхода в глубину или в ширину за времяO( работы алгоритма составляет O(mn).
Этот же алгоритм применим и для НКА и имеет временн´ую слож-
ностьO(
mn
ски, в обоих случаях получились алгоритмы линейной сложности, так как их время работы пропорционально размеру таблицы автомата (с учётом содержимого клеток).
Вход: ДКА M = (Q, Σ, δ, q0, F ). Вопрос: бесконечен ли язык L(M)?
Теорема 80.
решима за время O(mn), где m = |Σ|, n = |Q|.
Доказательство. Построим по автомату
(
Q, E
D
n2m
рёбер, поэтому общее число рёбер не превосходит
Теперь рассмотрим п р о б л е м у б е с к о н е ч н о с т и.
). ЯзыкL(M) бесконечен тогда и только тогда, когда в графе
есть путь, ведущий из начального состояния в заключительное
Проблема пустоты для регулярных языков разрешима
q0ни в какую вершину изF. Наличие пути в
|Q|+|E|
). В диаграмме НКА из одной вершины может выходить
Проблема бесконечности для регулярных языков раз-
). Число рёбер вDравно
mn
, поэтому время
n2m
. Фактиче-
M
диаграмму
D
D
=
§ 4.1. Алгоритмические проблемы для конечных автоматов 173
и содержащий цикл. Этот цикл можно найти следующим образом. Сначала удалим изDвсе вершины, недостижимые из
q0, а также все
вершины, из которых недостижимо никакое заключительное состоя­ние. Это можно сделать за времяO(mn) с помощью обхода графа в глубину. После этого нужно проверить наличие цикла в оставшемся графе. Это также выполняется с помощью обхода в глубину за время O(mn).
Одной из основных проблем как с теоретической, так и с практи­ческой точки зрения является п р о б л е м а п р и н а д л е ж н о с т и. Вход: ДКА M = (Q, Σ, δ, q0, F ), слово w. Вопрос: w ∈ L(M)?
Теорема 81.
Проблема принадлежности для регулярных языков
разрешима за время O(n), где n = |w|.
Доказательство. Нужно запустить автомат
M
на словеwи проверить, попадёт ли он в заключительное состояние. Каждый шаг автомата выполняется за времяO(1), так как требуется просто найти нужную клетку двумерного массива, поэтому общее время работы алгоритма составляет O(n).
При наших предположениях о работе с массивами оказалось, что время алгоритма не зависит от размера автомата. Если программа автомата представлена не в виде массива, а в виде динамической структуры (списка, дерева и т.п.), то при оценке времени нужно учесть стоимость поиска команды с нужной левой частью.
Если язык задаётся недетерминированным конечным автоматом, то сложность распознавания увеличивается. Простейший алгоритм состоит в том, чтобы построить по входному автомату эквивалентный ему ДКА и запустить получившийся автомат на словеw. Однако детерминизация автомата приводит к экспоненциальному увеличению числа состояний. Поэтому такой алгоритм имеет сложностьO(2
|w|
). В параграфе 4.2 мы приведём более эффективный алгоритм,
|Q|
имеющий временн´ую сложность O(|Q||w|).
+
174 Глава 4. Алгоритмические проблемы для регулярных языков
За меч ани е 4.
рассмотрели наиболее общий из них, когда на вход подаётся как автомат, так и слово. В другом варианте автомат фиксирован, поэтому его размер является константой. Такой вариант проблемы будет разрешим за линейное время и для НКА.
Существует два варианта проблемы принадлежности. Мы
Теперь рассмотрим проблемы, в которых требуется проверить некоторое отношение между двумя языками. Первая из них — п р о ­б л е м а в к л ю ч е н и я . Вход: ДКА M1= (Q1, Σ, δ1, q
1
, F1) и M2= (Q2, Σ, δ2, q
0
2
, F2).
0
Вопрос: L(M1) ⊆ L(M2)?
Теорема 82.
Проблема включения для регулярных языков разре-
шима за время O(mn1n2), где n1= |Q1|, n2= |Q2|, m = |Σ|.
Доказательство.L(
L(M1)\L(
M2) =∅. По теореме 28 автомат для языкаL(
строится эффективно по автоматам
M1)
⊆ L(M2) тогда и только тогда, когда
M1)\L(
M1и
M2, поэтому проблема вклю-
M2)
чения сводится к проблеме пустоты. Автомат для произведения имеет
n1n2состояний и строится за времяO(
mn1n2). Проверка пустоты
также может быть выполнена за время O(mn1n2).
Следующей проблемой является п р о б л е м а э к в и в а л е н т н о ­с т и. Вход: ДКА M1= (Q1, Σ, δ1, q
1
, F1) и M2= (Q2, Σ, δ2, q
0
2
, F2).
0
Вопрос: L(M1) = L(M2)?
Теорема 83.
Проблема эквивалентности для регулярных языков
разрешима за время O(mn1n2), где n1= |Q1|, n2= |Q2|, m = |Σ|.
Доказательство. Эта проблема сводится к предыдущей, так какL(
M1) =L(
M2) тогда и только тогда, когдаL(
M1)
⊆ L(M2) и
L(M2) ⊆ L(M1). Время работы остаётся таким же.
Можно предложить и другой алгоритм для проблемы эквивалент­ности: построить по автоматам
M1и
M2минимальные автоматы и
проверить, изоморфны ли они (см. задачу 176). В параграфе 4.4 мы приведём для этой задачи алгоритм «почти» линейной сложности.
§ 4.1. Алгоритмические проблемы для конечных автоматов 175
Частным случаем проблемы эквивалентности является п р о б л е ­м а т о т а л ь н о с т и . Вход: ДКА M = (Q, Σ, δ, q0, F ). Вопрос: распознаёт ли автомат M все слова?
Теорема 84.
Проблема тотальности для регулярных языков разре-
шима за время O(mn), где n = |Q|, m = |Σ|.
Доказательство. Эта проблема является частным случаем про­блемы эквивалентности. В качестве а в качестве ми
q0, a → q0для всех
M2— автомат
a ∈
M2= (
Σ. Так как
M1нужно взять автоматM,
{q0},Σ, δ, q0, {q0}
|Q2|
= 1, то время работы
) с команда-
составляет O(mn).
Если язык задан НКА или регулярным выражением, то проблема тотальности становится
PSPACE
-полной в случае алфавита, содер-
жащего хотя бы два символа. Мы докажем это в параграфе 4.5.
Теорема о разрешимости проблемы эквивалентности не перено­сится на конечные преобразователи.
Теорема 85.
образователюS= (Q,Σ,∆
Не существует алгоритма, который по конечному пре-
, δ, q0, F
) определял бы, вычисляет ли
S
отношение Σ∗× ∆∗.
Доказательство. ПустьC={( соответствий Поста в алфавите ∆, в которой все слова сты. В качестве Σ возьмём алфавит Σ =
x1, y1)
, . . . ,(xn, yn)}— система
{a1, . . . , an}
. Мы построим
xi,
yiнепу-
конечный преобразователь S, вычисляющий отношение
R = { (a
ЕслиCимеет решение ( Поэтому (
x
. . . x
i
1
a
и
i
k
решений, то для любого слова
x
i
1
. . . x
6=y
i
k
i
1
. . . a
i
1
w 6=y
. . . y
i
1
. . . a
, w) : w 6= x
i
k
x
, y
i
1
, x
. . . x
i
i
i
1
k
i
1
. . . y
не выполняется. Наоборот, еслиCне имеет
i
k
, поэтому любое словоwотлично хотя бы от
i
k
)
i
1
)
k
i
1
, . . . ,(x
/∈ R
, так как ни одно из условий
a
i
1
одного из этих слов. Итак, система
. . . x
. . . a
или w 6= y
i
k
, y
), то
i
i
k
k
выполняется неравенство
i
k
C
не имеет решений тогда и
. . . y
i
1
x
. . . x
i
i
1
k
=
}.
i
k
y
. . . y
w 6
i
=
.
k
i
1
176 Глава 4. Алгоритмические проблемы для регулярных языков
только тогда, когда R = Σ∗× ∆∗.
Перейдём к описанию преобразователяS. Начальным состоянием преобразователя является
q0, а заключительными —
q0,
q3,
q4и
q5. В
программу автомата включим две команды для начального состояния:
q0, ε → q1, ε, q0, ε → q2, ε.
Для каждого слова
xi=
b
i,1bi,2
. . . b
включим в программу следу-
i,m
i
ющие команды:
q1, ai→ q
x
q
, ε → q
i,j
x
q
, ε → q1, b
i,m
i
x
q
, ε → q3, ε для всех 1 6 j 6 mi,
i,j
x
q
, ε → q4, b для всех 1 6 j 6 mi, b ∈ ∆ \{b
i,j
Аналогично, для каждого слова
x
, ε,
i,1
x
i,j+1
, b
для всех 1 6 j 6 mi− 1,
i,j
,
i,m
i
yi=
b
i,1bi,2
. . . b
грамму следующие команды:
q2, ai→ q
y
q
, ε → q
i,j
y
q
, ε → q2, b
i,m
i
y
q
, ε → q3, ε для всех 1 6 j 6 mi,
i,j
y
q
, ε → q4, b для всех 1 6 j 6 mi, b ∈ ∆ \{b
i,j
y
, ε,
i,1
y
i,j+1
, b
для всех 1 6 j 6 mi− 1,
i,j
,
i,m
i
Наконец, для всех a ∈ Σ, b ∈ ∆ добавим команды
q1, ε → q5, b q4, a → q4, ε q2, ε → q5, b q4, ε → q4, b q3, a → q3, ε q5, ε → q5, b
}.
i,j
включим в про-
i,m
i
}.
i,j
Преобразователь получает на вход слово ющее последовательность номеров пар изC. В состоянии
a
a
. . . a
i
i
1
2
, представля-
i
k
q0преоб-
разователь выбирает, будет ли он печатать слово, не совпадающее с
x
x
. . . x
i
i
1
2
i
k
или с
y
y
. . . y
i
i
1
2
. В первом случае он переходит в
i
k
§ 4.1. Алгоритмические проблемы для конечных автоматов 177
состояние зователь сначала выдаёт последовательность слов ветствующую входному слову. В состоянии символ
x
q
, q
i,1
результате он возвращается в
q1, во втором — в
aiи переходит в состояние
x
i,2
, . . . , q
x
, q1и посимвольно печатает слово
i,m
i
q2. Оказавшись в состоянии
q1, преобра-
x
, x
i
i
1
2
, . . .
, соот-
q1он считывает входной
x
q
. ДалееSпроходит состояния
i,1
b
i,1bi,2
. . . b
i,m
q1и готовится читать следующий сим-
i
. В
вол. Через несколько таких циклов преобразователь печатает выход, не соответствующий входному символу. Есть три варианта, почему выходное словоwможет не соответствовать входной последователь­ности.
1)
Длина словаwменьше длины слова слишком короткое. В этом случае в любом из состояний преобразователь может перейти в состояние редной символ. После этого он дочитывает вход в состоянии
x
x
. . . x
i
i
1
2
, то есть
i
k
q3, не печатая оче-
q
w
x
i,j
q3,
не выдавая новых символов.
2)
Длина словаwбольше длины слова
x
x
. . . x
i
i
1
2
, то есть
i
k
w
слишком длинное. В этом случае преобразователь, не читая очередной символ, переходит в состояние вольный символ. В состоянии
q5он не читает новых символов
q5и печатает произ-
и выдаёт произвольное слово.
3)
Словаwи
x
x
. . . x
i
i
1
2
различаются символом, стоящим на
i
k
одной и той же позиции. В этом случае преобразователь в со­стоянии переходит в состояние
x
q
печатает любой символ, не совпадающий с
i,j
q4, в котором он читает и пишет произ-
вольные слова.
Если первым шагом преобразователь переходит не в работает аналогично, только вместо слов
Пр име р 68.
ный по системе соответствий Поста C = {(ab, bba) }.
На рис. 68 изображён конечный преобразователь, построен-
xiиспользуются слова
q1, а в
b
, и
i,j
q2, то он
yi.
178 Глава 4. Алгоритмические проблемы для регулярных языков
ε, b
q
ε, ε
1, ε ε, a
1
ε, a ε, b
ε, a
q
0
ε, b
q
1, ε
5
ε, a
ε, ε
ε, b
q
2
1, ε
ε, ε
ε, ε
q
x
q
1,1
ε, ε
q
3
ε, ε
ε, ε
y
1,1
ε, b ε, b
ε, a
q
ε, b
y 1,2
q
q
ε, a
x
1,2
4
ε, a
ε, b
q
1, ε ε, a ε, b
y 1,3
ε, a
Рис. 26. Конечный преобразователь из примера 68.
Сл едствие 86.
Проблема эквивалентности для конечных преобра-
зователей неразрешима.
Доказательство. Преобразователь с входным алфавитом Σ и выходным алфавитом ∆ вычисляет отношение Σ∗×
∆∗тогда и только
тогда, когда он эквивалентен преобразователю
S = ({q0}, Σ, ∆, δ2, q0, {q0})
с программой
q0, a → q0, ε для всех a ∈ Σ,
q0, ε → q0, b для всех b ∈ ∆.
Сл едствие 87.
Не существует алгоритма, который по конечному преобразователю строил бы эквивалентный ему конечный преобразо­ватель с наименьшим возможным числом состояний.
§ 4.1. Алгоритмические проблемы для конечных автоматов 179
Доказательство. Преобразователь с входным алфавитом Σ и выходным алфавитом ∆ вычисляет отношение Σ∗×
∆∗тогда и только
тогда, когда эквивалентным минимальным преобразователем для него является S из предыдущего следствия.
В приведённом доказательстве существенным было использование пустых слов в командах. Можно доказать, что проблема эквивалент­ности преобразователей остаётся неразрешимой, даже если|Σ|= 2,
|∆|
= 1, а все команды имеют вид
q, a → p, v
, где
a ∈Σ,v ∈
∆+. Су-
щественной для доказательства является недетерминированность пре­образователей. Для детерминированных конечных преобразователей проблема эквивалентности разрешима. Мы докажем этот результат в параграфе 8.1 с использованием алгоритмов для КС-грамматик.
Задачи
150. Пусть M — ДКА с n состояниями. Докажите, что:
(а)
языкL(M) непуст тогда и только тогда, когдаMраспознаёт некоторое слово длины не более n;
(б)
языкL(M) бесконечен тогда и только тогда, когдаMраспознаёт некоторое слово w такое, что n 6 |w| 6 2n.
151.
Предложите алгоритм, который по регулярному выражениюrпроверяет,
пуст ли язык L(r), не используя конечные автоматы. Оцените его сложность.
152. Докажите разрешимость следующих проблем:
(а) по ДКА M и слову w определить, содержит ли L(M) какое-нибудь слово,
содержащее подслово w;
(б)
по ДКАMопределить, содержит лиL(M) какое-нибудь слово, длина которого является простым числом;
(в)
по двум ДКА обоими автоматами;
(г)
по набору ДКА ляется ли набор языковL(
Σ∗;
(д)
по двум ДКА какие-нибудь два слова с общим префиксом длины не менее n.
M1и
M2определить, существует ли словоw, распознаваемое
M1, M2, . . . , Mnс входным алфавитом Σ определить, яв-
M1)
M1,
M2и числу
, L(M2)
n >
, . . . , L(Mn) разбиением множества
0 определить, распознают ли
M1и
M
2
180 Глава 4. Алгоритмические проблемы для регулярных языков
153.
Докажите, что следующая проблема разрешима: по ДКАMопределить,
существует ли регулярный язык L такой, что L∗= L(M).
154.
Докажите, что следующая проблема разрешима: по двум ДКА
определить, существует ли регулярный языкLтакой, чтоL(
155.
Докажите, что следующая проблема разрешима: по двум конечным преоб-
разователям S1(x) = S2(y).
156.
Докажите, что следующая проблема разрешима: по конечному преобразова-
телю S и словам x, y проверить условие (x, y) ∈ R(S).
157.
Докажите, что следующая проблема неразрешима: по двум детерминиро­ванным конечным преобразователям слово w такое, что S1(w) = S2(w).
158.
Пусть Σ — произвольный алфавит, Σ0= Для слова каждого символа на «двойника» со штрихом. Пустьϕиψ— проекции алфавита
Σ∪Σ0на Σ и Σ0соответственно. Докажите, что следующая проблема неразрешима:
по ДКАMс входным алфавитом Σ∪Σ0определить, существует ли слово такое, что ϕ(w)0= ψ(w).
S1и
S2определить, существуют ли входные словаxиyтакие, что
S1и
S2определить, существует ли входное
{ a0:
a ∈Σ}
w ∈
Σ∗обозначим через
w0слово, которое получается изwзаменой
M1)
— алфавит «двойников».
M1и
· L=L(M2)
w ∈ L(M
M
· L
§ 4.2. Моделирование НКА
2
.
)
В этом параграфе мы опишем эффективный алгоритм, который по НКАMи словуwопределяет, распознаёт лиMэто слово. Алго­ритм неявно использует конструкции из доказательства теорем 30 и 31. В алгоритме используются множества состояния, достижимые из помещает в
S0начальное состояние
состояния, достижимые из
q0по слову
q0. Затем он добавляет в
q0поε-переходам. Для поиска таких со-
Si, в которых хранятся
a1. . . ai. Сначала алгоритм
S0все
стояний используется стандартный алгоритм обхода графа в ширину. Когда множество при чтении символа автомат мог попасть из выполняет обход поε-переходам, считывает символ
S0построено, алгоритм моделирует шаг автомата
a1. Он помещает в
S0, выполнив
S1все состояния, в которые
a1-такт. Далее алгоритм снова
a2и т.д. Автомат
распознаёт слово тогда и только тогда, когда в последнем множе­стве есть хотя бы одно заключительное состояние. Полный алгоритм
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]