Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка КР по ТЯП.doc
Скачиваний:
66
Добавлен:
16.05.2015
Размер:
431.1 Кб
Скачать

3. Переход от праволинейной грамматики к автоматной

Автоматные грамматики, или иначе А-грамматики, имеют правила вывода вида

U::=T или U::=TW, где TVT; UVn; WVn.

Перейти от полученной праволинейной грамматики к автоматной можно расширением нетерминального словаря следующим образом : Sc1S1 ; S1c2S2 ; S2с3А и т. д., оставляя в правой части правила один терминальный и один нетерминальный символы или один терминальный.

Для рассматриваемого примера выполним преобразование праволинейной грамматики G'=(VN, VT, S, R') в автоматную G"=(VN", VT, S, R").

При этом получим следующее множества R правил вывода

Sx3S1;

S1x2S2;

S2x1A;

Sx3S3;

S3x7S4;

S4x4B;

Sx2C;

Sx5F;

Ax1D;

Ax0;

Bx1E;

Bx0;

Cx1E;

Cx0;

Dx6S;

Dx7;

Ex6S;

Ex7;

Fx4F1;

F1x6F2;

F2x0F3;

F3x5;

Fx5F4;

F4x6F5;

F5x0F6;

F6x5;

Fx6F7.

F7x5F8;

F8x5;

Следовательно, словарь нетерминальных символов VN будет иметь вид

V"N = {S, S1 , S2, S3, S4, А, В, С, D, E, F, F1, F2, F3, F4, F5, F6, F7, F8,}.

В рассматриваемом примере нетерминальный словарь имеет 19 символов и его мощность V"N равна 19, мощность VT  терминального словаря VT равна 8.

4. Построение недетерминированного конечного автомата

Недетерминированный конечный автомат — это пятерка

A=(Q, V, М, S, Z), где

Q - множество (алфавит) внутренних состояний;

V - входной алфавит;

М — функция переходов, представляющая отображение

V*Q P(Q);

P(Q) — множество подмножеств из Q;

S Q — множество начальных состояний;

Z  Q — множество заключительных состояний;

SZ.

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

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

U::= TW R::= TW, что соответствует фрагменту диаграммы

U

T

W

T

R

Частичная функция переходов этого случая имеет вид:

M(W,T)={U,R}.

В рассматриваемом примере недетерминированный конечный автомат имеет одно начальное состояние S. Зададим этот автомат следующим образом. Поставим в соответствие символам нетерминального словаря V"N состояния из Q , в том числе нетерминалу S — начальное состояние qo . Добавим заключительное состояние Z, в котором автомат оказывается, если цепочка символов, поступающих на автомат, принадлежит L (G").

Составим табл. 3, в которой нетерминальным символам из множества V"N соответствуют состояния автомата из множества Q.

Таблица 3

S

S1

S2

S3

S4

A

В

С

D

E

qo

q1

q2

q3

q4

q5

q6

q7

q8

q9

F

F1

F2

F3

F4

F5

F6

F7

F8

Z

q10

q11

q12

q13

q14

q15

q16

q17

q18

q19

Здесь начальному состоянию S соответствует qo, конечному Z - q19.

Общее количество состояний Q = V "N +1 и равно 20.

Поставим в соответствие правилам вывода переходы автомата.

Так, правилу Аx1D - переход из состояния q5 в состояние q8 под воздействием входного символа x1, а правилу Ех7 — переход из состояния q9 в заключительное состояние q19 при входном символе х7.

Выполнив указанные действия для всех правил R", получим таблицу переходов (табл. 4) недетерминированного конечного автомата, соответствующего рассматриваемому примеру. Граф переходов, построенный по этой таблице, приведен на рис.1.

Таблица 4

Хo

X1

X2

X3

X4

X5

X6

X7

q0

q7

q1,q3

q10

q1

q2

q2

q5

q3

q4

q4

q6

q5

q19

q8

q6

q19

q9

q7

q19

q9

q8

q0

q19

q9

q0

q19

q10

q11

q14

q17

q11

q12

q12

q13

q13

q19

q14

q15

q15

q16

Окончание табл.4

q16

q19

q17

q18

q18

q19

q19

Рис.1

Анализируя полученный граф переходов, можно убедиться, что автомат допускает те и только те цепочки входных символов, которые принадлежат языку L(G"), порождаемому грамматикой G".

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