Министерство образования и науки РФ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Самарский государственный архитектурно-строительный университет Факультет информационных систем и технологий Кафедра прикладной математики и вычислительной техники О.В. Прохорова Методические указания к выполнению курсовой работы «Синтез конечных автоматов» для студентов специальности 090302 по дисциплине «Информационные системы и технологии» Самара 2015 1 Изложены основные требования к выполнению курсовой работы по синтезу конечных автоматов. Приведено индивидуальное задание, описан пример построения автомата по заданной грамматике и его схемотехническая реализация, даны сведения, необходимые для выполнения работы. . 2 Оглавление Введение ................................................................................................................... 4 1. Задание на курсовое проектирование ............................................................. 5 2. Построение и преобразование грамматик ...................................................... 8 3. Построение детерминированного конечного автомата ................................ 10 4. Минимизация автомата .................................................................................... 13 5. Работа с сетями Петри ...................................................................................... 16 6. Кодирование состояний автомата .................................................................. 19 7. Структурный синтез автомата ........................................................................ 24 Литература ............................................................................................................. 40 3 Введение Синтез конечных автоматов является важным разделом в изучении вопросов организации вычислительных процессов и структур. Необходимость в построении теории автоматов возникла с развитием вычислительной техники, с появлением теории формальных языков и грамматик - теории, позволяющей описывать и анализировать синтаксические свойства языков программирования и других формальных языков. Потребовалось решение вопросов преобразования грамматик в автоматы, которые бы распознавали и транслировали множества, задаваемые грамматиками. Основой изучения данного раздела теории является построение базовых формальных моделей описания логических структур, динамики поведения вычислительных структур; выработка навыков проектирования вычислительных систем; формирование представления о методах, используемых при решении задач анализа, синтеза организации функционирования вычислительных структур и системного программного обеспечения. 4 1. Задание на курсовое проектирование 1. Построение право-линейной грамматики по полученным данным. 2. Переход от право-линейной грамматики к автоматной. Результат Право-линейная и автоматная грамматики. 3. Построение недетерминированного распознающего автомата. 4. Результат - таблица переходов и граф переходов автомата. 5. Переход от недетерминированного автомата к полностью определенному детерминированному автомату. Результат - таблица переходов и граф переходов автомата, проверка эквивалентности автоматов. 6. Минимизация автомата. Построение таблиц переходов на основе эквивалентных преобразований. Построение разбиения множества состояний на классы эквивалентности. Результат - таблица переходов и граф переходов минимального автомата. 7. Выполнение предыдущего этапа с использованием сети Петри. Результат - сеть Петри, соответствующая автоматной грамматике, и минимальная сеть Петри. Сравнение полученной минимальной сети с таблицей переходов минимального автомата. 8. Кодирование состояний автомата. Результат - логические функции переключения элементов памяти; логические функции состояния ошибки и состояния, подтверждающего принадлежность 5 анализируемой формальной цепочки входных символов формальному языку заданной грамматики. 9. Построение комбинационной схемы автомата. Для синтеза конечного автомата задана формальная грамматика G = < V , W , S , R >, где V = {c1, c2,..., c18} - словарь терминальных символов; W = {S, A, B, C, D, E, F} - словарь нетерминальных символов; S - начальный символ грамматики; R - множество правил вывода: S c1 c 2 c3 A С c8 E S c1 c 4 c5 B C c9 S c6 C D c10 S S c7 F D c11 A c8 D E c10 S A c9 E c11 B c8 E F c12 c13 c14 c15 B c9 F c10 c13 c14 c15 F c17 c18 c15 Задача курсовой работы - синтезировать конечный автомат, распознающий цепочки входного языка на принадлежность заданной грамматике. Для выполнения индивидуальной работы требуется перейти к новому терминальному словарю, используя табл. 1 и 2. 6 Таблица 1 А Б В Г Д Е Ж З И Й К Л М Н О П x1 x5 x2 x4 x6 x6 x4 x3 x3 x0 x7 x0 x3 x7 x4 x5 Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Э Ю Я x0 x4 x5 x7 x2 x5 x4 x2 x2 x0 x6 x1 x1 x3 x7 x5 Таблица 2 c1 c2 c3 c4 c5 д о с о x6 x4 x4 x6 c6 c7 c8 c9 c10 c11 c12 c13 в я р о с л а в X2 x5 x7 x0 x4 x4 x0 X1 x2 c14 x5 c15 c16 c17 c18 а л е к X1 X0 X6 X7 7 2. Построение и преобразование грамматик На основе использования табл.1 и 2 составляется грамматика индивидуальная для конкретного студента. Например, 1. S x6 x4 x4 A 9. C x0 E 2. S x6 x6 x2 B 10. C x4 3. S x5 C 11. D x4 S 4. S x7 F 12. D x0 5. A x0 D 13. E x4 S 6. A x4 14. E x0 7. B x0 E 15. F x1 x2 x5 x1 8. B x4 16. F x4 x2 x5 x1 17. F x6 x7 x1. Грамматика называется праволинейной, если правая часть каждого правила содержит не более одного нетерминала, причем этот нетерминал является самым правым символом. Грамматика называется автоматной, если ее правила имеют вид: AxB; A x , где x V , В W. Для сведения праволинейной грамматики к автоматной используют следующий прием (в качестве примера возьмем одно из правил приведенной выше грамматики, а именно, правило S -> x7 x0 x1 A). Перепишем левую часть правила и первый слева символ правой части, а оставшуюся от правой части цепочку обозначим новым нетерминальным 8 символом, который дополнительно будет вводиться в грамматику, например , S1. В результате получим следующее новое правило: S x7 S1; Затем, S1 x0 x1 A. аналогичным способом преобразуем правило для S1 (получим правила вида S1 x0 S2 и S2 x1 A). Правило S2 не требует дальнейших преобразований, так как оно удовлетворяет требованиям правил автоматной грамматики. Данным образом преобразуются все правила грамматики, которые имеют в правой части цепочку терминальных символов. Продолжим пример. Из праволинейной грамматики, записанной выше, получаем автоматную грамматику G’ с правилами вывода вида: 1. S x6 S1 16. D x0 2. S1 x4 S2 17. E x4 S 3. S2 x4 A 18. E x0 4. S x6 S3 19. F x1 S5 5. S3 x6 S4 20. S5x2 S6 6. S4x2 B 21. S6 x5 S7 7. S x5 C 22. S7 x1 8. S x7 F 23. Fx4 S6 9. A x0 D 24. F x6 S8 10. А x4 25. S8 x7 S7. 11. B x0E 12. B x4 13. C x0 E 14. C x4 15. D x4 S 9 3. Построение детерминированного конечного автомата Для автоматной грамматики строится таблица переходов недетерминированного автомата (в таблице по строкам расположены состояния, а по столбцам - входные символы, в клетках на пересечении i-й строки и j-го столбца проставляется состояние, в которое переходит автомат из состояния i по приходу входного символа j ). Для этого каждому нетерминалу ставится в соответствие некоторое состояние автомата. Затем по грамматике таблица заполняется следующим образом: на пересечении строки состояния, соответствующего нетерминалу левой части правила, и столбца, соответствующего терминальному символу, ставится состояние, соответствующее нетерминальному символу правой части правила. Если нетерминал в правой части отсутствует, то в клетке таблицы ставится заключительное состояние, которое вводится дополнительно к уже имеющимся состояниям. Приведение недетерминированного автомата к детерминированному виду Детерминированным конечным автоматом называется конечный автомат, любая клетка таблицы переходов которого не содержит несколько состояний. В пустой клетке подразумеваем состояние ошибки. Процедура приведения недетерминированного конечного автомата к детерминированному (по таблице переходов) сводится к следующему: 1. Определяется клетка, в которой содержится 2 или более состояний ( например, qi и qj). 10 2. Строка i и строка j накладываются друг на друга, и в таблице переходов появляется новая склеенная строка, соответствующая новому состоянию qi, j. 3. Если состояние qi или qj стоит отдельно или в другими состояниями еще в какой-либо комбинации клетке с таблицы, то соответствующая строка i или j сохраняется в таблице, иначе - убирается из таблицы после склеивания. Продемонстрируем изложенное на примере: Таблица 3 Состояние q0 x0 x1 x2 S (нач. сост.) x3 x4 x5 x6 x7 q15 q3 q7 ,q9 q6 q1 A q4 q15 q2 B q5 q15 q3 C q5 q15 q4 D q15 q0 q5 E q15 q0 q6 F q7 S1 q8 q8 S2 q1 q9 S3 q 10 S4 q2 q 11 S5 q12 q 12 S6 q 13 S7 q 14 S8 q 15 закл. сост. q11 q14 q12 q10 q13 q15 Склеиваем состояния q7 и q9 в состояние q13 q7,9 . В итоге, получаем таблицу 4: 11 Таблица 4 Состояние q0 x0 x1 x2 S (нач. сост.) x3 x4 x5 x6 x7 q15 q3 q7 ,9 q6 q1 A q4 q15 q2 B q5 q15 q3 C q5 q15 q4 D q15 q0 q5 E q15 q0 q6 F q7,9 q11 q12 q14 S1 q8 q10 q8 S2 q1 q 10 S4 q2 q 11 S5 q12 q 12 S6 q 13 S7 q 14 S8 q 15 закл. сост. q13 q15 q13 12 4. Минимизация автомата Теорема. Для любого автомата существует минимальный автомат единственный с точностью до изоморфизма. Рассмотрим алгоритм минимизации автомата по методике Мура: 1. В таблице переходов автомата отыскиваются строки, у которых имеются рабочие состояния в одинаковых столбцах. Под рабочим состоянием будем понимать состояние, отличное от состояния ошибки. Состояние ошибки на таблице переходов обозначено пустой клеткой. Состояния, соответствующие таким строкам, заносятся в группы. 2. Рабочие состояния внутри группы проверяются на эквивалентность. Два состояния qi и qj называются эквивалентными, если для любого входного символа Xk функции выходов и функции переходов пар ( qi, Xk ) , ( qj, Xk ) будут равны. 3. Если среди рабочих состояний групп через ряд проверок устанавливается эквивалентность, то такие состояния также считаются эквивалентными. Удаляем из таблицы строку состояния q9, так как на состояние q9 нет больше переходов. Cтроку состояния q7 заменяем на склеенную строку q7,9, так как на состояние q7 нет больше переходов. Состояния q1, q2, q3 - эквивалентны, удаляем строки q2 и q3. Заменяем в таблице 5 все q2 и q3 на q1. Состояния q4 и q5 - эквивалентны, удаляем строку q5, соответственно q5 в таблице 4 заменяем на q4. В итоге, получаем таблицу 5: 13 Таблица 5 Состояние q0 x0 x1 x2 x3 S (нач. сост.) x4 x5 x6 x7 q15 q1 q7 ,9 q6 q1 A q4 q15 q4 D q15 q0 q6 F q7,9 q11 q12 q14 S1 q8 q10 q8 S2 q1 q 10 S4 q1 q 11 S5 q12 q 12 S6 q 13 S7 q 14 S8 q 15 закл. сост. q13 q15 q13 q0 Продолжим рассматривать решение в соответствии с обозначенным алгоритмом. Анализ делаем по табл. 4. Группы состояний, проверяемые на эквивалентность, следующие: ( q1;q2;q3), (q4; q5,). Проведем анализ этих состояний по переходам. Устанавливаем, что состояния q1, q2 и q3, а также состояния q4 и q5 являются эквивалентными по определению. Обозначив эквивалентные состояния одним состоянием, введем новые нетерминальные символы r вместо q. Будем иметь: r0 = q0; r1 = q1; r2 = q4; r3 = q6; r4 = q7,9; r5 = q8; r6 = q10; r7 = q11; r8 = q12; r9 = q13, r10= q14, r11=q15; Введем полученные замены и подстановки в табл.5 переходов автомата. Будем иметь новую таблицу 6 эквивалентную с точностью до изоморфизма таблице переходов 5. 14 Таблица 6 Соответствие нетерминалов r0 - Терминалы Х0 Х1 Х2 Х3 q0 Х4 Х5 Х6 Х7 r11 r1 r4 r3 нач.сост. r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11- q1 q4 q6 q7,9 q8 q10 q11 q12 q13 q14 q15 r2 r11 r11 r0 r8 r5 r1 r7 r10 r6 r1 r8 r9 r11 r9 ro закл. сост 15 5. Работа с сетями Петри Сеть Петри определяется как формальная система, характеризуемая 4 формальными объектами: S = < P, T, E, M0 >, где P - конечное множество позиций; T - конечное множество переходов; E - конечное множество дуг; M0 - начальная маркировка. Графически сеть Петри изображается двудольным графом с двумя типами вершин P и T. При переходе от грамматики к сети ассоциируют с нетерминальными символами, а Петри позиции переходы - с терминальными. Позиции могут иметь несколько входящих и исходящих дуг, а переходы - одну входящую дугу и не более одной исходящей дуги для автоматных сетей . Процедура минимизации конечного автомата с использованием сети Петри: 1. На сети выделяются 2 позиции, имеющие одинаковое количество одинаковых входных переходов. 2. Позиции склеиваются. При этом множества входящих и исходящих дуг этих позиций объединяются без дублирования. 3. На сети выделяются 2 позиции, имеющие одинаковое количество одинаковых выходных переходов. 4. Позиции склеиваются. При этом множества входящих и исходящих дуг этих позиций объединяются без дублирования. 5. Если на найденные позиции есть ссылки из других позиций, то они остаются в сети, иначе удаляются после склеивания вместе с входными и выходными дугами и соответствующими переходами. 16 6. Если из некоторой позиции по одинаковому переходу xi существует более одной выходной позиции, то такие выходные позиции должны быть склеены. Процедура повторяется с п. 1 до тех пор, пока позиции сети могут быть склеены. Рассмотрим построение сети Петри для автоматной грамматики. Выполняя все необходимые правила построения сети и минимизации автомата по сети, последовательно получим сети, приведенные на рис.1 -3. На последней сети Петри проставлены ri, по разметке которых легко сравнить результаты минимизации автомата по сети Петри с минимизацией автомата по методике алгоритма Мура (См. табл. 6). Рис. 1. Сеть Петри, составленная по автоматной грамматике Применяя выше названные правила минимизации сети Петри, можно объединить вершины {D, E} и {A,B,C} согласно правилам 3-4. У них имеется на выходе одинаковое количество одинаковых переходов. Затем объединяются вершины {S1,S3} согласно правилам 1-2. Построим сеть после преобразования, получим: 17 Рис. 2. Минимизированная сеть Петри Если провести параллель между состояниями минимизированного детерминированного автомата и минимальной сетью Петри, то можно установить соответствие: r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 S A,B,C D,E F S1,S3 S2 S4 S5 S6 S7 S8 Z 18 6. Кодирование состояний автомата Кодирование автомата определяет обеспечение одного из важнейших свойств автомата, а именно устойчивость автомата по отношению к состязаниям элементов памяти. Переходам автомата из одного состояния в другое сопоставим изменение состояний элементов памяти. Если на входы двух элементов памяти сигнал, то на выходе сигнал возникнет подать не одновременно один одновременно. Это явление называется состязаниями элементов памяти. Считается, что автомат работает устойчиво, если в процессе его работы не возникает критических состязаний. Критическим считаем такое состязание элементов памяти, когда автомат под действием одного и того же входного воздействия может перейти в разные состояния. Поэтому первоочередной задачей кодирования является обеспечение устойчивости автомата. Существует 2 способа кодирования автомата. Первый характеризуется устранением всех состязаний элементов памяти. Для этого всем внутренним состояниям, для которых существуют переходы, приписываются соседние кодовые комбинации, отличающиеся друг от друга одной переменной. Второй способ кодирования связан только с устранением критических состязаний. Методы первой и второй групп имеют свои преимущества и свои недостатки. Чтобы приступить к кодированию, которое необходимо выполнить для построения в последующем структурной схемы автомата, введем в табл. 6 переходов автомата символ конца цепочки входных символов, например, символ x3, который оказался неиспользуемым в рассматриваемой грамматике. Соответственно, необходимо в таблицу переходов ввести переход из заключительного состояния r11 в начальное состояние r0 по входному символу x3. Новая таблица переходов примет вид, показанный 19 табл. 7, в которой последний столбец отведен для формируемых кодов состояний автомата. Число внутренних переменных кода, изменяющих свои значения при переходе автомата из одного состояния в другое, есть расстояние по Хеммингу между этими кодами . Наименьшее число переменных, необходимое синхронного автомата с N внутренними для кодирования состояниями определяется формулой: n = ] log2 (N) [ ] [ - ближайшее сверху к log2 (N) целое число. Например, при N=13 n будет равно 4. Число кодовых переменных, необходимое для кодировки состояния автомата соседними кодами определяется по формуле: n = 2 ] log2 (N) [ - 1. Знаком обозначена операция умножения. Чем меньше внутренних переменных изменяется при любом переходе, тем проще реализация функций переходов, т.е. проще структурная реализация автомата. В курсовой работе используется код минимальной длины. В связи с этим может возникнуть ситуация, когда все соседние коды заняты, а состояния автомата еще не закодированы в полном объеме. Это требует увеличения расстояния по Хеммингу на следующем шаге кодирования. Кодирование будем осуществлять методом проб и ошибок. 20 Таблица 7 x0 r0 x1 x2 x3 нач. сост. r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 закл. сост. r2 r11 r7 x4 r11 r11 r0 r8 r5 r1 x5 r1 x6 r4 x7 r3 r10 r6 r1 r8 r9 r11 r9 r0 Код 0000 0001 0101 0010 0100 1100 0110 0011 1010 1110 0110 1000 Таблица 8 x0 r0 x1 x2 x3 нач. сост. r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 закл. сост. r2 r11 r7 x4 r11 r11 r0 r8 r5 r1 x5 r1 x6 r4 x7 r3 r10 r6 r1 r8 r9 r11 r9 r0 Код 0000 1000 1001 0100 0010 1010 0011 1100 0110 0111 0101 0001 21 Таблица 9 x0 r0 x1 x2 x3 x4 r11 r11 r0 r8 r5 r1 нач. сост. r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 закл. сост. При r2 r11 r7 x5 r1 x6 r4 Код 0000 0010 0110 0001 1000 1100 1010 1001 0011 0111 0101 0100 x7 r3 r10 r6 r1 r8 r9 r11 r9 r0 этом используем направления кодирования состояний, представленные на рис. 4. r10 r8 r9 r3 r7 r0 r11 r4 r5 r1 r2 r6 Рис. 4 Выполним три варианта кодирования (Таблицы 7, 8, 9), из которых выберем наилучший на основе критерия Махалонобиса. Критерием кодирования автомата считаем минимум функционала Махаланобиса. Фм M ( ri , rj ) min , i , j 1 22 где M - число переходов. Через (ri , rj) обозначено расстояние между кодами ri и rj по Хеммингу. В результате получим, что в первом случае суммарное расстояние по Хеммингу для 20 переходов равно 32, а во втором и третьем случае - 26. Выберем третий вариант. 23 7. Структурный синтез автомата Выберем в качестве структурной схемы распознающего автомата следующую схему: Рис. 5. Структурная схема распознающего автомата Схема (рис. 5) состоит из комбинационной схемы, реализующей функцию возбуждения элементов памяти. Элементы памяти построены из триггеров по двухрегистровой схеме. Схема содержит также дешифратор входных сигналов. При синхронной реализации автомата предполагается, что все переходные процессы в этих схемах успевают закончиться к моменту прихода сигнала t1, стробирующего (разрешающего) прием информации с выходов комбинационной схемы в триггеры регистра 1. Второй триггерный регистр, прием информации в который стробируется синхросигналом t2, нужен для того, чтобы все состояния автомата сделать устойчивыми. Триггеры регистра 1 будем называть вспомогательными, а регистра 2 основными. derr - сигнал функции ошибки; dok - сигнал функции принадлежности цепочки входных символов языку с грамматикой G’, (p1, p2, p3 - код 24 входного символа); z(t-1) - код предыдущего состояния; z(t) - код нового состояния С помощью сигнала НУ осуществляется начальная установка триггеров автомата. Дешифратор преобразует двоичный код символов (p1,p2,p3) в унитарный код, в котором только одна из выходных переменных принимает значение 1, в то время как все другие равны 0. Комбинационная схема автомата реализует функцию его переходов. Исходным заданием для ее построения является таблица или граф переходов, а также выбранный вариант кодирования . Построить функцию переходов, значит найти переключательную функцию кодирующих (внутренних) переменных. Каждая внутренняя переменная кода (z1,z2,z3,z4 ) представляет собой состояние соответствующего элемента памяти, то есть триггера. По переключательным функциям внутренних переменных находятся функции возбуждения соответствующих им триггеров. Реализация этих функций образует комбинационную схему автомата. Рассмотрим часть общей комбинационной схемы автомата, реализующую функцию переходов по x0, x1, ..., x7. 25 Рис. 6. Общая комбинационная схема автомата Рассмотрим построение логической схемы f x i на примере для f(x0): z(t) xo f(xo) z(t+1) Рис. 7. Общий вид схемы обработки сигнала х0 Пусть входной сигнал xo обрабатывается автоматом в соответствии с функцией переходов следующим образом: r1 r2; r2 r11. Приведем таблицу кодировки (см. табл.8), чтобы на ее основе построить таблицу переходов автомата по символу xo. 26 Таблица 8 r0 r1 r2 r3 r4 r5 r6 r7 0000 0010 0110 0001 1000 1100 1010 1001 r8 r9 r10 r11 0011 0111 0101 0100 Cоставим таблицу переходов автомата по символу x0: Таблица 9 ri t t+1 z1 z2 z3 z4 z1 z2 z3 z4 r1 0 0 1 0 0 1 1 0 r2 0 1 1 0 0 1 0 0 Запишем в соответствии с табл.9 функции z(t+1). Будем иметь: z1(t+1) = z1(t); z2(t+1) = z3(t); z3 (t+1) = z 2(t ); z4(t+1) = z1(t); Построим схему на элементах И-НЕ: Рис. 8. Схема обработки входного сигнала х0 27 Аналогично составляются логические функции остальных zi (t+1) и строятся соответствующие им комбинационные схемы fxi , а в итоге и вся схема : xi & z (t) z (t+1) , то есть схема таблицы переходов автомата. В случае, когда по таблице переходов сложно записать функцию zi(t+1), применяют построение карт Карно и минимизацию слабо определенных функций. Cоставим таблицу переходов автомата по символу x1: Таблица 10 ri t t+1 z1 z2 z3 z4 z1 z2 z3 z4 r3 0 0 0 1 1 0 0 1 r9 0 1 1 1 0 1 0 0 Запишем в соответствии с табл.10 функции z(t+1). Будем иметь: z1 (t+1) = z 2(t ); z3(t+1) = z1(t); z2(t+1) = z2(t); z4 (t+1) = z 2(t ); Построим схему на элементах И-НЕ: 28 Рис. 9. Схема обработки входного сигнала х1 Cоставим таблицу переходов автомата по символу x2: Таблица 11 ri t t+1 z1 z2 z3 z4 z1 z2 z3 z4 r6 1 0 1 0 0 0 1 0 r7 1 0 0 1 0 0 1 1 Запишем в соответствии с табл.11 функции z(t+1). Будем иметь: z1 (t+1) = z2(t); z2(t+1) = z2(t); z3(t+1) = z 2(t ); z4 (t+1) = z4 (t); Построим схему на элементах И-НЕ: 29 Рис. 10. Схема обработки входного сигнала х2 Cоставим таблицу переходов автомата по символу x3: Таблица 12 ri r11 t t+1 z1 z2 z3 z4 z1 z2 z3 z4 0 1 0 0 0 0 0 0 Запишем в соответствии с табл.12 функции z(t+1). Будем иметь: z1 (t+1) = z1(t); z3(t+1) = z1 (t); z2(t+1) = z1(t); z4 (t+1) = z1 (t); Построим схему на элементах И-НЕ: 30 Рис. 11. Схема обработки входного сигнала х3 Cоставим таблицу переходов автомата по символу x4: Таблица 13 ri t t+1 z1 z2 z3 z4 z1 z2 z3 z4 r0 0 0 0 0 0 1 0 0 r1 0 0 1 0 0 1 0 0 r2 0 1 1 0 0 0 0 0 r3 0 0 0 1 1 0 1 1 r4 1 0 0 0 1 1 0 0 r5 1 1 0 0 0 0 1 0 Запишем в соответствии с табл.13 функции z(t+1). Будем иметь: z1 (t+1) = z1(t ) & z 2(t ) & z3(t ) & z 4(t ) ; z3(t+1) = z1(t ) & z 2(t ) & z 4(t ) & z1(t ); z2(t+1) = z3(t ) & ( z 4(t ) & z 2(t )); z4 (t+1) = z1(t ) & z 2(t ) & z3(t ) & z 4(t ); Построим схему на элементах И-НЕ: 31 Рис. 12. Схема обработки входного сигнала х4 Cоставим таблицу переходов автомата по символу x5: Таблица 14 ri t t+1 z1 z2 z3 z4 z1 z2 z3 z4 r0 0 0 0 0 0 0 1 0 r8 0 0 1 1 0 1 1 1 Запишем в соответствии с табл.14 функции z(t+1). Будем иметь: z1 (t+1) = z1(t); z3(t+1) = z1(t ); z2(t+1) = z3(t); z4 (t+1) = z3 (t); Построим схему на элементах И-НЕ: 32 Рис. 13. Схема обработки входного сигнала х5 Cоставим таблицу переходов автомата по символу x6: Таблица 15 ri t t+1 z1 z2 z3 z4 z1 z2 z3 z4 r0 0 0 0 0 0 1 0 0 r3 0 0 0 1 0 1 0 1 r4 1 0 0 0 1 0 1 0 Запишем в соответствии с табл.15 функции z(t+1). Будем иметь: z1 (t+1) = z 4(t ); z3(t+1) = z1(t); z2(t+1) = z4(t); z4 (t+1) = z4 (t); Построим схему на элементах И-НЕ: 33 Рис. 14. Схема обработки входного сигнала х6 Cоставим таблицу переходов автомата по символу x7: Таблица 16 ri t t+1 z1 z2 z3 z4 z1 z2 z3 z4 r0 0 0 0 0 0 0 0 1 r10 0 1 0 1 0 1 1 1 Запишем в соответствии с табл.16 функции z(t+1). Будем иметь: z1 (t+1) = z1(t); z3(t+1) = z2(t); z2(t+1) = z2(t); z4 (t+1) = z1(t ); Построим схему на элементах И-НЕ: 34 Рис. 15. Схема обработки входного сигнала х7 Функция возбуждения сигнала ошибки может быть представлена в виде: derr = x0 derrx0 x1 & derr x1 ... x7 & derr x7. Считаем, что ошибки по xi могут возникать тогда, когда на xi сработало какое-либо другое состояние, не соответствующее заданному по таблице переходов. Другими словами, при приходе сигнала xi автомат находился не в тех состояниях, которые ему были предписаны таблицей переходов. Построим соответствующую таблицу: 35 Таблица 17 r ¬derr x0 ¬derr x1 ¬derr x2 ¬derr x3 ¬derr x4 ¬derr x5 ¬derr x6 ¬derr x7 0 0000 0 0 0 0 1 1 1 1 1 0010 1 0 0 0 1 0 0 0 2 0110 1 0 0 0 1 0 0 0 3 0001 0 1 0 0 1 0 1 0 4 1000 0 0 0 0 1 0 1 0 5 1100 0 0 0 0 1 0 0 0 6 1010 0 0 1 0 0 0 0 0 7 1001 0 0 1 0 0 0 0 0 8 0011 0 0 0 0 0 1 0 0 9 0111 0 1 0 0 0 0 0 0 10 0101 0 0 0 0 0 0 0 1 11 0100 0 0 0 1 0 0 0 0 Анализ табл. 17 показывает, что в ней больше нулей, чем единиц. Поэтому по ней удобно строить логическую функцию для derrxi . Для каждой функции derrxi проводим минимизацию слабо определенной функции. Затем берется отрицание полученной в ходе минимизации функции. Запишем функции ошибок при обработке x0, x1 и т.д.: Для x0: (¬z1 ¬z2 z3 ¬z4) v (¬z1 z2 z3 ¬z4) = (¬z4 ¬z1 z3) & (¬z2 v z2) = ¬z4 ¬z1 z3 ¬ d err , x0 z1 & z 4 & z3 derr , x0 z1 & z 4 & z3 Для x1: (¬z1 ¬z2 z3 z4) v (¬z1 ¬z2 ¬z3 z4) = (¬z1 ¬z2 z4) & (z3 v ¬z3) = ¬z1¬ z2 z4 ¬ d err , x1 z1 & z 2 & z 4 36 d err , x1 z1 & z 2 & z 4 Для x2: (z1 ¬z2 z3 ¬z4) v (z1 ¬z2 ¬z3 z4) ¬ derr , x2 (z1 z2 z3 z4) & (z1 z2 z3 z4) d err , x2 (z1 z2 z3 z4 ) & (z1 z2 z3 z4) Для x3: ¬ derr , x3 z1 & z 2 & z3 & z 4 d err , x3 z1 & z 2 & z3 & z 4 Для x4 проведём минимизацию при помощи карты Карно: (¬z1 ¬z4) v (z1 ¬z4) v (z4 ¬z2 ¬z3 ¬z1) = ¬z4 (z1 v ¬z1) v (z4 ¬z1 ¬z2¬z3) = ¬z4 v (¬z1 ¬z2 ¬z3 z4) ¬ derr , x 4 z 4 & ( z1 & z 2 & z3 & z 4) derr , x4 z4 & (z1 z2 z3 z4) Для x5: (¬z1 ¬z2 ¬z3 ¬z4) v (¬z1 ¬z2 z3 z4) ¬ derr , x5 (z1 z2 z3 z4 ) & (z1 z2 z3 z4) d err , x5 (z1 z2 z3 z4) & (z1 z2 z3 z4) Для x6 проведём минимизацию при помощи карты Карно: 37 (¬z3 ¬z2) v (¬z3 ¬z4 z1) = ¬z3 (¬z2 v ¬z4 z1) ¬ derr , x6 z3 & ( z 2 & ( z 4 & z1)) derr , x6 z3 & ( z 2 & ( z 4 & z1)) Для x7: (¬z1 ¬z2 ¬z3 ¬z4) v (¬z1 z2 ¬z3 z4) ¬ derr , x7 (z1 z2 z3 z4) & (z1 z2 z3 z4) d err , x7 (z1 z2 z3 z4) & (z1 z2 z3 z4) Функцию ошибки можно представить формулой вида derr x0 & derrx 0 x7 & derrx 7 = x0 & ( z1 & z 4 & z3) & x1 & ( z1 & z 2 & z 4) & x2 & (z1 z2 z3 z4 ) & (z1 z2 z3 z4) & x3 & z1 & z 2 & z3 & z 4 & x4 & z4 & (z1 z2 z3 z4) & x5 & (z1 z2 z3 z4 ) & (z1 z2 z3 z4) & x6 & z3 & ( z 2 & ( z 4 & z1)) & x7 & (z1 z2 z3 z4) & (z1 z2 z3 z4) которая после формирования необходимых логических функций будет изображаться соответствующей комбинационной схемой. Сигнал dok=1 вырабатывается только тогда, когда на вход автомата пришел сигнал «конец цепочки», в рассматриваемой задаче x3, а автомат находился в заключительном состоянии, то есть dok derrx3 & x3 1 dok ( z1 & z 2 & z 3 & z 4) & x3 1 Очевидно, при этом ¬ derr = 1. 38 Комбинационная схема функции dok строится аналогично рассмотренным выше построениям. 39 Литература 1. Нейман, Джон фон. Теория самовоспроизводящихся автоматов. Изд. 2-е. - Москва : Либрокром, 2010. - 382 с. 2. Прохорова О.В. Информационные технологии: Учебное пособие. - Самара: СГАСУ, 2012. – 129 c. 3. Прохорова О.В. Синтез распознающих автоматов. Самара: СГАСУ. 2013. – 36 с. 4. Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы проектирования компиляторов. - М.: Мир, 1979. - 654 с. 5. Кузнецов О.П., Адельсон-Вельский Г.М. Дискретная математика для инженера. - М. : Энергия, 1980. - 342с. 6. Шоломов Л.А. Основы теории дискретных логических и вычислительных устройств. - М.: Наука, 1980. - 400 с. 7. Граф Ш., Гессель М. Схемы поиска неисправностей. М. : Наука, 1989. - 320 с. 8. Коршунов Ю. М. Математические основы кибернетики. - М. : Энергия, 1980. - 423 с. 40