- •Кафедра «Информатика и программное обеспечение»
- •Курсовой проект
- •Введение
- •1.Построение праволинейной грамматики
- •2.Построение автоматной грамматики по праволинейной
- •3.Построение недетерминированного конечного автомата
- •4.Преобразование недетерминированного конечного автомата в детерминированный
- •5.Минимизация числа состояний автомата
- •6.Программная реализация конечного автомата
- •7.Использование сетей петри при переходе от грамматики к минимальному автомату
- •8.Размещение состояний автомата
- •9.Структурный синтез автомата
- •10.Реализация автомата
- •Логические элементы
- •Заключение
- •Список использованной литературы
2.Построение автоматной грамматики по праволинейной
Автоматные грамматики, или иначе А-грамматики, имеют правила вывода вида U::=T или U::=TW, где TVT; UVn; WVn.
Перейти от полученной праволинейной грамматики к автоматной можно расширением нетерминального словаря следующим образом: Sc1S1; S1c2S2; S2с3А и т.д, оставляя в правой части правила один терминальный и один нетерминальный символы или один терминальный.
Для рассматриваемого примера выполним преобразование праволинейной грамматики G'=(VN,VT,S,R') в автоматную G"=(VN",VT,S,R").
При этом получим следующее множества R правил вывода
Sx5S1; |
S1x1S2; |
S2x4A; |
Sx5S3; |
S3x6S4; |
S4x1B; |
Sx7C; |
Sx3F; |
Ax0D; |
Ax5; |
Bx0E; |
Bx5; |
Cx0E; |
Cx5; |
Dx3S; |
Dx0; |
Ex3S; |
Ex0; |
Fx6F1; |
F1x7F2; |
F2x5F3; |
F3x1; |
Fx7F4; |
F4x7F5; |
F5x5F6; |
F6x1; |
Fx6F7. |
F7x0F8; |
F8x1; |
|
|
|
|
Следовательно, словарь нетерминальных символов VN будет иметь вид V"N = {S,S1,S2,S3,S4,А,В,С,D,E,F,F1,F2,F3,F4,F5,F6,F7,F8}.
В рассматриваемом примере нетерминальный словарь имеет 19 символов и его мощность V"N равна 19, мощность VT терминального словаря VT равна 8.
3.Построение недетерминированного конечного автомата
Недетерминированный конечный автомат это пятерка A=(Q,V,М,S,Z), где Q - множество (алфавит) внутренних состояний; V - входной алфавит;
М - функция переходов, представляющая отображение V*QP(Q);
P(Q) - множество подмножеств из Q; SQ - множество начальных состояний; ZQ - множество заключительных состояний; SZ.
Недетерминированный конечный автомат (в отличие от детерминированного) может иметь несколько начальных состояний. Отличается он и функциями перехода.
Как правило, недетерминированные конечные автоматы порождаются регулярными грамматиками, которые содержат правила вывода вида
U::= TW R::= TW, что соответствует фрагменту диаграммы
Частичная функция переходов этого случая имеет вид: 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 |
B |
C |
D |
E |
q0 |
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.
Поставим в соответствие правилам вывода переходы автомата. Так, правилу Аx0D - переход из состояния q5 в состояние q8 под воздействием входного символа x0, а правилу Ех0 - переход из состояния q9 в заключительное состояние q19 при входном символе х0.
Выполнив указанные действия для всех правил R", получим таблицу переходов (табл.4) недетерминированного конечного автомата, соответствующего рассматриваемому примеру. Граф переходов, построенный по этой таблице, приведен на рис.1.
Таблица 4
|
X0 |
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
X7 |
q0 |
|
|
|
q10 |
|
q1,3 |
|
q7 |
q1 |
|
q2 |
|
|
|
|
|
|
q2 |
|
|
|
|
q5 |
|
|
|
q3 |
|
|
|
|
|
|
q4 |
|
q4 |
|
q6 |
|
|
|
|
|
|
q5 |
q8 |
|
|
|
|
q19 |
|
|
q6 |
q9 |
|
|
|
|
q19 |
|
|
q7 |
q9 |
|
|
|
|
q19 |
|
|
q8 |
q19 |
|
|
q0 |
|
|
|
|
q9 |
q19 |
|
|
q0 |
|
|
|
|
q10 |
|
|
|
|
|
|
q11,17 |
q14 |
q11 |
|
|
|
|
|
|
|
q12 |
q12 |
|
|
|
|
|
q13 |
|
|
q13 |
|
q19 |
|
|
|
|
|
|
q14 |
|
|
|
|
|
|
|
q15 |
q15 |
|
|
|
|
|
q16 |
|
|
q16 |
|
q19 |
|
|
|
|
|
|
q17 |
q18 |
|
|
|
|
|
|
|
q18 |
|
q19 |
|
|
|
|
|
|
q19 |
|
|
|
|
|
|
|
|
Рис.1
В полученном графе присутствуют девять цепочек переходов по графу: 51400; 5145; 5615; 56100; 700; 75; 36751; 37751; 3601; и три цепочки: 51403; 56103; 703; при которых происходит возвращение к начальному состоянию автомата S = q0.
Анализируя полученный граф переходов, можно убедиться, что автомат допускает те и только те цепочки входных символов, которые принадлежат языку L(G"), порождаемому грамматикой G".
Кроме того, полученный автомат является недетерминированным, так как в табл.4 есть клетки, содержащие пары состояний, и не полностью определённым, поскольку в таблице есть незаполненные клетки.
