Синтез конечного распознающего автомата
Изучение методов построения конечного автомата, распознающего заданный язык, и принципы его программной реализации. Проектирование комбинационной и принципиальной схем распознающего конечного автомата с использованием библиотеки интегральных микросхем.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 18.08.2013 |
Размер файла | 1,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
ДИПЛОМНЫЙ ПРОЕКТ
по дисциплине «Теория вычислительных процессов и структур»
СИНТЕЗ КОНЕЧНОГО РАСПОЗНАЮЩЕГО АВТОМАТА
СОДЕРЖАНИЕ
- Введение
- 1.Построение праволинейной грамматики
- 2.Построение автоматной грамматики по праволинейной
- 3.Построение недетерминированного конечного автомата
- 4.Преобразование недетерминированного конечного автомата в детерминированный
- 5.Минимизация числа состояний автомата
- 6.Программная реализация конечного автомата
- 7.Использование сетей Петри при переходе от грамматики к минимальному автомату
- 8.Размещение состояний автомата
- 9.Структурный синтез автомата
- 10.Реализация автомата
- Заключение
- Список использованной литературы
- ВВЕДЕНИЕ
- Синтез конечных автоматов является важным разделом в изучении вопросов организации вычислительных процессов и структур. Необходимость в построении теории автоматов возникла с развитием вычислительной техники, с появлением теории формальных языков и грамматик - теории, позволяющей описывать и анализировать синтаксические свойства языков программирования и других формальных языков. Потребовалось решение вопросов преобразования грамматик в автоматы, которые бы распознавали и транслировали множества, задаваемые грамматиками.
- Основой изучения данного раздела теории является
- · построение базовых формальных моделей описания логических
- структур, динамики поведения вычислительных структур;
- · выработка навыков проектирования вычислительных систем;
- · формирование представления о методах, используемых при решении задач анализа, синтеза организации функционирования вычислительных структур и системного программного обеспечения.
- 1. ПОСТРОЕНИЕ ПРАВОЛИНЕЙНОЙ ГРАММАТИКИ
- Исходными данными для дипломного проекта являются две таблицы (табл.1, табл.2) и правила вывода R.
- Табл.1 состоит из трех строк, первая из которых содержит перечисление 18 символов Ci. Во вторую строку Si записываются первые 18 символов фамилии, имени и отчества студента с обязательными пробелами между фамилией именем и отчеством. В третью строку для каждой из 18 букв строки Si заносится символ из алфавита {x0,x1,x2,x3,x4,x5,x6,x7} в соответствии с табл.2.
- Таблица 1
- Табл.2 построена на основе подсчета появлений каждой буквы русского алфавита в фамилиях, именах и отчествах. Затем буквы сформированы в восемь групп с таким расчетом, чтобы появление каждого из символов x0-x7 было равновероятным.
- Таблица 2
- Грамматикой G[S] называется непустое множество правил вывода (продукционных правил), где S - начальный символ.
- Правило вывода (продукция) представляет собой упорядоченную пару (R,х) и записывается в виде R::=х, где: R - левая часть правила (в данном случае символ); x - непустая цепочка, образующая правую часть правила.
- Грамматика задается на алфавите V, называемым словарем. Алфавит V это непустое множество элементов (символов). В свою очередь, цепочка х представляет некоторую последовательность символов алфавита V (возможно повторяющихся). Число входящих в цепочку символов называют длиной цепочки.
- Словарь состоит из двух непересекающихся подмножеств: Vn - словарь нетерминальных символов; Vt - словарь терминальных символов. Таким образом, формальная грамматика G есть четверка G=(VN,Vt,S,R), причем SVn.
- Продукция (правило вывода) называется линейной, если как в правой, так и в левой части продукции используется не более одного нетерминального символа. Продукция называется праволинейной, если нетерминал находится справа от всех символов правой части правила. Аналогично, если нетерминал находится левее всех других символов правой части, продукция называется леволинейной. Грамматика также называется праволинейной или леволинейной, если каждая из ее продукций является соответственно праволинейной или леволинейной.
- Для рассматриваемой в работе грамматики
- G=(Vn,Vt,S,R)
- Vn={S,A,B,C,D,E,F}; Vt={C1,C2,С3, ..., C18};
- R - множество продукций (правил вывода):
- Sc1c2c3A; Sc1c4c5B; Sc6С; Sс7F; Ac8D; Ac9; Bc8E; Bc9;
- Cc8E; Cc9; Dc10S; Dc11; Ec10S; Eс11; Fc12c13c14c15;
- Fc16c13c14c15; Fс17 c18 c15.
- Анализ продукций данной грамматики показывает, что все они праволинейны, следовательно, грамматика будет праволинейной.
- Приведем грамматику к виду
- G'=(Vn,V't,S,R'), где
- V't = {xo,x1, ..., x7} - новый терминальный словарь;
- R' - множество правил вывода, получаемых заменой символов из словаря Vt, на символы из словаря Vт в соответствии с табл1.
- В рассматриваемом примере эти правила имеют вид
- S X5 X1 X4 A | X5 X6 X1 B | X7 C | X3 F
- A X0 D | X5
- B X0 E | X5
- C X0 D | X5
- D X3 S | X0
- E X3 S | X0
- F X6 X7 X5 X1 | X7 X7 X5 X1 | X6 X0 X1
- здесь “ | ” это металингвистический символ «или».
- Примерами цепочек, которые принадлежат языку L(G'), порождаемому грамматикой G', являются (x5x1x4x5, x7x0x0, x3x6x0x1). В то же время, цепочки (x5х5х6x1х5, х4x6x0x1) не принадлежат языку L(G'), так как их нельзя вывести в грамматике G'. Языком L грамматики G(S) называется множество всех предложений L(Y), где Y - предложение. Предложением называется состоящая из терминальных символов сентенциальная форма Y. Сентенциальной формой называется цепочка Y, выводимая из начального символа S', грамматики G(S'),что можно записать как S=>*Y, где =>* это рефлексивное транзитивное замыкание отношения простого вывода.
- 2. ПОСТРОЕНИЕ АВТОМАТНОЙ ГРАММАТИКИ ПО ПРАВОЛИНЕЙНОЙ
- Автоматные грамматики, или иначе А-грамматики, имеют правила вывода вида
- U::=T или U::=TW, где TVT; UVn; WVn.
- Перейти от полученной праволинейной грамматики к автоматной можно расширением нетерминального словаря следующим образом: Sc1S1; S1c2S2; S2с3А и т.д, оставляя в правой части правила один терминальный и один нетерминальный символы или один терминальный.
- Для рассматриваемого примера выполним преобразование праволинейной грамматики G'=(VN,VT,S,R') в автоматную G"=(VN",VT,S,R").
- При этом получим следующее множества R правил вывода
- Следовательно, словарь нетерминальных символов 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::= TWR::= TW, что соответствует фрагменту диаграммы
- Частичная функция переходов этого случая имеет вид: M(W,T)={U,R}.
- В рассматриваемом примере недетерминированный конечный автомат имеет одно начальное состояние S. Зададим этот автомат следующим образом. Поставим в соответствие символам нетерминального словаря V"N состояния из Q, в том числе нетерминалу S - начальное состояние qo. Добавим заключительное состояние Z, в котором автомат оказывается, если цепочка символов, поступающих на автомат, принадлежит L (G").
- Составим табл.3, в которой, нетерминальным символам из множества V"N соответствуют состояния автомата из множества Q.
- Таблица 3
- Здесь начальному состоянию S соответствует qo, а конечному Z соответствует q19. Общее количество состояний Q=V"N+1 и равно 20.
- Поставим в соответствие правилам вывода переходы автомата. Так, правилу Аx0D - переход из состояния q5 в состояние q8 под воздействием входного символа x0, а правилу Ех0 - переход из состояния q9 в заключительное состояние q19 при входном символе х0.
- Выполнив указанные действия для всех правил R", получим таблицу переходов (табл.4) недетерминированного конечного автомата, соответствующего рассматриваемому примеру. Граф переходов, построенный по этой таблице, приведен на рис.1.
- Таблица 4
- Рис.1
- В полученном графе присутствуют девять цепочек переходов по графу: 51400; 5145; 5615; 56100; 700; 75; 36751; 37751; 3601; и три цепочки: 51403; 56103; 703; при которых происходит возвращение к начальному состоянию автомата S = q0.
- Анализируя полученный граф переходов, можно убедиться, что автомат допускает те и только те цепочки входных символов, которые принадлежат языку L(G"), порождаемому грамматикой G".
- Кроме того, полученный автомат является недетерминированным, так как в табл.4 есть клетки, содержащие пары состояний, и не полностью определённым, поскольку в таблице есть незаполненные клетки.
- 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
- В результате применения этого алгоритма от автомата, орграф которого представлен на рис.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.
- МИНИМИЗАЦИЯ ЧИСЛА СОСТОЯНИЙ АВТОМАТА
- Минимизация автомата, эквивалентного полученному в предыдущем разделе полностью определенному автомату, проводится в два этапа. Сначала множество состояний автомата разбивается на классы эквивалентности, а затем строится минимальный (приведенный) автомат.
- Рассмотрим алгоритм приведения автомата для случая модели Мура, к которой относится рассматриваемый пример.
- Построим треугольную таблицу (табл.6), клетки которой соответствуют всем парам рабочих состояний (qi,qj) ij, т.е. состояний, отличных от q20 «Ошибка». Если для рабочих состояний qi и qj в табл.5 существует входной символ х1, при котором переход из qi осуществляется в одно из рабочих состояний, а из qj в состояние ошибки, то состояние qi и qj не эквивалентны, и соответствующая им клетка помечается крестом. То есть, если какие - либо две строчки табл.5 содержат разное число рабочих состояний или отличаются позициями, занимаемыми рабочими состояниями, то обозначающие эти строки состояния не эквивалентны. В противном случае в клетку табл.6 с координатами qi, qj запишем каждую пару состояний (qs,qt), ts, в которые автомат может перейти из qi и qj при подаче одного и того же входного символа (количество этих пар равно числу столбцов с рабочими состояниями в строке qi и qj табл.5).
- В рассматриваемом случае в табл.5 автомат из состояния qo переходит в рабочие состояния при входных символах х3, х5, х7, при остальных входных символах, qo переходит в состояние q20 «Ошибка». Других состояний, которые оказываются в рабочих состояниях при том же наборе входных символов (х3, х5, х7) нет, поэтому в столбце qo табл.6 все клетки следует вычеркнуть. То же можно сделать со столбцами q1,3, q2. Из состояния q4 автомат переходит в состояния q6 при входном символе х1, и при этих же символах в рабочие состояния автомат переходит из состояний q13, q16, q18, поэтому три клетки в столбце q4 не должны вычеркиваться. Проделав эту операцию со всеми столбцами, теперь необходимо определить явность эквивалентности пар состояний. Для этого берем не вычеркнутые клетки в табл.5, например {q4 и q13} и проверяем на рис.4 эти два состояния. Если оба состояния переходят при одинаковом xi, в одно и то же состояние qi, то пары состояний явно эквиваленты. В нашем примере, пары {q4 и q13} переходят при одинаковом x1, но в разные состояния (q4 в q6, а q13 в q19), следовательно пара состояний не эквивалента и клетку необходимо вычеркнуть. А пара состояний {q13 и q16} будет эквивалента, т.к. переход осуществляется по x1 в состояние q19 как из q13, так и из q16.
- Таблица 6
- Не вычеркнутые клетки результирующей таблицы соответствуют всем парам эквивалентных состояний.
- Класс эквивалентности образуется состояниями, которые попарно эквивалентны. В данном случае образуются следующие пары эквивалентных состояний:
- {q5 и q6} {q5 и q7} {q6 и q7} {q8 и q9} {q12 и q15} {q13 и q16} {q13 и q18} {q16 и q18}.
- Всего восемь пар попарно эквивалентных состояний. Эти состояния образуют пять классов эквивалентности: {q5, q6, q7}, {q8, q9}, {q12 , q15}, {q13, q16 , q18}.
- Каждое состояние, не вошедшее ни в один класс эквивалентности, эквивалентно лишь само себе и само образует этот класс. В рассматриваемом примере к нерасчлененным пяти классам необходимо добавить еще семь классов эквивалентности: q0; q1,3; q2; q4; q11,17; q14; q19.
- Состояние минимального автомата обозначим буквами r с индексами
- r0 = {q0}; r1={q1,3}; r2={q2}; r3={q4}; r4={q5, q6, q7}; r5={q8, q9}; r6={q10};
- r7={q11,17}; r8={q12, q15}; r9={q13, q16, q18}; r10={q14}; r11={q19}.
- Таким образом, минимальный автомат содержит 12 состояний, не считая состояния r12={q20} "Ошибка". Орграф этого автомата приводится на рис.5 (без указания состояния «Ошибка»), а таблица переходов в табл.7.
- Рис.5
- Проанализировав полученный граф, можно выявить девять цепочек переходов по графу: 51400; 5145; 56100; 5615; 700; 75; 3501; 36751; 37751; и три цепочки: 51403; 56103l; 703; при которых происходит возвращение к начальному состоянию автомата S = r0.
- В этой таблице, также как и в табл. 5, незаполненные клетки соответствуют состоянию «Ошибка».
- Таблица 7
- ПРОГРАММНАЯ РЕАЛИЗАЦИЯ КОНЕЧНОГО АВТОМАТА
Ci |
C1 |
C2 |
C3 |
C4 |
C5 |
C6 |
C7 |
C8 |
C9 |
C10 |
C11 |
C12 |
C13 |
C14 |
C15 |
C16 |
C17 |
C18 |
|
Si |
П |
А |
С |
Е |
Ц |
К |
И |
Й |
И |
Л |
Ь |
Я |
А |
Н |
Д |
Р |
|||
Xi |
X5 |
X1 |
X4 |
X6 |
X1 |
X7 |
X3 |
X0 |
X5 |
X3 |
X0 |
X6 |
X7 |
X5 |
X1 |
X7 |
X6 |
X0 |
А |
Б |
В |
Г |
Д |
Е |
Ж |
3 |
И |
Й |
К |
Л |
М |
Н |
О |
П |
|
x1 |
x5 |
x2 |
x4 |
x6 |
x6 |
x4 |
x3 |
x3 |
х0 |
x7 |
х0 |
x3 |
x7 |
x4 |
x5 |
|
Р |
С |
Т |
У |
Ф |
X |
Ц |
Ч |
Ш |
Щ |
Ь |
Ы |
Э |
Ю |
Я |
||
хо |
x4 |
x5 |
x7 |
x2 |
x5 |
x1 |
x2 |
x2 |
хо |
x6 |
x1 |
x1 |
x3 |
x7 |
x5 |
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; |
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 |
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 |
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 |
0 |
|||||||||||||||||||
1,3 |
X |
||||||||||||||||||
2 |
X |
X |
|||||||||||||||||
4 |
X |
X |
X |
||||||||||||||||
5 |
X |
X |
X |
X |
|||||||||||||||
6 |
X |
X |
X |
X |
|||||||||||||||
7 |
X |
X |
X |
X |
|||||||||||||||
8 |
X |
X |
X |
X |
X |
X |
X |
||||||||||||
9 |
X |
X |
X |
X |
X |
X |
X |
||||||||||||
10 |
X |
X |
X |
X |
X |
X |
X |
X |
X |
||||||||||
11,17 |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
|||||||||
12 |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
||||||||
13 |
X |
X |
X |
+ |
X |
X |
X |
X |
X |
X |
X |
X |
|||||||
14 |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
||||||
15 |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
||||||
16 |
X |
X |
X |
+ |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
|||||
18 |
X |
X |
X |
+ |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
|||||
19 |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
||
0 |
1,3 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11,17 |
12 |
13 |
14 |
15 |
16 |
18 |
19 |
X0 |
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
X7 |
||
r0 |
r6 |
r1 |
r4 |
||||||
r1 |
r2 |
r3 |
|||||||
r2 |
r4 |
||||||||
r3 |
r4 |
||||||||
r4 |
r5 |
r11 |
|||||||
r5 |
r11 |
r0 |
|||||||
r6 |
r7 |
r10 |
|||||||
r7 |
r9 |
r8 |
|||||||
r8 |
r9 |
||||||||
r9 |
r11 |
||||||||
r10 |
r8 |
||||||||
r11 |
Программа, моделирующая работу конечного автомата, обеспечивает различение допускаемых и не допускаемых цепочек. Цепочки символов вводятся с клавиатуры компьютера, программа различения цепочек имеет как автоматический, так и пошаговый режим работы и отражает на экране монитора изменение состояний автомата в процессе различения цепочек. При переходе автомата в заключительное состояние (последовательность входных символов образует допустимую цепочку) и появлении признака конца цепочки программа формирует сигнал различения цепочки. При наличии цепочек, не принадлежащих языку полученной грамматики, программа формирует сигнал ошибки и указывает последнее из состояний автомата, в котором он находился до появления ошибочного символа.
Рис.6. Пример распознанной цепочки
Рис.7. Пример нераспознанной цепочки
ИСПОЛЬЗОВАНИЕ СЕТЕЙ ПЕТРИ ПРИ ПЕРЕХОДЕ ОТ ГРАММАТИКИ К МИНИМАЛЬНОМУ АВТОМАТУ
Для построения сети Петри рассмотрим полученную во втором пункте дипломной работы праволинейную грамматику G”. Это можно сделать, если поставить в соответствие нетерминальным символам места в сети, а терминальным символам - переходы сети. Обозначим места кружками, а переходы - прямоугольниками (полочками). Будем помечать места и переходы соответствующими терминальными и нетерминальными символами. Поскольку сеть Петри - двудольный граф, соединение дугами мест разрешается только через переходы, а переходов - через места.
Если в правой части некоторого правила вывода из R имеет место катенация терминалов, то в сети Петри между переходами, помеченными терминалами, появляются дополнительные позиции. Эти позиции помечаются символами левой части правила вывода с верхними индексами 1,2,…. Поэтому фрагмент сети Петри, соответствующий первому правилу вывода (Sx5,x1,x4,A), будет иметь следующий вид (рис.8).
Рис.8
При построении остальных фрагментов сети Петри, соответствующих последующим правилам вывода, можно использовать ранее обозначенные места, но не переходы. Таким образом, места могут иметь по несколько входящих и исходящих дуг, но переходы - только по одной входящей и не более одной исходящей дуги (исходящей дуги может не быть, если в правой части правила вывода отсутствует замыкающий нетерминал).
Построим по полученным правилам вывода R' сеть Петри (рис.9).
Рис.9
Построенная сеть представляет собой автоматную сеть Петри, и места можно трактовать как состояния конечного автомата, а переходы - как входные символы. Чтобы обеспечить полное соответствие построенной сети Петри автомату Мура, необходимо ввести не показанную на рис.9 заключительную позицию Z, в которую можно направить дуги из переходов, не имеющих исходящих дуг.
Если теперь рассмотреть отдельные фрагменты сети на рис.9, то нетрудно заметить одинаковые фрагменты: места А,В,С с одинаковыми инцидентными им переходами x0 и x5, а также еще два идентичных фрагмента с местами D и Е, каждому из которых инцидентны по два выходных перехода x3 и x0. Аналогично можно отметить места F1 и F7, F2 и F5, а также F3, F6 и F8. В то же время места S1 и S3 идентичны по входу, т.е. из места S в места S1 и S3 дуги идут через переходы x5.
Функционирование сети не изменится, если «склеить» идентичные фрагменты, что будет соответствовать минимизации числа состояний автомата. Источником недетерминированности могут быть места, из которых исходят дуги, являющиеся входящими дугами переходов, помеченных одинаковыми терминалами. В данном случае таким местом является начальное состояние S и переходы x5. Таким образом, производится устранение недетерминированности. В результате получим сеть Петри с минимальным числом мест (рис.10).
Можно также установить взаимно-однозначное соответствие между сетью на рис.10 и исходным орграфом.
Для этого местам сети ставятся в соответствие состояния автомата, а переходам - пометки на дугах.
Рис.10
РАЗМЕЩЕНИЕ СОСТОЯНИЙ АВТОМАТА
При размещении состояний автомата (иначе - кодирование) определяется выбор способа размещения, который зависит от типа реализуемого автомата (асинхронный или синхронный).
Для асинхронного автомата необходимо применять противогоночное кодирование с целью устранения сбоев. Синхронный автомат не требует противогоночного размещения, и его состояния могут быть закодированы кодами минимальной длины. Поэтому будем рассматривать реализацию синхронного автомата.
Длина кода измеряется числом двоичных переменных, набор значений которых образует кодовую комбинацию из нулей и единиц. Наименьшее число переменных, необходимое для кодирования синхронного автомата с N состояниями, определяется как n=log2N, где K - ближайшее сверху к К целое число. Для рассматриваемого примера N=12(r0?rn) и n=log212=4.
Один из способов кодирования состояний синхронного автомата состоит в произвольном назначении кодовых наборов. Рассмотрим данное кодирование для нашего случая.
Состоянию ri необходимо поставить в соответствие одну из вершин 4-мерного куба с десятичным номером i, который определяется по значениям двоичных координат z1, z2, z3 и z4 этой вершины в соответствии с формулой
i= z120+ z221+ z322+ z423.
В этом случае вершине с координатами 0000 соответствует состояние r0, вершине с координатами 0001 - r1 и так далее (рис.11). Всего в рассматриваемом случае 12 состояний, поэтому 4 вершины куба из 16 остаются неиспользованными. При таком варианте кодирования переход автомата из одного состояния в другое в общем случае может сопровождаться изменениями значений нескольких переменных. Так, при переходе r4 - r11 (0100-1011), возникающем при входном сигнале x5, изменяют свои значения все четыре внутренних кодирующих переменных z1 ? z4.
Число внутренних переменных, которые изменяют свои значения при переходе автомата из одного состояния в другое, есть расстояние по Хемменгу между этими состояниями.
Очевидно, что чем меньше внутренние переменные изменяются при каждом переходе автомата, тем меньше единиц содержат их переключательные функции. В силу этого выбор варианта кодирования состояний автомата может выполнятся в соответствии с критерием минимальности по Хемменгу по всем переходам. Суть такого кодирования заключается в максимально возможном использовании соседних кодовых состояний, что обычно делается при противогоночном кодировании асинхронных автоматов. Кодовые состояния называются соседними, если при переходе автомата из одного состояния в другое изменяет свое значение лишь одна кодирующая переменная (расстояние по Хеммингу равно 1).
Известно, что такой способ кодирования избыточен и может потребовать (2log2N - 1) кодирующих переменных при N состояниях автомата. В рассматриваемом случае используется код минимальной длины, n=log2N, поэтому на некотором шаге кодирования может оказаться, что все соседние коды уже заняты, что потребует увеличения расстояния по Хеммингу на следующем шаге кодирования.
В принципе кодирование состоит в размещении графа перехода автомата в куб, соответствующий минимальной размеренности (в рассматриваемом случае 4-мерный), путем подборов вариантов исходя из выбранного критерия - минимального суммарного расстояния по Хеммингу по всем возможным переходам.
На рис.12 приведен один из возможных вариантов размещения, где состояние «Ошибка» (r12) не показано, т.к. оно не удовлетворяет принятому критерию размещения из-за того, что в это состояние производятся переходы из всех других состояний, поэтому кодирование состояния «Ошибка» выполняется позднее.
Размещение начнем с состояния r4 (как имеющего наибольшее количество входящих и исходящих дуг), которое поместим в вершину 0000 куба. Состояние r11, связанное дугой x5 с состоянием r4, поместим в вершину 0010, удаленную от r4 на расстоянии 1. В вершинах 0100 и 0001разместим состояния r2 и r3, также удаленные от r4 на расстояние 1. Пометим соответствующие этим переходам дуги символами x4 и x1. Естественным будет также размещение состояния r5 в вершине 0011, это состояние связано дугами x3 и x0 с состояниями r0 и r11, причем эти дуги расположены на ребрах куба и имеют минимальную длину, равную 1. Расстояния, соответствующие переходам r0 - r4 (по дуге x7) и r4-r5 (по дуге x5), имеют соответственно длину 3 и 2.
Рис.11
Рис.12
Состояние r0 связано дугой x3 с состоянием r6. Разместим состояние r6 в вершине 1111, отстоящей от r0 также на расстояние 1. Продолжая операцию размещения состояний исходного орграфа, получим окончательно картинку, представленную на рис.12.
Проанализируем полученное размещение. Из 18 возможных переходов 14 являются соседними и имеют расстояние 1, три перехода имеют расстояние 2 и один 3. Общее суммарное расстояние 23. Возможны и другие варианты размещения состояний автомата с той же величиной суммарного расстояния по Хеммингу, однако существенного значения это не имеет.
СТРУКТУРНЫЙ СИНТЕЗ АВТОМАТА
Для выбранной синхронной модели автомата применим структурную схему, приведенную на рис.13.
Рис.13
Эта схема состоит из дешифратора входных сигналов, комбинационной схемы, которая реализует функции возбуждения элементов памяти и самой памяти, построенной из триггеров на двухрегистровой основе. В синхронных автоматах отсутствует необходимость бороться с функциональными и логическими состязаниями в дешифраторе и комбинационной схеме, так как предполагается, что все переходные процессы в этих схемах успевают закончиться к моменту появления первого синхросигнала t1, по которому информация с выходов комбинационной схемы записывается в триггеры регистра 1.
Триггерный регистр 2, запись информации в который осуществляется вторым синхросигналом t2, необходим для того, чтобы сделать все состояния автомата устойчивыми и исключить влияние состязаний. Триггеры регистра 1 называются вспомогательными, а триггеры регистра 2 основными. Сигнал z5 является сигналом «Ошибка», а сигнал z6 сигналом принадлежности входной цепочки символов языку с грамматикой G”. Сигналы Р1,Р2,Р3 закодированные сигналы входных символов, Р4 сигнал признака конца цепочки. Сигналом НУ (начальная установка) триггеры автомата устанавливаются в начальное состояние.
В общем случае сложность реализации автомата, точнее дешифратора и комбинационной схемы, зависит от способа кодирования входных символов. Предположим, что входные сигналы закодированы двоичным кодом, тогда входные символы x0?x7 могут быть представлены тремя кодирующими переменными p1,p2,p3. В качестве символа окончания входной цепочки может быть использован любой свободный входной символ из x0?x7. Если таких нет, то необходимо ввести дополнительный, обозначив его через переменную p4.
Выделив в структурной схеме автомата дешифратор, можно упростить комбинационную схему и тем самым облегчить синтез автомата. С помощью дешифратора входные символы, закодированные двоичными переменными p1,p2,p3, преобразуются в унитарный код, в котором только одна из переменных принимает значение 1, в то время как все другие равны нулю. Поэтому выходы дешифратора можно обозначить x0?x7. В свою очередь символ окончания входной цепочки р4 принимает значение 1 по окончании любой входной цепочки.
Пусть входные символы закодированы так, что их номера являются десятичными эквивалентами двоичных кодов (N=p120+ p221+p322), тогда, составив таблицу кодов (табл.8), получим, например: x=p1p2p3,…, x7=p1p2p3.
Таблица 8
Символ |
р3 |
р2 |
р1 |
|
х0 |
0 |
0 |
0 |
|
х1 |
0 |
0 |
1 |
|
х2 |
0 |
1 |
0 |
|
х3 |
0 |
1 |
1 |
|
х4 |
1 |
0 |
0 |
|
х5 |
1 |
0 |
1 |
|
х6 |
1 |
1 |
0 |
|
х7 |
1 |
1 |
1 |
Реализация дешифратора, как и всех остальных частей автомата, должна быть выполнена на логических элементах одной серии интегральных микросхем. Выберем для реализации схемы автомата микросхемы серии КР555. Реализация дешифратора на микросхеме данной серии приводится на рис.14. Четыре инвертора на входе используются для снижения нагрузок на источники сигналов p1,p2,p3,p4. Логическую функцию ЗИ - НЕ выполняют 8 логических элементов. 8 инверторов на выходе позволяют получить сигналы унитарного кода x0?x7, инверсии этих сигналов (x0?x7) получаются непосредственно с входов элементов ЗИ - НЕ. Для реализации дешифратора в указанном виде необходимо 16 инверторов и 8 логических элементов ЗИ - НЕ. В принципиальной схеме инверторы реализуются на микросхеме КР555ЛН1, содержащей в одном корпусе 6 инверторов, логические элементы ЗИ - НЕ на микросхеме КР555ЛА4. Так как для работы комбинационной схемы при фиксации конца цепочки могут быть необходимы сигналы p4 ир4, то для их формирования используются два инвертора 15, 16.
Комбинационная схема автомата реализует функцию его переходов, заданных графом переходов или таблицей переходов, с учетом выбранного варианта кодирования состояний. Все дальнейшие построения проводятся для варианта размещения, представленного на рис.12.
Рис.14
Построить функцию переходов это значит найти переключательную функцию кодирующих (внутренних) z1?z4 переменных. В соответствии со структурной схемой автомата каждая внутренняя переменная представляет состояние элемента памяти - триггера. По переключательным функциям внутренних переменных могут быть найдены функции возбуждения соответствующих им триггеров. Реализация этих функций образует комбинационную схему автомата. Сложность функции возбуждения, а значит и сложность комбинационной схемы, в общем случае зависит от типа триггера. Известны основные три типа триггера, используемые в элементах памяти - D-триггер, RS-триггер и Т-триггер. В принципе, можно использовать любой из типов триггеров, однако мы остановим свой выбор на триггере типа D. D-триггер лишь задерживает входной сигнал, поэтому его функция возбуждения D совпадает с функцией переключения внутренней переменной zi. Запишем функции возбуждения D-триггеров для рассматриваемого примера и результаты занесем в табл.9.
Подобные документы
Специфика построения и минимизации детерминированного автомата методом разбиения. Построение детерминированной сети Петри, моделирующей работу распознающего автомата. Особенности программной реализации праволинейной грамматики, построение ее графа.
курсовая работа [615,1 K], добавлен 19.06.2012Построение праволинейной грамматики, автоматной грамматики по полученным результатам. Построение недетерминированного конечного автомата. Сведение недетерминированного конечного автомата к детерминированному. Описание программы и контрольного примера.
курсовая работа [674,9 K], добавлен 13.06.2012Сведение недетерминированного конечного автомата к детерминированному. Построение минимального детерминированного автомата из праволинейной грамматики двумя различными способами: с помощью сетей Петри и с помощью таблиц. Описание контрольного примера.
курсовая работа [903,9 K], добавлен 14.07.2012Устройство управления и синхронизации в структуре микропроцессора. Порядок синтеза конечного автомата (КА) для устройства управления ЭВМ. Алгоритм функционирования КА, заданный с помощью графа, функции переходов. Состояние триггеров в микросхеме.
методичка [1019,0 K], добавлен 28.04.2009Важный частный случай недетерминированного конечного автомата. Проверка нечетности числа единиц в произвольной цепочке, состоящей из нулей и единиц. Составление формальной грамматики, блок-схемы и программы, моделирующей работу конечного автомата.
курсовая работа [210,8 K], добавлен 05.12.2013Составление формальной грамматики, недетерминированный конечный автомат. Построение конечного автомата, программное моделирование работы конечного автомата. Граф детерминированного автомата, Синтаксическая диаграмма. Блок-схемы, примеры разбора строк.
курсовая работа [486,2 K], добавлен 19.11.2010Минимизация абстрактного автомата Мили, моделирование его работы. Синтез схемы конечного автомата, микропрограммного автомата и счетчика числа микрокоманд. Разработка цифровой линии задержки. Построение граф-схем исходного и оптимизированного автоматов.
курсовая работа [823,8 K], добавлен 19.07.2012Составление треугольной таблицы. Нахождение списка максимальных классов совместимости, минимального замкнутого покрытия. Получение логических функций выходов автомата. Синтез конечного автомата и функциональной схемы. Принципиальная электрическая схема.
контрольная работа [215,8 K], добавлен 22.06.2012Понятие, последовательность построения и схемная реализация цифрового автомата. Описание форм представления функций алгебры логики. Принципы минимизации функций выходов и переходов автомата, их перевода в базис. Сведенья о программе Electronics Workbench.
курсовая работа [2,0 M], добавлен 27.10.2010Синтез цифрового автомата с комбинационной частью на логических элементах. Реализация спроектированного автомата в виде иерархического блока со схемой замещения на библиотечных компонентах в режиме SPICE–проектов. Разработка абстрактных символов.
курсовая работа [831,2 K], добавлен 23.09.2013