Дискретная математика и теория алгоритмов. Учебное пособие
.pdf§ 9. Детерминированные конечные автоматы |
51 |
|
|
всех слов чётной длины, содержащих букву , — с помощью операции пересечения
({ }*{ }{ , }*) ∩ { , , , }*.
Язык всех слов чётной длины, содержащих букву , можно получить и другим способом, а именно как язык { }*{ , , }{ , , , }*.
Упражнения
1.С помощью введённых выше операций над языками выразить следующие формальные языки в алвафите = { , }:
(а)язык всех слов, содержащих не более трёх символов ;
(б)язык всех слов, количество вхождений символа в которые кратно трём;
(в) язык всех слов, имеющих ровно одно вхождение подслова .
2.Доказать следующие равенства языков в алфавите = { , }:
(а){ , }* = { }*({ }{ }*)*;
(б){ } { }{ , }*{ , } = { , }*;
(в)({ } { }{ }*{ })({ }{ }*{ })*{ } = { } ({ } { })({ } { })*{ }.
§9. Детерминированные конечные автоматы
Конечные автоматы относятся к классу словарных алгоритмов. С помощью конечных автоматов можно решать задачи из достаточно широкого семейства алгоритмических проблем. Например, технология проектирования микросхем основана на результатах теории автоматов. Другой пример — это компиляторы, перерабатывающие текст программы, написанной на языке программирования высокого уровня, в программу на машинном языке. Работа любого такого компилятора состоит из двух стадий. Первая стадия — лексический анализ текста, который реализуется с помощью определённого конечного автомата. Вторая стадия — синтаксический анализ, который осуществляется с помощью автомата с магазинной памятью. Однако, как будет видно позднее, не любая алгоритмическая задача поддаётся решению с помощью конечного автомата.
Дадим сначала неформальное определение конечных автоматов и описание их работы.
|
|
Процессор: |
|
|
Шаг работы |
|
|
|
Процессор: |
|
|
|
Следующий |
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
автомата |
HH |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
шаг |
HH |
|
|
|
Состояние: |
|
|
|
|
|
|
|
|
Состояние: |
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
3 = ( 2, 3) |
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
|
A |
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
|
A |
|
|
|
|
|
|
||||||||||||||
1 |
|
2 |
|
3 |
4 |
. . . |
|
|
|
|
1 |
2 |
|
3 |
|
4 |
. . . |
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Входная лента |
|
|
|
|
|
Входная лента |
|
|
|
|
|
|
|||||||||||||||||||||
Входными данными любого конечного автомата являются слова в некотором заранее фиксированном алфавите, а выходными — две логические константы true и false. В каждый момент времени автомат находится в определённом внутреннем
52 |
Глава III. Конечные автоматы и формальные грамматики |
|
|
состоянии. Число состояний автомата конечно. В начальный момент времени автомат находится в начальном состоянии. Кроме этого, некоторые состояния автомата считаются выделенными. Входное слово записывается на входной ленте, разбитой на ячейки: в каждой ячейке содержится одна буква слова. Автомат связан с лентой посредством специальной управляющей головки, которая последовательно считывает символы из ячеек, двигаясь слева направо. Очередной считанный символ отправляется в процессор, определяющий по текущему состоянию и по данному считанному символу новое состояние, в которое переводится автомат. Функция, вычисляющая это новое состояние, называется функцией перехода. Функция перехода расположена внутри процессора и не изменяется в ходе вычислений. Считав все символы слова, автомат останавливается в определённом состоянии: если это состояние оказывается выделенным, то на выход подаётся константа true — автомат распознал слово, в противном случае подается константа false — автомат не распознал слово.
Отличительной чертой конечных автоматов является отсутствие памяти вне процессора, т. е. вся память автомата занята программой. Эта особенность позволяет пролить свет на причины неспособности конечных автоматов решить любую алгоритмически разрешимую задачу (для алгоритмов определённого вида необходима дополнительная память).
Теперь перейдём к формальным определениям в терминах теории множеств.
Определение. Детерминированным конечным автоматом (сокращённо д.к.а.) называется упорядоченная пятёрка A = , , , 0, , состоящая из следующих объектов:
(а) = { 0, . . . , } — конечный алфавит внутренних состояний автомата;
(б) = { 0, . . . , } — конечный входной алфавит автомата;
(в): × → — функция перехода ;
(г)0 — начальное состояние ;
(д) — множество выделенных (конечных) состояний .
Графическое изображение детерминированных автоматов
Автоматы удобно изображать в виде ориентированных графов с помеченными
дугами,H i используя следующие геометрическиеdi— выделенноефигуры:состояние;i—— промежуточноеначальное состояние;состояние; H di
— одновременносостояние; начальное и выделенное i - i— такая дуга присутствует в автомате, если значение функции
i′ перехода ( , ) = ′;
— такая петля присутствует в автомате, если значение функции
перехода ( , ) = .
Пример. Например, автомат A = , , , 0, , где = { , }, = { 0, 1, 2},= { 2}, а функция перехода задаётся соотношениями
( 0, ) = 0, |
( 1, ) = 0, |
( 2, ) = 2, |
( 0, ) = 1, |
( 1, ) = 2, |
( 2, ) = 2, |
§ 9. Детерминированные конечные автоматы |
53 |
||||||
имеет следующее графическое изображение: |
- |
|
|
|
|||
H ? |
s |
|
|
|
|
|
|
|
|
i |
|
|
id |
|
|
i |
|
|
|
|
|||
0k |
1 |
|
|
2 |
, |
|
|
Определение. Путём в детерминированном конечном автомате A = , , , 0, назовём любую конечную последовательность 0, 1, 1, . . . , , , где 0, . . . , ,
1, . . . , и ( , +1) = +1 для всех < . Если 0, 1, 1, . . . , , — путь в автомате, то будем обозначать его через
1 |
2 |
|
0 −→ 1 |
−→ . . . −→ |
|
и говорить, что слово = 1 2 . . . читается вдоль дуг данного пути. В частно-
сти, пустое слово читается вдоль пути 0 , состоящего из одного состояния и не содержащего ни одной дуги.
Определение. Пусть A = , , , 0, — д.к.а. Расширим функцию до функции
* : × * → следующим образом индукцией по длине слова:
*( , ) = , *( , ) = ( *( , ), ),
где , *, .
Определение. Говорят, что д.к.а. A = , , , 0, распознаёт слово *, если
*( 0, ) .
Другими словами, слово = 1 2 . . . распознаётся автоматом, если в нём суще-
ствует путь |
1 |
2 |
|
|
|||
|
0 = 0 −→ 1 |
−→ . . . −→ |
|
такой, что он начинается в начальном состоянии 0, вдоль его дуг читается слово1 2 . . . (в детерминированном автомате такой путь определяется однозначно по слову ) и заканчивается в некотором выделенном состоянии.
Определение. Через (A) = { * | *( 0, ) } будем обозначать язык всех слов, распознаваемых конечным автоматом A.
Определение. Язык * называется автоматным, если существует детерминированный конечный автомат A такой, что = (A).
Пример (продолжение). Автомат из предыдущего примера распознаёт в точности все слова в алфавите { , }, которые содержат подслово , т. е. (A) = { { , }* |
содержит подслово }. Действительно, начав чтение произвольного слова в начальном состоянии данного автомата, попасть в выделенное состояние можно, только пройдя по дуге, ведущей из 0 в 1 (помеченной ), а затем сразу же по дуге, ведущей из 1 в 2 (тоже помеченной ), — такое возможно лишь в случае, когда содержит две буквы подряд.
54 |
Глава III. Конечные автоматы и формальные грамматики |
|
|
Упражнения
1.Построить детерминированный конечный автомат, распознающий следующий язык над алфавитом = { , }:
(а)= { 2 | , > 1};
(б) = { | в разность числа символов и числа cимволов чётна};
(в) = { | в слове перед каждым символом стоит символ };
(г) = { | слово имеет подслово };
(д) = { | слово не имеет подслов вида и подслов вида };
(е) = { | имеет нечётное число символов и чётное число символов };
(ж) = { | слово имеет подслово и имеет подслово }.
2. Описать язык, распознаваемый следующим детерминированным конечным ав-
томатом: |
|
|
|
|
|
|
di |
HH |
|
|
|
i |
|
|
di |
|
(а) |
|
|
|
|
- |
(б) |
|
|
- |
|||||||
|
|
|
HH |
|
|
* |
|
|
||||||||
|
|
|
|
|
|
6 |
|
|
, |
|||||||
|
9 |
|
|
|
|
Hj |
|
|
|
|
|
|
||||
|
H |
iHHH |
|
|
|
|
|
H |
|
|
|
|
|
|||
|
|
H |
|
|
|
i |
|
|
iHHH |
|
|
|
? |
|||
|
|
|
|
Hj |
|
, |
|
|
|
H |
|
|
|
|||
|
|
|
|
|
|
|
|
|
Hj |
id |
|
- i6, |
||||
|
|
|
|
|
|
|
i6, |
|
|
|
|
, |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(в) |
H |
di@ |
|
s |
i |
s |
(г) |
+ |
A |
|
s |
|
|
|||
|
|
|
|
|
i |
|
i@ |
di |
|
i |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
k |
|
|
|
k |
|
|
|
|
3 k |
|
|
|
|
||
|
|
@ |
|
|
|
|
|
|
|
@ |
|
|
|
|
||
|
|
|
@ |
|
|
|
|
|
|
@ |
i6 |
|
|
|
|
|
|
|
|
@ |
|
i6 |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
@ |
|
|
|
|||
|
|
|
|
@R |
|
|
|
|
R@ |
|
|
|
|
|||
|
|
|
|
, |
|
|
|
|
, |
|
|
|
|
|||
3. Говорят, что д.к.а. A = , , , 0, обладает свойством вахтёра, если для
любых , имеет место ( , ) ̸= 0, т. е. в автомате нет дуг, входящих в начальное состояние. Доказать, что для любого д.к.а. A существует д.к.а. A′
такой, что (A) = (A′) и A′ обладает свойством вахтёра.
§ 10. Недетерминированные конечные автоматы
|
|
|
- i1 |
от детерминированных тем, что из любого состояния |
|
|
i |
|
|
i2 |
Недетерминированные конечные автоматы отличаются |
|
|
- |
(или ни одного) переходов в состояния, принадлежащие |
||
|
|
|
после считывания символа возможны сразу несколько |
||
|
|
|
- i3 |
множеству возможных состояний ( , ). Это означа- |
|
ет, что автомат может продолжить дальнейший процесс чтения символов, перейдя в любое из возможных состояний.
Можно считать, что в таких ситуациях работа автомата разветвляется на несколько параллельных ветвей вычислений, каждая из которых начинается с определённого
состояния ( , ). Если ( , ) пусто, то работа автомата вдоль данной ветви вычислений заканчивается в состоянии , даже если на входной ленте остались
§ 10. Недетерминированные конечные автоматы |
55 |
|
|
несчитанные символы. Таким образом, вдоль одних ветвей вычислений автомат может прочитать все входные символы и остановится в выделенном состоянии, вдоль других может прочитать все символы, но остановится в невыделенном состоянии, вдоль третьих ветвей работа автомата «обрывается на полуслове».
Перейдём к формальным определениям, связанным с недетерминированными автоматами.
Определение. Недетерминированным конечным автоматом (сокращённо н.к.а.) называется упорядоченная пятёрка A = , , , 0, , в которой , , 0, определяются и называются так же, как в детерминированном случае, а функция переходовявляется функцией вида : × → ( ), где ( ) — множество всех подмно-
жеств (см. аксиому степени из § 1).
Графическое изображение недетерминированных автоматов
При графическом изображении недетерминированных автоматов используются те же обозначения, что и в детерминированном случае. При этом из одного состояния автомата могут выходить сразу несколько (или нисколько) стрелок, помеченных
одной и той же буквой алфавита. Дуга, выходящая из состояния , входящая в состояние ′, помеченная символом , присутствует в схеме автомата тогда и только тогда, когда ′ ( , ).
Пример. Например, автомат A = , , , 0, , где = { , }, = { 0, 1, 2},= { 2}, а функция переходов задаётся соотношениями
( 0, ) = { 0}, |
|
( 1, ) = ?, |
( 2, ) = ?, |
|||||
( 0, ) = { 0, 1}, |
( 1, ) = { 2}, |
( 2, ) = ?, |
||||||
имеет следующее графическое изображение: |
- |
|
|
|||||
H ? |
|
- |
|
|
||||
, |
|
|
|
|
|
|
||
|
|
i0 |
|
|
i1 |
|
di2 |
|
|
|
|
|
|
||||
Определение. Путь в недетерминированном конечном автомате A= , , , 0, определяется и обозначается так же, как в детерминированном случае, нужно лишь условие ( , +1) = +1 заменить на условие +1 ( , +1).
Определение. Говорят, что н.к.а. A= , , , 0, распознаёт слово 1 2 . . . *, если существует последовательность состояний 0 = 0, 1, . . . , такая, что
1 ( 0, 1),2 ( 1, 2),
..
( −1, ),
и при этом .
Другими словами, слово = 1 2 . . . распознаётся автоматом, если в нём существует хотя бы один путь
1 |
2 |
|
0 = 0 −→ 1 |
−→ . . . −→ |
|
такой, что он начинается в начальном состоянии 0, вдоль его дуг читается слово1 2 . . . (в недетерминированном автомате такой путь определяется неоднозначно по слову ) и заканчивается в некотором выделенном состоянии.
56 Глава III. Конечные автоматы и формальные грамматики
Определение. Как и раньше, через (A) обозначается язык всех слов, распознаваемых автоматом A.
Пример (продолжение). Автомат из предыдущего примера распознаёт в точности все слова в алфавите { , }, которые имеют суффикс , т. е. (A) = { { , }* |
{ , }*( = )}. Действительно, любой путь, заканчивающийся в выделен-
|
1 |
|
ном состоянии данного автомата, обязан содержать участок 0 →− |
→− 2. Отсюда |
следует, что слова, распознаваемые A, должны содержать хотя бы одно вхождение подслова . Поскольку из выделенного состояния нет выходящих стрелок, то любой
путь, содержащий описанный выше участок, обрывается как раз после прохождения данного участка. Тогда в словах, распознаваемых автоматом, после крайнего справа
вхождения подслова нет букв.
Теорема 21 (о детерминизации). Для любого недетерминированного конечного ав-
томата A существует детерминированный конечный автомат |
A′ такой, что |
||||||||||||||||||||||||||
(A) = (A′). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Доказательство. Пусть A = , , , 0, — исходный н.к.а. Определим следую- |
|||||||||||||||||||||||||||
щий д.к.а. A′ = ′, , , 0′ , ′ (см. пример на рисунке): |
|
|
|
|
|
|
|
|
|||||||||||||||||||
(а) ′ = ( ); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
(б) ( ′, ) = ′ ( , ), где ′ |
′ и ; |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
(в) ′ = |
|
0 |
} |
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
0 |
{ |
|
|
′ |
|
′ |
|
= |
. |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
(г) ′ = |
{ |
′ |
|
| |
∩ |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
̸ ?} |
|
|
|
- ? |
|
|
|
|
|||||||||||
|
A: H ? |
, - |
|
A′ |
H |
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
: |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
i0 |
|
|
|
|
di1 |
|
|
HH |
0iZZ |
Z |
|
|
di{ 0, 1} |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{ } |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
di1 |
, - i |
, |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Z |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
~Z |
|
? |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{ |
|
} |
? |
|
||||
Докажем, что для любого слова * и любого состояния следующие условия эквивалентны:
(а)В н.к.а. A существует путь, который начинается в 0, заканчивается в и вдоль дуг которого читается слово .
(б)В д.к.а. A′ существует путь, который начинается в { 0}, заканчивается в некотором ′ и вдоль дуг которого читается слово .
Заметим, что если — выделенное состояние A, то условие (а) эквивалентно условию(A), а условие (б) — условию (A′). Таким образом, (A) = (A′).
Докажем индукцией по длине слова эквивалентность условий (а) и (б).
10. Пусть | | = 0, т.е. = . Тогда условие (а) эквивалентно тому, что в A существует путь, начинающийся в 0, заканчивающийся в и не содержащий ни
одной дуги, что, в свою очередь, эквивалентно условию 0 = . Покажем, что условие0 = эквивалентно (б). Действительно, если 0 = , то, взяв ′ = { 0}, очевидно, получим условие (б). Если же в д.к.а. A′ существует путь, начинающийся в { 0}, заканчивающийся в некотором ′ и вдоль дуг которого читается пустое слово, то
с необходимостью ′ = { 0}. Следовательно, { 0} и, значит, 0 = .
§ 10. Недетерминированные конечные автоматы |
57 |
|
|
20. Допустим, эквивалентность (а) и (б) уже доказана для произвольных слов |
|
длины . Докажем эквивалентность (а) и (б) для произвольного слова длины +1. Пусть = 1 . . . +1, где .
Пусть для слова выполняется условие (а). Следовательно, существует состояниетакое, что в н.к.а. A имеется путь
1 +1
0 −→ . . . −→ −−−→ .
В частности, слово = 1 . . . читается вдоль дуг пути в A, который начинается в0 и заканчивается в , т. е. для слова и состояния выполняется условие (а). В силу индукционного предположения, для и выполняется условие (б), т. е. в д.к.а. A′ существует путь, который начинается в { 0}, заканчивается в некотором ′ и вдоль дуг которого читается слово :
1 |
|
{ 0} −→ . . . −→ ′ . |
|
Так как ( , +1) и ′, то |
|
|
′ ( |
|
, +1) = ( ′, +1). Следовательно, в |
|||||||
|
|
|
||||||||||
|
||||||||||||
д.к.а. A′ существует дуга ′ |
+1 |
|
|
|
|
= ( ′, +1) и ′ |
|
. |
||||
−−−→ |
′, где ′ |
|
||||||||||
Таким образом, в A′ |
существует путь вида |
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
+1 |
|
|
|||||
|
|
{ 0} −→ . . . −→ |
′ −−−→ ′ . |
|
|
|||||||
Отсюда заключаем, что слово удовлетворяет условию (б).
Пусть теперь для слова выполняется условие (б). Следовательно, существует состояние ′ ′ такое, что в д.к.а. A′ имеется путь вида
1 |
|
+1 |
{ 0} −→ . . . −→ ′ −−−→ ′ . |
||
Так как ′ |
= ( ′, +1) = |
′ ( , +1) и ′, то существует состояние |
′ |
|||
такое, что |
|
( , +1). |
|
|
|
|
|
|
|
существует путь |
|
||
Поскольку ′ и в д.к.а. A′ |
|
|
|
|||
|
|
|
|
1 |
|
|
|
|
|
|
{ 0} −→ |
. . . −→ ′, |
|
то для слова = 1 . . . выполняется условие (б). Следовательно, в силу индукционного предположения, для и состояния выполняется условие (а), т. е. в н.к.а. A
существует путь |
1 |
|
|
||
0 −→ . . . |
−→ . |
|
Так как ( , +1), то в A имеется дуга |
||
|
+1 |
|
|
−−−→ . |
|
Окончательно получаем существование в A следующего пути |
||
1 |
|
+1 |
0 −→ |
. . . −→ |
−−−→ , |
вдоль дуг которого читается слово 1 . . . +1 = , т. е. справедливо условие (а). Таким образом, построенный д.к.а. A′ распознаёт язык (A). 
58 |
Глава III. Конечные автоматы и формальные грамматики |
|
|
Упражнения
1.Описать язык, распознаваемый следующим недетерминированным конечным автоматом:
|
|
di |
|
|
i |
|
di |
|
|
i@ |
, |
i@ |
|
|
|
|||
(а) |
H |
|
|
- |
|
- |
|
(б) |
|
|
|
|
- |
|
|
|
|
|
|
|
|
|
k |
|
|
|
|
@I |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ |
|
|||
|
|
|
|
|
i |
|
|
i |
|
|
@ |
i |
|
di |
||||
|
|
|
|
|
|
|
|
, |
, |
|
@ |
|||||||
|
|
|
|
|
? |
|
|
H |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
@ |
|
|
|
R@ |
|
||||
(в) |
H |
i |
|
- |
|
- ? |
(г) H |
iZZ |
|
|
- |
|
|
- |
di6 |
|||
|
|
|
|
i |
|
i |
|
|
|
i |
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ZZ~Z |
|
|
|
|
, |
|||
|
|
? |
|
|
|
|
|
|
|
|
|
i6 |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
? |
|
|
|
|
? |
|
|
|
|
|
|
|
|
|
|
|
|
|
i6 |
|
|
|
|
- di6, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.Используя конструкцию из теоремы о детерминизации, построить детерминированные конечные автоматы, эквивалентные автоматам из пунктов (а) и (г) предыдущего упражнения.
§11. Недетерминированные конечные автоматы с пустыми переходами
В некоторых источниках (см., например, [5, 15]) используется более широкий класс недетерминированных конечных автоматов, который отличается от введённого вы-
ше тем, что функция переходов имеет вид : × ( { }) → ( ). Автоматы данного типа называют автоматами с пустыми переходами, поскольку в них допускаются дуги, помеченные пустым словом . Наличие дуги, помеченной , выходящей из состояние и входящей в состояние ′, означает, что автомат, находясь в состоянии, может перейти в состояние ′, не считывая символа с ленты. Пользуясь терминами
из программирования, можно сказать, что в такой ситуации автомат осуществляет
безусловный переход из в ′.
Такой вид автоматов удобно использовать при доказательстве некоторых свойств. Однако добавление -переходов в определение недетерминированного автомата не
изменяет класс автоматных языков, т. е. язык распознаётся некоторым недетерминированным конечным автоматом (согласно нашему определению) тогда и только тогда, когда он распознаётся некоторым недетерминированным конечным автома-
том с -переходами.
§ 11. Недетерминированные конечные автоматы с пустыми переходами |
59 |
|
|
Определение. Недетерминированным конечным автоматом с пустыми переходами (сокращённо -н.к.а.) называется упорядоченная пятёрка A = , , , 0, ,
в которой , , 0, определяются и называются так же, как раньше, а функция переходов является функцией вида : × ( { }) → ( ).
Определение. Путь в -н.к.а. A = , , , 0, определяется и обозначается так же, как в случае недетерминированного конечного автомата. Заметим лишь, что в условии +1 ( , +1) допускается +1 = .
Определение. Говорят, что -н.к.а. A = , , , 0, распознаёт слово 1 2 . . . , где — буквы алфавита , если в A существует хотя бы один путь
1 |
2 |
|
0 −→ 1 |
−→ . . . −−→ |
|
такой, что он начинается в начальном состоянии 0 = 0, заканчивается в некотором выделенном состоянии и вдоль его дуг читается слово 1 2 . . . = 1 2 . . . , причём > , т. е. некоторые из символов 1, . . . , могут быть пустыми.
Определение. Для произвольного -н.к.а. A через (A) обозначим язык всех слов, распознаваемых A.
Пример. Автомат A = , , , 0, , где = { , }, = { 0, 1, 2}, = { 0}, а функция переходов задаётся соотношениями
( 0, ) = { 1, 2}, |
|
|
|
( 1, ) = ?, |
( 2, ) = { 0}, |
|||||||||||||||||
( 0, ) = ?, |
|
|
|
( 1, ) = { 2}, |
( 2, ) = ?, |
|||||||||||||||||
( 0, ) = ?, |
|
|
|
( 1, ) = ?, |
( 2, ) = { 0}, |
|||||||||||||||||
имеет следующее графическое изображение: |
|
|||||||||||||||||||||
idO@ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
|||||
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
||||
H |
y |
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
@ |
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
@ |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i2 |
|
||||
|
|
@ |
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
R@ |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Данный автомат содержит четыре пути, которые начинаются и заканчиваются в состоянии 0, но в промежутках не попадают в 0. Вдоль этих путей распознаются слова , , и . Поскольку начальное состояние является единственным выделенным, заключаем, что (A) = { , , , }*. Заметим, что слова и можно выразить через слова и следующим образом: = · , = · . Поэтому автомат распознает язык (A) = { , }*.
Теорема 22 (об элиминации пустых переходов). Для любого недетерминированного конечного автомата с пустыми переходами A существует недетерминированный конечный автомат A′ такой, что (A) = (A′).
Доказательство. Пусть A = , , , 0, — исходный -н.к.а. Для любого состояния введём в рассмотрение множество
( ) = { } { | |
|
|
|
в A существует путь вида −→ 1 |
−→ . . . −→ −→ }, |
||
которое называется орбитой состояния в автомате A.
60 |
Глава III. Конечные автоматы и формальные грамматики |
||||||||
|
|
|
|
|
|
|
|||
|
Определим н.к.а. A′ = |
|
, , ′, |
, ′ |
|
, который отличается от исходного авто- |
|||
|
|
|
|
0 |
|
|
и множеством выделенных |
||
мата только приведёнными ниже функцией переходов ′ |
|
||||||||
состояний ′ (см. пример на рисунке): |
|
|
|
|
|||||
|
(а) ′( , ) = |
|
( , ), где и ; |
|
|||||
( )
(б) ′ = |
{ |
|
|
|
| |
( ) |
∩ |
= |
. |
||
|
|
|
|
|
̸ |
?} |
|
||||
|
|
idO@ |
|
|
|
|
|
i |
|||
A |
|
0 |
|
|
|
|
|
1 |
|||
H y |
|
|
|
|
- |
|
|||||
|
|
|
|
@ |
|
|
|
|
|||
|
|
|
|
|
@ |
|
|
|
|
|
|
|
|
|
|
|
|
i2 |
|
|
|
||
|
|
|
|
|
@ |
|
|
|
|
||
|
|
|
|
|
|
R@ |
|
|
|
||
Докажем, что для любого слова условия эквивалентны:
|
idO@ |
|
|
|
|
i |
A′ |
H 0 |
|
|
|
|
- 1 |
HH |
@ |
|
|
|
||
|
|
@ |
@ |
id6 |
|
|
|
|
2 |
|
|||
|
|
|
@R |
|
|
|
|
|
|
|
|
|
|
* и любого состояния следующие
(а)В -н.к.а. A существует путь, который начинается в 0, заканчивается в и вдоль дуг которого читается слово .
(б)В н.к.а. A′ существует путь, который начинается в 0, заканчивается в некото- ром ′ с условием ( ′) и вдоль дуг которого читается слово .
Заметим, что если — выделенное состояние в A, то условие (а) эквивалентно условию (A), а условие (б) — условию (A′). Таким образом, (A) = (A′).
Докажем индукцией по длине слова эквивалентность условий (а) и (б).
10. Пусть | | = 0, т.е. = . Тогда условие (а) эквивалентно тому, что в A существует путь вида
|
|
|
0 −→ 1 |
−→ . . . −→ −→ |
|
(включая случай, когда путь не содержит дуг), что, в свою очередь, эквивалентно условию ( 0). Покажем, что условие ( 0) эквивалентно (б). Действительно, если ( 0), то, взяв ′ = 0, очевидно, получим условие (б). Если же в н.к.а. A′ существует путь, начинающийся в 0, заканчивающийся в некотором ′ с условием
( ′) и вдоль дуг которого читается пустое слово, то с необходимостью |
′ = 0, |
|||||||
и |
значит, |
( 0). |
|
|
|
|
|
|
0 |
|
|
|
|
|
|
||
|
2 . Допустим, эквивалентность (а) и (б) уже доказана для произвольных слов |
|||||||
длины . Докажем эквивалентность (а) и (б) для произвольного слова |
длины +1. |
|||||||
Пусть = 1 . . . +1, где . |
|
|
|
|
|
|
||
|
Пусть для слова выполняется условие (а). Следовательно, существуют состоя- |
|||||||
ния , ′ такие, что в -н.к.а. A имеется путь |
|
|
|
|||||
|
|
1 |
|
+1 |
|
|
|
|
|
|
0 −→ . . . −−→ −−−→ ′ −→ . . . −→ , |
|
|
||||
где 1 . . . = 1 . . . и > . В частности, слово = 1 . . . читается вдоль дуг пути в A, который начинается в 0 и заканчивается в , т.е. для слова и состояния выполняется условие (а). В силу индукционного предположения, для и выполняется условие (б), т.е. в н.к.а. A′ существует путь
1 ′
0 −→ . . . −→ ,
