Конечные автоматы

1. Введение

В настоящем реферате будут даны определения детермини-

рованных и недетерминированных конечных автоматов, приведе-

ны их графы. Далее будет рассмотрен случай преобразования

недетерминированного конечного автомата в детерминированный

с рисунками и графами.

Все рассмотренные здесь автоматы представлены как маши-

ны, распознающие цепочки символов.

2. Детерминированные конечные автоматы.

В различных источниках приводятся несколько отличающие-

ся друг от друга определения детерминированного конечного

автомата. Приведем здесь определение из источника [2].

Детерминированным конечным автоматом (ДКА) называется

машина, распознающая цепочки символов. Она имеет входную

ленту, разбитую на клетки, головку на входной ленте (вход-

ную головку) и управляющее устройство с конечным числом

состояний (рис. 1). Конечный автомат М можно представить в

виде пятерки (S, I,  1б 0,  1s0 0, F), где

1) S - множество состояний  1управляющего устройства 0,

2) I -  1входной алфавит  0(каждая клетка входной ленты со-

держит символ из I),

3)  1б 0 - отображение из S x I в S (если  1б 0( 1s 0,  1a 0) =  1s' 0, то

всякий раз, когда М находится в состоянии  1s 0, а входная

головка обозревает символ  1a 0, М сдвигает входную головку

вправо и переходит в состояние 1 s' 0),

4) 1 s0 0 - выделенное состояние в S, называемое  1начальным 0,

5) F - подмножество в S, называемое множеством  1допуска-

 1ющих 0 (или 1 заключительных 0) 1 состояний 0.

┌─────┬─────┬─────┐

│  1b 0 │  1a 0 │  1c 0 │ Входная лента

└─────┴─────┴─────┘

^

│ Головка

┌──┴──┐

│  1s 0 │ Управляющее устройство

└─────┘

Рис. 1. Конечный автомат

ДКА выполняет шаги, определяемые текущим состоянием его

блока управления и входным символом, обозреваемым входной

головкой. Каждый шаг состоит из перехода в новое состояние

и сдвига входной головки на одну клетку вправо. Оказывает-

ся, что язык представим регулярным [2] выражением тогда и

только тогда, когда он допускается некоторым конечным авто-

матом.

Далее будет приведено определение ДКА через определение

недетерминированного конечного автомата (НКА), то-есть

можно будет рассматривать ДКА в качестве подмножества НДКА.

2. Недетерминированные конечные автоматы

Для каждого состояния и каждого входного символа НКА

имеет нуль или более вариантов выбора следующего шага. Он

может также выбирать, сдвигать ему входную головку при из-

менении состояния или нет.

Приведем определение недетерминированного конечного ав-

томата.

Недетерминированным конечным автоматом называется пя-

терка (S, I, 1 б 0, 1 s0 0, F), где

1) S - конечное множество состояний устройства управле-

ния;

2) I - 1 алфавит 0 входных символов;

3)  1б  0-  1функция переходов 0, отображающая S x (I U { 1e 0}) в

множество подмножеств множества S;

4) 1 s0 0 (- S - 1 начальное состояние 0 устройства управления;

5) F  _(  .S - множество  1заключительных (допускающих)  0сос-

тояний.

С каждым НКА связан ориентированный граф, естественным

образом представляющий функцию переходов этого автомата.

Приведем определение для графа ( или диаграммы) перехо-

дов автомата М = (S, I,  1б 0,  1s0 0, F).

Графом переходов автомата М называют ориентированный

граф G = (S, E) с помеченными ребрами. Множество ребер Е и

метки определяются следующим образом. Если  1б(s, a)  0содержит

 1s'  0для некоторого  1a  0(- I U { 1e 0}, то ребро  1(s, s')  0принадле-

жит Е. Меткой ребра  1(s, s')  0служит множество тех  1b  0(- I U

{ 1e 0}, для которых 1 б(s, b) 0 содержит 1 s' 0.

Например на рис. 2. изображен граф переходов для неко-

торого НКА. Заключительное состояние обведено двойной рам-

кой.

┌─────┐

 1a,b 0 │ v

│ ┌─────┐  1a 0 ┌─────┐

└──┤  1s1 0 ├────────────────────_│  1s2 0 │

└─────┘ ┌──────────_└──┬──┘

^ │ │

│  1e 0 │ │

└────────────┼───────┐ │  1b

│ │ │

 1e 0 │ │ │

│ │ v

┌=====┐─────────┘ └── ┌─────┐

│  1s4 0 │_────────────────────┤  1s3 0 │

└=====┘  1 a 0 └─────┘

Рис. 2. Пример графа переходов

Для дальнейшего рассмотрения вопроса приведения недер-

минированного конечного автомата к детерминированному, пот-

ребуется указать несколько теорем. Теоремы приведены без

доказательства, для их подробного рассмотрения предлагается

обратиться к [2].

 _Теорема 1.  .Всякий язык, допускаемый недерминированным

конечным автоматом регулярен.

 _Теорема 2.  .Пусть  2а 0 - регулярное выражение. Тогда най-

дется НКА М = (S, I,  1б 0,  1s0 0, { 1Sf 0}), допускающий язык, предс-

тавленный  2а 0, и обладающий такими свойствами:

1) ││S││ < = 2│ 2a 0│, где │ 2а 0│ - длина выражения 2 а 0,

2) для каждого  1a 0 (- I U { 1e 0} множество 1 б(Sf, a) 0 пусто,

3) для каждого  1s  0(- S сумма чисел ││ 1б(s, a) 0││ по всем  1а

из I U { 1e 0} не превосходит 2.

Эти теоремы будут использованы при преобразовании НКА в

ДКА в следующем пункте.

3. Преобразование НКА в ДКА

Существует дополнительный результат или возможность со-

поставить какому-либо взятому НКА эквивалентную "детермини-

рованную" машину. Однако детерминированный конечный авто-

мат, эквивалентный данному НКА с n состояниями, может иметь

вплоть до 2 в n степени состояний. Поэтому переход от НКА к

детерминированному автомату не всегда дает эффективный спо-

соб моделирования недетерминированного конечного автомата.

Однако ДКА позволяют проще формализовать модель автомата и

алгоритмизировать его поведение. Кроме этого детерминиро-

ванные автоматы применяются при распознавании образов.

Таким образом мы можем дать определение ДКА как подмно-

жества или частного случая НКА.

Детерминированным конечным автоматом называется неде-

терминированный конечный автомат (S, I,  1б 0,  1s0 0, F), в кото-

ром:

1) 1 б(s, e) 0 = (/) (пустое множество) для всех 1 s 0 (- S,

2) ││ 1б(s, a) 0││ < = 1 для всех 1 s 0 (- S и 1 а 0 (- I.

Приведем теорему, которая поможет связать и выразить

недетерминированный конечный автомат через его детерминиро-

ванный эквивалент.

 _Теорема 3.  .Если L - регулярное множество, то оно допус-

кается некоторым ДКА.

Доказательство. По теореме 1 L допускается некоторым

НКА М = (S, I,  1б 0,  1s0 0, { 1Sf 0}). Превратим М в ДКА следующим

образом. Сначала найдем такие пары состояний  1(s, t) 0, что

 1(s, e)  0├─ м* 1(t, e) 0. Чтобы сделать это, построим ориентиро-

ванный граф G = (S, E), у которого  1(s, t)  0принадлежит Е

тогда и только тогда, когда  1б(s, e)  0содержит  1t 0. Затем вы-

числим рефлексивное и транзитивное замыкание G' = (S, E')

графа G. Мы утверждаем, что  1(s, e)  0├─ м* 1(t, e)  0тогда и

только тогда, когда 1 (s, t) 0 принадлежит Е'.

Теперь построим такой НКА М' = (S', I,  1б 0',  1s0 0, F), что

L(M') = L(M) и в М' нет 1 е 0- переходов.

1)  1S' = {s0} U {t│б(s, a)  0содержит  1t  0для некоторого  1s

(- S и некоторого  1а  0(- I 1} 0.

2) Для каждого 1 s 0 (- S' и каждого 1 а 0 (- I

 1б'(s, a) = {u│(s, t) 0 (- E' и 1 б(t, a) 0 содержит 1 u} 0.

3) F' = 1 {s│(s, f) 0 (- E' и 1 f 0 (- F 1} 0.

Таким образом L(M) = L(M') и в M' нет переходов по 1 е 0.

Далее по M' построим ДКА M'', состояния которого обра-

зуют множество-степень для S'. Другими словами, M'' =

( 1P 0(S'), I, 1 б'' 0, { 1s0 0}, F''), где

1) для каждого подмножества S множества S' и каждого  1а

(- I

 1б''(S, a) = {t│б'(s, a)  0содержит  1t  0для некоторого  1s  0(-

S 1} 0,

2) F'' = {S│S П F <> (/)}.

Далее с помощью индукции по │ 1w 0│, можно доказать, что

( 1{s0}, w)  0├─ м*''(S,  1e 0) тогда и только тогда, когда S =

 1{t│(s0, w) 0 ├─ м*' 1(t, e)} 0.

Следовательно L(M) = L(M') = L(M''). Что и требовалось

доказать.

4. Пример преобразования НКА в ДКА

На основе приведенного выше доказательства, рассмотрим

пример для произвольного НКА М (рис. 3). Приведем его из

недетерминированного вида в детерминированный аналог.

 1b

┌──────────────────────────────────────┐

│ │

│ ┌─────┐  1a 0 │

│ ┌──────_│  1s2 0 │_───────────────┐ │

│ │ 1a 0 └────┬┘ │ v

┌──┴──┐ │ 1  0 ^ │  1e 0 ┌=====┐

│  1s1 0 ├──┘ │ └───────────────_│  1s4 0 │

└──┬──┘ │ └=====┘

│ │ ^

│ │ │

│  1e 0 │ │

│ │ │

│ │ │

│ ┌──┴──┐  1e 0 │

└────────────_│  1s3 0 ├──────────────────┘

└─────┘

Рис. 3. Пример недетерминированного автомата НКА М

Из начального состояния s1 можно достичь s3 и заключи-

тельное состояние s4 по путям, помеченным символом  1е 0. Поэ-

тому для вычисления рефлексивного и транзитивного замыкания

G' ориентированного графа G, о котором шла речь в доказа-

тельстве теоремы 3, надо добавить ребро (s1, s4).

Весь граф G' изображен на рис. 4. По М и G' построим

НКА М' (рис. 5). Так как в узел s4 входят ребра из всех уз-

лов графа G', то обьявляем все состояния в М' заключитель-

ными.

┌─────┐

│ │ ┌─────┐

│ v │ │

│ ┌─────┐ ┌──┴──┐ │

└──┤  1s1 0 ├──────────┐ │  1s2 0 │_─┘

└──┬──┘ │ └──┬──┘

│ │ │

│ │ │

│ │ │

│ │ │

│ └─────────────────┐ │

v v v

┌─────┐ ┌─────┐

┌─_│  1s3 0 ├──────────────────────────_│  1s4 0 ├──┐

│ └──┬──┘ └─────┘ │

│ │ ^ │

└─────┘ └─────┘

Рис. 4. Граф G'

Так единственное ребро, входящее в узел s3 в диаграмме

для М, помечено символом 1 е 0, то s3 не входит в М'.

 1b

┌───────────────────────────────────┐

│ v

┌=====┐  1 a,b 0 ┌=====┐  1a 0 ┌=====┐

│  1s1 0 ├───────────_│  1s2 0 │_─────────┤  1s4 0 │

└=====┘ └=====┘ └=====┘

│ ^

└───┘

 1a

Рис. 5. НКА М'

При построении ДКА М'' по автомату М' образуется восемь

состояний. Но только четырех из них можно достичь из на-

чального состояния, так что остальные четыре можно выбро-

сить.

Приведенный к детерминированному виду автомат М'' при-

веден на рис. 6.

Таким образом было показана возможность приведения НКА

к ДКА. При такой операции число получившихся состояний мо-

жет существенно увеличиться, некоторые из них становятся

бесполезными. Сущность приведения заключается в том, что мы

ищем обходные пути для достижения конечного состояния,

стремясь к тому, чтобы исчезла неоднозначность перехода из

состояния в состояния в зависимости от входного символа.

Эта операция порождает несущественные состояния и поэтому,

видимо, в каждом из отдельных случаев решать задачу нужно

исходя их конкретных целей.

 1b 0 ┌=======┐ 1 b

┌────────────────_│ 1{s2,s4} 0├─────────────┐

│ └=======┘ v

│ │ ┌─────┐

│ │  1a 0 │  1(/) 0 │_──┐

┌=====┐ │ └────┬┘ │

│ 1{s1} 0 │ │ ^ │ │

└=====┘ v │ └────┘

│  1a 0 ┌=====┐  1b 0 │ 1 a,b

└────────────────_│ 1{s2} 0 ├───────────────┘

└=====┘

^ │

└───┘

 1b

Рис. 6. ДКА G''

Для примера оценки стоимости преобразования НКА в ДКА

рассмотрим задачу распознавания образов, в которой дана це-

почка-текст x = a1 a2 ... an и регулярное выражение  2а 0, на-

зываемое образом. Мы хотим найти такой наименьший индекс j,

что для некоторого i подцепочка ai ai+1 ... aj цепочки x

принадлежит языку, представленному выражением 2 а 0.

Вопросы такого рода часто возникают при редактировании

текстов. Многие программы для редактирования текстов разре-

шают пользователю задавать типы замен в цепочке-тексте.

Например пользователь может сказать, что он хочет заменить

слово y каким-то другим словом в куске текста х. Чтобы вы-

полнить такую операцию, программа редактирования текста

должна суметь найти вхождение слова у в текст х. Некоторые

мощные редактирующие программы позволяют пользователю в ка-

честве множества заменяемых цепочек указывать регулярное

множество. Например пользователь может сказать: "Заменить

[I*] в х пустой цепочкой", имея в виду, что в х следует

стереть пару квадратных скобок и символы между ними.

Поставленную выше задачу можно переформулировать, заме-

нив данное регулярное выражение  2а  0выражение  2b  0= I* 2a 0, где I

- алфавит цепочки-текста. Можно найти первое вхождение це-

почки из L( 2a 0) в х = а1 а2 ... аn, обнаружив кратчайший пре-

фикс цепочки х, принадлежащий языку выражения  2b 0. Эту задачу

можно решить, построив НКА М для распознавания множества,

представленного выражением  2b 0, а затем определить множество

состояний в которые может перейти НКА М при прочтении це-

почки а1 а2 ... аn.

Один из способов моделирования поведения НКА М на це-

почке-тексте х - превратить М в детерминированный конечный

автомат, используя теорему 3. Однако такой путь окажется

достаточно дорогостоящим, поскольку от регулярного выраже-

ния  2b  0можно перейти к НКА с 2│ 2b 0│ состояниями, а затем к ДКА

с почти 2 в степени 2│ 2b 0│ состояниями.

Таким образом уже само построение ДКА может вызвать

непреодолимые трудности.