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

advertisement
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
Самарский государственный архитектурно-строительный университет
Факультет информационных систем и технологий
Кафедра прикладной математики и вычислительной техники
О.В. Прохорова
Методические указания к выполнению курсовой работы
«Синтез конечных автоматов» для студентов специальности 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.
Грамматика называется праволинейной, если правая часть каждого
правила содержит не более одного нетерминала, причем этот нетерминал
является самым правым символом.
Грамматика называется автоматной, если ее правила имеют вид:
AxB;
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. S5x2 S6
6. S4x2 B
21. S6 x5 S7
7. S  x5 C
22. S7 x1
8. S  x7 F
23. Fx4 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
Download