Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по теории автоматов.doc
Скачиваний:
105
Добавлен:
01.05.2014
Размер:
3.35 Mб
Скачать

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

Пусть A0– недетерминированный конечный автомат.

A0= <P0,S0,s000,F0>

F0– множество конечных подмножеств алфавита состояний.

S = {S0 , S1 , S2}

M(S) = {{ S0 } , { S1 } , { S2 } , { S0 , S1} , { S0 , S2} , { S1 , S2} , { S0 , S1 , S2}}

M* <= M

φ:P*SS– детерминированный алфавит

φ0:P*SM*- недетерминированный автомат

Отличие недетерминированного автомата состоит в том, что функции перехода может определять не одно состояние, в которое переходит автомат, а некоторое подмножество состояний.

ТЕОРЕМА:ЕслиL(A0) – язык который допускается некоторым конечным автоматомA0, то существует детерминированный конечный автоматAкоторый допускает этот же язык.

Преобразование недетерминированного автомата в детерминированный.

Имеется два способа:

  1. Общий способ

Пример:

P = {a,b}

S = {I,B,C}

M(S) = {[I] , [B] , [C] , [IB] , [IC] , [BC] , [IBC] , o}

φ( I , a) = [I , c]

φ( I , b) = [B]

φ( B , a) = [C]

φ( B , b) = []

φ( C , a) = [B]

φ( C , b) = [B]

φ( IB , a) = [IC]

φ( IB , b) = [B]

φ( IC , a) = [I ,C , B]

φ( IC , b) = [B]

φ( BC , a) = [BC]

φ( BC , b) = [B]

φ( IBC , a) = [IBC]

φ( IBC , b) = [B]

Вершины IBиBCявляются недостижимыми, а вершины 0 нет в выходном сигнале для состоянияB, следовательно граф упроститься:

Это общий способ построения автомата.

Недостаток заключается в том, сто в процессе преобразования возникает большое число недостижимых вершин, которые необходимо удалять.

2 способ. Сокращенный способ.

  1. Строится заготовка таблицы переходов детерминированного конечного автомата.

  2. В качестве начального состояния выбирается начальное состояние недетерминированного автомата и для него строим подмножество состояний, в которое переходим из начального. Строку заносим в заготовку таблицы переходов.

  3. Если полученное подмножество состояний или состояния отсутствуют в левой части таблицы переходов, то они заносятся туда и осуществляется переход к пункту 2.

Процесс заканчивается если в результате получения подмножества, мы не получаем новое подмножество , которое создается в левом столбце.

Пример:

Pi / Si

a

b

I

IC

B

IC

ICB

B

B

C

---

ICB

ICB

B

C

B

B

Пример :Недетерминированный конечный автомат.

D– конечная вершина.

Преобразование некоторых типов грамматики к автоматному ввиду.

Утверждение : любой конечный язык, не содержащий пустой цепочки является автоматным языком, следовательно существует автоматная грамматика, порождающая данный язык.

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

Пусть задан язык:

L= {x1x2x3…xn}xi€Vt*

Xi = a1a2a3…am ai €Vt

Для построения грамматики введем следующие нетерминальные символы: A1A2…Am-1и следующие правила:

Xi  a1A1 A1 a2A2 …Am-2am-1Am-1 Am-1am

Применяя данную процедуру по всем цепочкам Xiполучим множество порождающих правил автоматной грамматики, соответствующей исходному языку.

Рассмотрим контекстно-свободные грамматики.

Контекстно-свободная грамматика является левосторонней , если все ее правила только левосторонние (правосторонняя наоборот) либо заклячительные правила.

Правила вида:

AxB– правосторонняя, гдеA,B– нетерминальные символы.

ABx– левосторонняя.

Ax– заключительное правило.

Для любой правосторонней или левосторонней грамматики может быть построено эквивалентная ей правосторонняя или левосторонняя автоматная грамматика.

Доказательство:

G= <Vt,Vn,I,R> создается набор правил вида:

A  xB, гдеx € Vt*

Предположим, что xi=a1a2…amвведем нетерминальные символыA1A2…Am-1и добавим правилоAa1A1

A1a2A2 Am-1 am-1Am-1 Am-1  amB либо Am-1  am

Цепочка правил, заканчивающаяся Am-1 amBзаменит одно правилоAxB. Цепочка правил, заканчивающаясяAm-1 amзаменит правилоAx

Применяя данную процедуру по всем контекстно-свободным грамматикам получим набор правил автоматной грамматики. В любой контекстно-свободной грамматики могут оказаться правила вида AB, она может быть преобразована к контекстно-свободную грамматику не содержащую таких правил.

если ώξ12 и есть правило

AB,BCxто применяя эти правила в результате получим:

ξ12ξ12 ξ1Cxξ2это равносильно тому, чтоACx

Доказательство: пусть есть правило вида

R={…AB…BCx}

В этом случае вывод любой цепочки, содержащий нетерминальный символ A, осуществляется следующим образом, пусть есть вывод

ώξ12, тогда данная цепочка преобразуется в конечную следующим образом:

ξ12 ξ12 ξ1Cxξ2

Равносильно A  Cx

Чтобы исключить цепочку ξ12вместоA,Bнужно записатьACx.