- •246019, Г. Гомель, ул. Советская, 104
- •Введение
- •Тема 1 булевы функции
- •Лабораторная работа 1
- •Тема 2 нормальные формы булевых функций
- •Лабораторная работа 2
- •Тема 3 минимизация булевых функций
- •Лабораторная работа 3
- •Тема 4 контактные и логические схемы
- •Лабораторная работа 4
- •Тема 5 полнота и замкнутость
- •Лабораторная работа 5
- •Тема 6 алгебра логики предикатов
- •Лабораторная работа 6
- •Тема 7 конечные автоматы
- •Лабораторная работа 7
- •Тема 8 рекуррентные функции
- •Лабораторная работа 8
- •Тема 9 машина тьюринга
- •Лабораторная работа 9
Тема 7 конечные автоматы
7.1 Детерминированные функции
7.2 Ограниченно-детерминированные функции
7.3 Канонические уравнения
7.4 Диаграммы Мура
Основные понятия по теме
Автоматом называют дискретный преобразователь информации, способный принимать различные состояния, переходить под воздействием входных сигналов из одного состояния в другое и выдавать выходные сигналы.
Если множество состояний автомата, а также множество входных и выходных сигналов конечны, то автомат называют конечным автоматом. Все реальные автоматы являются конечными.
Информацию, поступающую на вход автомат и преобразующую входную информацию, принято кодировать конечной совокупностью символов. Эту совокупность называют алфавитом, отдельные символы, образующие алфавит, – буквами, а любые конечные упорядоченные последовательности букв данного алфавита – словами в этом алфавите.
Автоматы функционируют в дискретные моменты времени, которые обозначаются натуральными числами t = 0, 1, 2,…. В каждый момент дискретного времени на вход автомата поступает один сигнал (буква), фиксируется определённое состояние автомата и с выхода снимается один сигнал. Реальные автоматы могут иметь, вообще говоря, несколько входов и выходов. В некоторых случаях для решения задач синтеза удобно заменить такие автоматы автоматами с одним входом и одним выходом. Для этого достаточно закодировать соответствующим образом входные и выходные сигналы исходного алфавита. Если, например, автомат имеет два входа, на каждый из которых подаются сигналы 0 или 1, то все возможные комбинации входных сигналов можно закодировать четырьмя буквами (0, 0), (0, 1), (1, 0), (1, 1).
Процесс дискретного преобразования информации автоматами можно описать с помощью детерминированных функций.
Обозначим
через
={0,
1, …, k-1},
где k
– некоторое натуральное число, а через
множество всех k-значных
последовательностей a
таких, что
а = {a(1),
a(2),…,
a(t),
…}, где
a(i)![]()
для всех i
= 1, 2,… .
Обозначим
через
множество всех функций y
= f
,
определённых на наборах
,
где
и принимающих значение из
.
Функции из
преобразуют наборы k-значных
последовательностей в k-значные
последовательности. В множество
включим также все последовательности
из
,
рассматривая их как функции, зависящие
от пустого множества переменных, т. е.
как константы.
С
помощью векторной записи функции от n
переменных из
можно свести к функции от одной переменной.
Обозначим набор переменных
через Х,
вместо y
= f
будем писать y
= f
(Х).
При этом значение переменной Х
есть вектор а
=
,
компонентами которого являются
последовательности из
,
.
Будем рассматривать
а как
последовательность векторов
,
где
.
Таким образом, мы будем считать, что выполняется тождество:

.
Лемма
1
Число наборов
,
где
равно
.
Итак,
функцию y
= f![]()
с помощью векторной записи можно свести
к функции y
=
![]()
,
где N
=
.
Таким образом, изучение функции y
= f
из
можно свести к изучению функции от одной
переменной из
,
где N
=
.
Определение
1 Функция y
=
из
называется детерминированной, если,
каково бы ни было число
t
и каковы бы
ни были последовательности а
и b
такие, что a(1)
= b(1),
a(2)
= b(2),
… a(t)
= b(t),
значения функций α,
β, где α =
,
β =
представляют собой последовательности,
у которых тоже совпадают первые t
членов, т.
е.
α(1) = β(1), α(2) = β(2), …, α(t) = β(t).
Множество
всех детерминированных функций обозначим
через
.
Из
определения детерминированной функции
следует, что значение α(t)
(α
=
)
зависит только от значения первых
t
членов входной последовательности а,
т. е. а(1),
а(2), …, а(t),
следовательно α(t)
= φ(а(1), а(2), …, а(t)).
Приведём примеры как детерминированных, так и недетерминированных функций.
Пример
1 Рассмотрим
функцию y
=
![]()
,
определённую следующим образом ![]()
Покажем,
что данная функция недетерминированная.
Действительно, возьмём две входные
последовательности
и
.
Тогда
и
.
Следовательно, данная функция
недетерминированная.
Пример
2 Рассмотрим
функцию
из
,
определённую следующим образом
.
Здесь выходная последовательность –
почленная конъюнкция входных
последовательностей. Очевидно, что
.
Пример
3 Рассмотрим
функцию z
= x
+ y![]()
,
осуществляющую сложение 2-значных
последовательностей в двоичной системе
с бесконечным числом разрядов. Для этого
используется обычный алгоритм сложения
двух чисел столбиком

Очевидно,
что z(t)
определяется по первым t
слагаемым, т. е. x
+ y
![]()
.
Детерминированная
функция
может быть проинтерпретирована следующим
образом. Пусть мы имеем некоторый
«дискретный преобразователь», в котором
существует n
входов
и один выход
.

На входы в моменты времени t= 1, 2,…, m, … подаются входные последовательности

И
в эти же моменты t
на выходе
возникает выходная последовательность
,
причем
.
Очевидно, что в дискретном преобразователе
значения α(t)
зависят
только от значений входных последовательностей
в момент времени 1,2,…,t
и не зависят от значений в будущие
моменты времени. Поэтому преобразование
есть детерминированная функция.
Пусть
.
Выше мы показали, что с помощью векторной
записи данную функцию можно свести к
функции
,
где
.
Рассмотрим бесконечную фигуру (рисунок
2):
Рисунок 2
Называть
её будем деревом и построена она следующим
образом. Возьмём произвольную вершину
,
которую назовём корнем дерева. Из неё
проведём N
рёбер, которые образуют первый ярус. Из
концов каждого из рёбер также проведём
N
рёбер, которые образуют второй ярус и
т. д. Рёбра каждого пучка нумеруются
слева направо числами 0,1,…,N-1
или их значениями в k-ичной
системе счисления.
В дальнейшем на рисунках номера рёбер будут опускаться. Далее каждому ребру в построенном дереве произвольным образом припишем одно из чисел множества {0,1,…,k-1}. В результате получим так называемое нагруженное дерево. Рассмотрим следующее нагруженное дерево (рисунок 3).
0 1 0 1
0 1
1 0 1 0
0 1
Рисунок 3
Начиная движение с корня дерева, пойдём по рёбрам. Так, например, последовательности (0, 0, 1, 1…), где числа 0, 0, 1, 1, … – номера рёбер, соответственно, 1, 2, 3, 4-го и т. д. ярусов соответствует выделенный маршрут и последовательность (0,1,1,1…).
Теорема
1 Функция
из
будет
детерминированной тогда и только тогда,
когда она может быть задана с помощью
нагруженного дерева.
Доказательство
Покажем, что любое нагруженное дерево
задает некоторую детерминированную
функцию. Действительно, пусть
– произвольная последовательность
чисел, где
![]()
,
i
=1,2,…. Будем считать, что
– номер ребра 1-го яруса,
– номер ребра 2-го яруса и т. д. Данной
последовательности в нагруженном дереве
соответствует единственный маршрут,
ведущий из корня дерева. Числа, приписанные
выделенным ребрам образуют выходную
последовательность
.
Покажем, что построенная функция из
является детерминированной. Пусть
и
– две входные последовательности такие,
что
.
Ясно,
что маршруты в нагруженном дереве,
соответствующие данным последовательностям
на первых
t
ярусах совпадают. А это значит, что
,
т.
е. функция
детерминированная. Обратное утверждение
очевидно. Теорема доказана.
Рассмотрим следующие примеры:
Пример
4
.
Ясно, что
и число ребер, выходящих из вершин равно
.
Построим дерево соответствующее данной
функции
(рисунок
4).
.
. . . . . . . . .
1 0 1 0 1 0 1 0
1 0 1 0
1 0
Рисунок 4
Например, входной последовательности {0,1,1,…} будет соответствовать входная последовательность {1,0,0,…}.
Пример
5
,
которая задаётся следующим образом:
,
где x(t)·y(t)
– конъюнкция.
Для
данной функции k
= n
= 2 и число ребер, выходящих из вершин
равно N
=
= 4. Ребру с номером D
= (0, 0) соответствует значение (0,0) = 0
1
= (0, 1) 0
1
= 0
2
= (1, 0) 1
0
= 0
3
= (1, 1) 1
1
= 1.
Следовательно, данной функции соответствует следующее нагруженное дерево (рисунок 5).

Рисунок 5
Пример
6
,
k
= n
= 1, N
=
= 1.
![]()
Дерево, соответствующее данной функции строится следующим образом. Процесс приписывания ребрам чисел начинается с 1-го яруса:
0 = (0, 0) 0 + 0 = 0
1 = (0, 1) 0 + 1 = 1
2 = (1, 0) 1 + 0 = 1
3 = (1, 1) 1 + 1 = 0
При этом, если появляется перенос в следующий разряд, то конец соответствующего ребра кончается кружочком. Это позволяет выполнить вычисление в следующем ярусе (рисунок 6).
0 1 1 0 1 0 0 1
1
0 1 1 0
Рисунок 6
Возьмем
нагруженное дерево для некоторой
детерминированной функции
.
Пусть
– произвольная его вершина
-го
яруса. Данную вершину можно рассматривать
как корень нагруженного дерева. Согласно
теореме 1 оно определяет некоторую
детерминированную функцию
.
Определение
2 Два поддерева
с корнями
и
исходного дерева называются эквивалентными,
если
.
Очевидно,
что при естественном наложении двух
эквивалентных поддеревьев их нумерации
совпадают. Так, в дереве (рисунок 3 и
рисунок 4) все поддеревья эквивалентны,
а в дереве (рисунок 5) поддеревья с корнями
эквивалентны, а с корнями
и
не эквивалентны.
Определение 3 Весом дерева и весом соответствующей детерминированной функции называется максимальное число попарно неэквивалентных поддеревьев.
Например, все функции из примеров 4,5 равны 1, а из примера 6 равны 2.
Определение
4 Детерминированная
функция
называется ограниченно-детерминированной
функцией, если она имеет конечный вес.
Класс
всех ограниченно-детерминированных
функций обозначим через
![]()
Функции из примеров 4, 5, 6 являются ограниченно-детерминированными функциями.
Рассмотрим следующую детерминированную функцию.
Пример
7
![]()
.
Ясно, что вес данной функции
,
т. е. она не является ограниченно-детерминированной.
Пусть
,
вес которой равен r.
Рассмотрим алфавит
,
который назовём внутренним алфавитом.
Каждой вершине нагруженного дерева,
соответствующей функции
припишем одну из букв алфавита
с соблюдением следующего правила:
эквивалентным вершинам приписываются
одни и те же буквы из
.
В результате получаем так называемое
полное нагруженное дерево.
Для
любой ограниченно-детерминированной
функции соответствующее ей полное
нагруженное дерево можно свести к
конечному дереву с занумерованными
ребрами и вершинами. Если в нем провести
отождествление эквивалентных вершин,
то получим так называемую диаграмму
Мура. В ней нулём отмечена начальная
вершина и ребрам приписаны пары чисел
(a,
b),
первое из которых обозначает номер
ребра, а второе – число соответствующее
этому ребру. Так функция
соответствует диаграмме Мура.

А
функция
![]()

Пусть
– ограниченно-детерминированная функция
с весом r.
Пусть
– входная последовательность. Ей
соответствует выходная последовательность
и последовательность состояний
.
Возьмем
другую входную последовательность
.
Ей соответствуют, выходная последовательность и последовательность состояний:
;
.
В
общем случае из того, что
не следует, что
.
Однако, если
и
,
то
и
.
Другими словами, это означает, что если
два одноименных ребра (
)
выходят из эквивалентных вершин (
),
то они будут нагружены одной и той же
буквой (
)
и будут входить в эквивалентные вершины
(
).
Это означает, что
(*)
Уравнения
(*) называются каноническими уравнениями
функции
.
Первое уравнение называется уравнением
выхода, второе – уравнением перехода.
Уравнение (*) можно задать с помощью канонической таблицы.
-
x(t)
q(t-1)
y(t)
q(t)
Пусть
x(t)
и y(t)
из {0,1}, а
.
Если вес r
2, то
каноническая таблица есть таблица
истинности. Если r
> 2, то
каноническая таблица не является
таблицей истинности. Но с помощью
кодирования всех чисел алфавита
в двоичной системе счисления мы её
можем преобразовать в таблицу истинности.
Рассмотрим
теперь функцию от n
переменных
с весом r
> 1,
– внутренний алфавит. Закодируем все
числа из алфавита
в двоичной системе счисления наборами
из {0, 1} длинной
.
В этом случае канонические уравнения
искомой функции имеют вид.
(**)
В
дальнейшем договоримся, что начальные
состояния в канонических уравнениях
(**) q(0)=0,
а в уравнениях (*)
.
Пример 8 Найти канонические уравнения функции
![]()
Ранее мы показали, что вес данных функций равен 2 и их диаграмма Мура

Построим каноническую таблицу.
|
x(t) |
y(t) |
q(t-1) |
z(t) |
q(t) |
|
0 0 0 0 1 1 1 1 |
0 0 1 1 0 0 1 1 |
0 1 0 1 0 1 0 1 |
0 1 1 0 1 0 0 1 |
0 0 0 1 0 1 1 1 |
Данная каноническая таблица является таблицей истинности.
Запишем канонические уравнения, используя результаты темы 3.
Используя
законы алгебры логики, получаем:

Пример 9 Найти каноническое уравнение для функции, заданной следующей диаграммой Мура

Строим каноническую таблицу.
|
x(t) |
y(t) |
q(t-1) |
z(t) |
q(t) |
|
0 0 1 1 |
0 1 0 1 |
0 0 0 0 |
0 1 1 0 |
0 0 0 0 |
Отсюда
![]()
Заметим,
что если вес функции равен 1, то в
канонических уравнениях
будет отсутствовать.
Пример 10 Найти канонические уравнения ограниченно-детерминиро-ванной функции, заданной следующей диаграммой Мура:

Ясно, что вес данной функции равен 3. Построим каноническую таблицу для данной функции:
|
x(t) |
q(t-1) |
y(t) |
q(t) |
|
0 0 0 1 1 1 |
0 1 2 0 1 2 |
0 1 0 0 0 0 |
1 1 2 2 1 2 |
Данная таблица не является таблицей истинности. Преобразуем данную таблицу в таблицу истинности. Для этого значения второго и четвёртого столбца закодируем в двоичной системе счисления:
|
x(t) |
|
|
y(t) |
|
|
|
0 0 0 0 1 1 1 1 |
0 0 1 1 0 0 1 1 |
0 1 0 1 0 1 0 1 |
0 1 0 |
0 0 1 |
1 1 0 |
|
Не определена |
|||||
|
0 0 0 |
1 0 1 |
0 1 0 |
|||
|
Не определена |
|||||
Доопределим данную функцию следующим образом:
|
x(t) |
|
|
y(t) |
|
|
|
0 0 0 0 1 1 1 1 |
0 0 1 1 0 0 1 1 |
0 1 0 1 0 1 0 1 |
0 1 0 1 0 0 0 1 |
0 0 1 1 1 0 1 1 |
1 1 0 1 0 1 0 1 |
Составим канонические уравнения, используя аппарат булевой алгебры:
1)
y(t)
=
![]()
![]()
![]()
![]()
=![]()
![]()
=![]()
![]()
![]()
;
2)
![]()
;
3)
![]()
Итак, искомые канонические уравнения имеют вид:

Каждой ограниченно-детерминированной функции можно сопоставить канонические уравнения. Однако выбор канонических уравнений не однозначен. Эта неоднозначность связана:
1) с различными способами кодирования состояний;
2) с различными способами доопределения функций.
Очевидно, что канонические уравнения позволяют вычислить
по входной последовательности a = {a(1),a(2),…,a(t),…}
выходную последовательность b = {b(1),b(2),…,b(t),…}.
Итак, для задания конечного автомата фиксируется три конечных множества (алфавита):
– множество
возможных входных сигналов
;
– множество
возможных выходных сигналов
;
– множество
возможных внутренних состояний автомата
.
На этих множествах задаются две детерминированные функции:
– функция переходов Ψ, определяющая состояние автомата q(t) дискретного времени t в зависимости от состояния автомата q(t-1) и значения входного сигнала в момент времени t: q(t)= Ψ(x(t),q(t-1));
– функция выходов Ф, определяющая зависимость выходного сигнала автомата y(t) от состояния автомата q(t-1) и входного сигнала x(t) в момент времени t: y(t)=Ф(x(t),q(t-1)).
Кроме того, на множестве состояний автомата фиксируется одно из внутренних состояний q(0) в качестве начального состояния.
