
- •Кафедра «Информатика и программное обеспечение»
- •Курсовой проект
- •Введение
- •1.Построение праволинейной грамматики
- •2.Построение автоматной грамматики по праволинейной
- •3.Построение недетерминированного конечного автомата
- •4.Преобразование недетерминированного конечного автомата в детерминированный
- •5.Минимизация числа состояний автомата
- •6.Программная реализация конечного автомата
- •7.Использование сетей петри при переходе от грамматики к минимальному автомату
- •8.Размещение состояний автомата
- •9.Структурный синтез автомата
- •10.Реализация автомата
- •Логические элементы
- •Заключение
- •Список использованной литературы
4.Преобразование недетерминированного конечного автомата в детерминированный
Детерминированный конечный автомат это пятерка А=(Q,V,М,S,Z), где Q - алфавит состояний; V - входной алфавит; М - функция переходов (Q*VР(Q)); S - начальное состояние; Z - множество заключительных состояний; SZ.
В этом автомате, в отличие от недетерминированного, всегда одно начальное состояние, а также отсутствуют альтернативные состояния, в которые переходит автомат при подаче на вход одного и того же входного символа.
В рассматриваемом примере такими состояниями являются q1 и q3, в которые переходит автомат из состояния qo под воздействием х5.
Преобразование недетерминированного конечного автомата в детерминированный основано на замене альтернативных состояний одним, эквивалентным этим состояниям, например:
Здесь три альтернативных состояния X,Y,Z в недетерминированном конечном автомате представляются одним [XYZ] в детерминированном, которое представляет первые три состояния. Следовательно, если недетерминированный конечный автомат представляют пятеркой А=(Q,VT,M,S,Z), то эквивалентный детерминированный конечный автомат имеет вид А=(Q,VT,М',S,Z).
Алфавит состояний Q' определяется через подмножество алфавита Q.
Функция переходов М определяется как M([q1,q2,…,qk],T)= [R1,R2,…,Rt], если в недетерминированном конечном автомате M({q1,q2,...,qk},T) = {R1,R2,...,Rt}.
Начальное состояние S'=[S1,S2,...,Si]=q0, еcли S={S1,S2,...,Si}.
Множество заключительных состояний Z' образуется из элементов, в которых присутствует хотя бы одно состояние из множества Z недетерминированного конечного автомата.
Построенный по этим правилам эквивалентный детерминированный конечный автомат допускает одни и те же входные цепочки, что и исходный недетерминированный.
Рис.2
В рассматриваемом примере недетерминированность автомата локально проявляется в том, что из некоторого его состояния qi исходят несколько дуг, помеченных одним и тем же символом хj (рис.2).
Недетерминированность в этом случае может быть легко устранена «склеиванием» двух состояний q1 и qk в одно q1,k . При этом q1, k инцидентны все исходящие дуги хг, хр, xt, являющиеся исходящими дугами состояний q1 и qk (рис.3).
Рис.3
Общий алгоритм нахождения детерминированного конечного автомата, эквивалентного недетерминированному, может быть описан следующим образом:
Построить начальное состояние S' и отметить им первую строку таблицы переходов.
Определить все состояния Q', которые могут быть достигнуты из данного состояния.
Если во вновь определенных состояниях не встречаются такие, которые отмечали ранее строки таблицы, то для них надо выделить новые строки и повторить п.2.
В таблице переходов выделить заключительные состояния Z'.
Таблица 5
|
X0 |
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
X7 |
q0 |
|
|
|
q10 |
|
q1,3 |
|
q7 |
q1,3 |
|
q2 |
|
|
|
|
q4 |
|
q2 |
|
|
|
|
q5 |
|
|
|
q4 |
|
q6 |
|
|
|
|
|
|
q5 |
q8 |
|
|
|
|
q19 |
|
|
q6 |
q9 |
|
|
|
|
q19 |
|
|
q7 |
q9 |
|
|
|
|
q19 |
|
|
q8 |
q19 |
|
|
q0 |
|
|
|
|
q9 |
q19 |
|
|
q0 |
|
|
|
|
q10 |
|
|
|
|
|
|
q11,17 |
q14 |
q11,17 |
q18 |
|
|
|
|
|
|
q12 |
q12 |
|
|
|
|
|
q13 |
|
|
q13 |
|
q19 |
|
|
|
|
|
|
q14 |
|
|
|
|
|
|
|
q15 |
q15 |
|
|
|
|
|
q16 |
|
|
q16 |
|
q19 |
|
|
|
|
|
|
q18 |
|
q19 |
|
|
|
|
|
|
q19 |
|
|
|
|
|
|
|
|
В результате применения этого алгоритма от автомата, орграф которого представлен на рис.1, можно перейти к эквивалентному детерминированному автомату, таблица переходов которого приведена в табл.5, а орграф на рис.4.
Из рис.1 нетрудно видеть, что в рассматриваемом примере «источниками недетерминированности» является всего два состояния - q0 и q10. Очевидно, что если «склеить» пару состояний {q1 и q3} и пару состояний {q11 и q17} образовав новые состояния q1,3 и q11,17, то недетерминированность устраняется.
Орграф на рис.4 задает все допустимые последовательности входных символов, которые соответствуют всем цепочкам терминалов, выводимых в данной грамматике.
Очевидно,
что для определения с помощью распознающего
автомата запрещенных последовательностей
входных символов (невыводимых цепочек)
орграф следует дополнить состоянием
q20
«Ошибка»,
в которое должны вести дуги, исходящие
из всех остальных состояний автомата
(в том числе и заключительного). Эти дуги
должны быть помечены дизъюнкциями
входных символов, отличных от символов,
помечающих дуги, выходящие из данного
состояния, или инверсией дизъюнкции
этих символов, например, для состояния
q1,3
в
состояние q20
должна
вести дуга, помеченная дизъюнкцией x0
v
x2
v
x3
v
x4
v
x5
v
x6,
или, иначе,
(в
силу ортогональности входных символов).
В орграфе (рис.4) этого не сделано, чтобы не усложнять картину, однако в табл.5 состояние q20 «Ошибка» введено (последняя строка), и можно считать, что во все ее пустые клетки вписано состояние q20. В этом случае табл.5 задает полностью определенный детерминированный конечный автомат.
Рис.4
Анализируя полученный граф, можно выявить девять цепочек переходов по графу: 51400; 5145; 5615; 56100; 700; 75; 36751; 3601; 37751; и три цепочки: 51403; 56103; 703; при которых происходит возвращение к начальному состоянию автомата S = q0.