
4. Примеры конечных автоматов
Одним из критериев сложности конечного автомата является число его состояний. Чем меньше это число, тем проще дискретное устройство, реализующее данный автомат. Поэтому одной из важных задач теории конечных автоматов является построение автомата с наименьшим числом состояний.
Поскольку в современных компьютерах любая информация представляется в виде двоичных кодов, то для построения автомата можно использовать элементы, имеющие лишь два различных устойчивых состояния, одно из которых соответствует цифре 0, а другое цифре 1.
Приведём несколько примеров конечных автоматов.
Пример 1. Элемент задержки (элемент памяти).
Элементы задержки представляют собой устройство, имеющее один вход и один выход. Причем значение выходного сигнала в момент времени t совпадает со значением сигнала в предыдущий момент. Схематично элемент задержки можно изобразить следующим образом (рис. 2).
Предположим, что входной и, следовательно, выходной алфавит есть X={0, 1}, Y={0, 1}. Тогда Q={0, 1}. Под состоянием элемента задержки в момент времени t понимается содержание элемента памяти в данный момент. Таким образом q(t)=X(t1), a Y(t)=q(t)=X(t1).
Зададим элемент задержки таблицей, где а1=0, а2=1, q1=0, q2=1,
(a1, q1)=(0, 0)=0, (a1, q1)=(0, 0)=0;
(a1, q2)=(0, 1)=0, (a1, q2)=(0, 1)=1;
(a2, q1)=(1, 0)=1, (a2, q1)=(1, 0)=0;
(a2, q2)=(1, 1)=1, (a2, q2)=(1, 1)=1;
-
q
a
0
1
0
=0, =0
=0, =1
1
=1, =0
=1, =1
Диаграмма Мура изображена на рис. 3
Для представления этого автомата системой булевых функций используем таблицу автомата и вышеизложенный алгоритм. При этом кодирование производить не нужно, так как входной и выходной алфавиты и состояния уже закодированы.
Обратим внимание на то, что т=п=р=2. Тогда k=r=s=1, и поэтому элемент задержки задается двумя функциями и . Таблица истинности этих функций содержит 2k+r=22=4 строки и k+r+r+s=4 столбца:
-
x
z
0
0
0
0
0
1
0
1
1
0
1
0
1
1
1
1
Пример 2. Двоичный сумматор последовательного действия.
Данный сумматор последовательного действия представляет собой устройство, осуществляющее сложение двух чисел в двоичной системе исчисления. На входы сумматора подаются числа х1 и x2, начиная с младших разрядов. На выходе формируется последовательность, соответствующая записи числа х1+x2 в двоичной системе исчисления (рис. 4).
Входной и выходной алфавиты определены однозначно: X={00; 01; 10; 11}, Y={0,1}. Множество состояний определяется значением переноса при сложении соответствующих разрядов чисел х1 и x2. Если при сложении некоторых разрядов образовался перенос, то будем считать, что сумматор перешел в состояние q1. При отсутствии переноса будем считать, что сумматор находится в состоянии q0.
Сумматор задается таблицей.
-
q
a
q0
q1
00
q0, 0
q0, 1
01
q0, 1
q1, 0
10
q0, 1
q1, 0
11
q1, 0
q1, 1
Диаграмма Мура сумматора последовательного действия изображена на рис. 5.
Заметим, что входные и выходные символы уже закодированы. Состояния закодируем следующим образом: (q0)=0, (q1)=1. Поэтому сумматор последовательного действия задается двумя булевыми функциями, таблица истинности которых следующая:
-
x1
x2
z
0
0
0
0
0
0
0
1
0
1
0
1
0
0
1
0
1
1
1
0
1
0
0
0
1
1
0
1
1
0
1
1
0
1
0
1
1
1
1
1
Пример
3.
Схема сравнения на равенство.
Схема сравнения на равенств представляет собой устройство, сравнивающее два числа х1 и x2, заданное в двоичной системе исчисления. Это устройство работает следующим образом. На вход устройства последовательно, начиная со старших, подаются разряды чисел х1 и x2. Эти разряды сравниваются. При совпадении разрядов на выходе схемы формируется выходной сигнал 0, в противном случае на выходе появляется сигнал 1. Ясно, что появление 1 в выходной последовательности означает, что сравниваемые числа х1 и x2 различны. Если же выходная последовательность является нулевой и ее длина совпадает с числом разрядов сравниваемых чисел, то х1 и x2.
Для этого автомата X={00, 01, 10, 11}; Y={0,1}.
Функционирование схемы определяется двумя состояниями. Состояние q0 соответствует равенству сравниваемых в данный момент разрядов. При этом автомат остается в этом же состоянии. Если в следующий момент сравниваемые разряды будут различны, то автомат перейдет в новое состояние q1 и в нем остается, так как это означает, что числа различны. Таким образом, схему сравнения можно задать таблицей:
-
q
x
q0
q1
00
q0, 0
q1, 1
01
q1, 1
q1, 1
10
q1, 1
q1, 1
11
q0, 0
q1, 1
Диаграмма Мура схемы сравнения на равенство изображена на рис. 6.
Рис. 6
Кодирование состояний произведем следующим образом: (q0)=0, (q1)=1. Автомат будет задаваться двумя функциями.
-
x1
x2
z
0
0
0
0
0
0
0
1
1
1
0
1
0
1
1
0
1
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
0
0
0
1
1
1
1
1
Пример 4. Схема сравнения на неравенство.
Схема сравнения на неравенство представляет собой устройство, позволяющее выяснить, равны ли сравниваемые х1 и x2, и если они не равны, выяснить, какое из них больше другого. Это устройство имеет два входа и два выхода. Выходные сигналы y1(t) и y2(t) определяются по следующим правилам:
y1(t)=y2(t)=0, если x1(t)=x2(t);
y1(t)=1, y2(t)=0, если x1(t)>x2(t), то есть x1(t)=1, x2(t)=0;
y1(t)=0, y2(t)=1, если x1(t)<x2(t), то есть x1(t)=0, x2(t)=1.
Таким
образом, при подаче на вход схемы
сравнения на неравенство чисел
x1=x1(l)…x1(t)
и
x2=x2(l)…x2(t)
последовательно
сравниваются разряды этих чисел, начиная
со старших. Выходные сигналы формулируются
согласно вышеуказанным правилам. При
этом, если выходная последовательность
состоит из нулевых пар, то x1=x2.
Если
первая, отличная от нулевой, пара имеет
вид
,
(
)
то x1>x2
(x1<x2).
Из описания схемы следует, что
X={00, 01, 10, 11}, Y={00, 01, 10}.
Состояние схемы определяется следующим образом. Предположим, что в начальный момент времени t=1 автомат находится в состоянии q1. Если сравниваемые разряды чисел х1 и х2 совпадают, то автомат остается в этом состоянии. Заметим, что на выходе при этом появится сигнал 00. Если же разряд числа х1 будет меньше (больше) соответствующего разряда числа х2, то автомат перейдет в состояние q2 (q3). При этом на выходе появится сигнал 01 (10). В дальнейшем при подаче оставшихся разрядов чисел х1 и х2 на входы автомата автомат будет оставаться в состоянии q2 (q3) и вырабатывать выходной символ 10 (01). Из вышеизложенного следует, что схему сравнения на неравенство можно задать таблицей:
-
q
x
q1
q2
q3
00
q1, 00
q2, 01
q3, 10
01
q2, 01
q2, 01
q3, 10
10
q3, 10
q2, 01
q3, 10
11
q1, 00
q2, 01
q3, 10
Соответствующая
диаграмма Мура изображена на рис. 7.
Входной и выходной алфавиты здесь уже закодированы. Состояния q1, q2 и q3 закодируем: 1(q1)=00, (q2)=01, (q3)=10.
Следовательно, данную схему можно задать системой, состоящей из четырех булевых функций, которые зависят от четырех переменных. Эти функции частично определены и задаются таблицей истинности
-
x1
x2
z1
z2
1
2
1
2
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
0
1
0
1
0
1
0
*
0
0
1
1
1
1
1
1
0
1
0
0
0
1
0
1
0
1
0
1
0
1
0
1
0
1
1
0
0
1
0
1
*
0
1
1
1
1
1
1
1
1
0
0
0
1
0
1
0
1
0
0
1
0
1
0
1
1
0
1
0
1
0
1
0
*
1
0
1
1
1
1
1
1
1
1
0
0
0
0
0
0
1
1
0
1
0
1
0
1
1
1
1
1
1
0
1
0
*
1
1
1
1
1
1
1
1
В таблице символами * отмечены наборы переменных x1, x2, z1, z2, на которых функции 1, 2, 1, 2 не определены. Положим значения функций 1, 2, 1, 2 на этих наборах равными 1.