Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТА_конспект.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
3 Мб
Скачать
☆

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

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

A0 = < P0 , S0 , s00,φ0,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 = {x1 x2 x3…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, она может быть преобразована к контекстно-свободную грамматику не содержащую таких правил.

если ώξ1 A ξ2 и есть правило

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

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

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

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

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

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

ξ1 A ξ2  ξ1 B ξ2 ξ1 Cx ξ2

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]