Для табл. 4
аналитическое выражение в СДНФ, связывающее все наборы переменных, для которых Х=0,
имеет вид:
. (3)
Для
представления логической функции Х в СКНФ произведем операцию отрицания
левой и правой частей равенства (3)
и на
основании законов двойного отрицания и инверсии
. (4)
СКНФ
логической функции, согласно (4), следует находить в такой последовательности:
1) составить
логические суммы переменных для строк таблицы истинности, в которых функция Х
равна 0. Если значение переменной (А, В или С) в строке равно
1, то в сумме записывается отрицание этой переменной;
2) написать
логическое произведение составленных логических сумм. Полученное произведение и
является СКНФ. В общем виде:
, (5)
где Fi – сложные дизъюнкции.
Это правило
также называют правилом построения переключательной функции по нулям.
Кроме представления
функций в виде СДНФ и СКНФ используют и совершенную полиномиальную нормальную
форму СПНФ. Вместо дизъюнкции может быть записана функция сложения по модулю
два (сумма Жегалкина):
, (6)
где Fi – сложные конъюнкции.
Существует
специальная таблица, в которой все элементарные логические операции от двух
аргументов представлены в двух совершенных нормальных формах.
Нормальные
формы представления переключательной функции иногда называют стандартными (табл.
5).
Таблица 5
f
A
0011
B
0101
Название функции
Обозначение функции
СДНФ
СКНФ
f0
0000
Константа нуль
0
Не имеет
f1
0001
Логическое произведение,
конъюнкция
f2
0010
Функция запрета по В
f3
0011
Переменная А
f4
0100
Функция запрета по А
f5
0101
Переменная В
f6
0110
Сумма по мо дулю 2,
логическая неравнозначность
f7
0111
Логическое сложение,
дизъюнкция
f8
1000
Операция (стрелка)
Пирса, операция Вебба
f9
1001
Эквивалентность, логическая
равнозначность
f10
1010
Инверсия В
f11
1011
Импликация от В к А
f12
1100
Инверсия А
f13
1101
Импликация от А к В
f14
1110
Операция (штрих) Шеффера
f15
1111
Константа единица
1
Не имеет
Многочленом
Жегалкина называется многочлен, являющийся суммой константы 0 или 1 и различных
одночленов, в которые все переменные входят не выше, чем в первой степени.
Теорема. Любая функция булевой алгебры может быть представлена, и притом
единственным образом, с помощью полинома Жегалкина вида
J =.
Представим, например, в виде полинома выражение вида X1X2. Для этого проведем следующие
рассуждения.
Пусть
X1X2
= aX1X2+bX1+cX2+k,
где а, b, с, k – неопределенные
коэффициенты.
При X1 = X2 = 0 имеем k = 0. При Х1
= 1, X2= 0 имеем b= 1. При Х1= 0, Х2=
1 имеем с= 1. При X1=Х2= 1 имеем а + b + с = 1, т. е. а
= -1. Таким образом, получаем:
X1X2 = – X1X2+ X1+ X2.
СПНФ
образуется путем замены в СДНФ: на + и на
1 х.
,
,
В последнем
случае выражение для легко можно
упростить, если раскрыть скобки и взаимно сократить все одинаковые слагаемые,
входящие в формулу четное число раз:
.
Подобное
упрощение, которое называется минимизацией логической функции, можно
осуществить и по отношению к СДНФ и СКНФ.
Таблица 6
y
0
0
0
0
1
0
0
1
0
1
0
0
1
1
0
1
0
0
1
1
1
0
1
0
0
1
1
0
1
1
1
1
Применение
законов алгебры логики позволяет найти более компактные аналитические выражения
для заданной функции у, т. е. минимальную дизъюнктивную нормальную
форму . Приведем соответствующие
формы представления функции у, заданной табл. 6:
,
и для СКНФ, т. е.
минимальную КНФ:
.
После того,
как найдены минимальные нормальные формы (МНФ), их рекомендуется проверить на
всех наборах аргументов .
Переменные или часто называют термами.
Именно полный набор из n термов образует конституенту. В процессе же
минимизации некоторые термы из конституент пропадут. Тогда оставшуюся часть
дизъюнкта или конъюнкта называют импликантой.
Как мы только
что убедились на примере, импликанты появляются в результате склейки смежных
конституент, различающихся одним термом.
Система
булевых функций {f1, f2,…, fm} называется полной, если
любая булева функция может быть выражена через функции f1, f2,…, fm с помощью суперпозиций.
Пусть К0={f1(x1,…,xk1), f2(x1,…,xk2),…, fm(x1,…,xkm)} – конечная система
булевых функций. Функция fназывается элементарной суперпозицией
(суперпозицией ранга 1) функций f1, f2,…, fm, если f может быть получена
одним из следующих способов:
а)
переименованием некоторой переменной xj какой-нибудь функции fi;
б) подстановкой
некоторой функции вместо
какой-либо переменной xj любой из функций .
Суперпозиции
ранга 1 образуют класс функций К1. Класс функций,
получающийся из функций класса Ks-1 суперпозицией ранга s‑1 с помощью элементарных
суперпозиций, называется классом функций Ks суперпозиций ранга s. Суперпозициями функций
из К0 называются функции, входящие в какой-то из классов Ks.
Согласно
введенным определениям, можно говорить, что система булевых функций полна.
Тогда любую булеву функцию можно представить в виде многочлена от своих
переменных.
В современном
компьютере цифрами являются ноль и единица. Следовательно, команды, которые
выполняет процессор, суть булевы функции. Мы уже видели, что любая булева
функция реализуется через конъюнкцию, дизъюнкцию и отрицание. Следовательно,
можно построить нужный процессор, имея в распоряжении элементы, реализующие . Далее рассмотрим вопрос:
существуют ли (и если существуют, то какие) другие системы булевых функций,
обладающие тем свойством, что с их помощью можно выразить все другие функции.
Рассмотрим некоторые замкнутые классы (классы Поста), их пять.
1.
Класс функций, сохраняющих константу нуль (обозначается T0 или P0):
T0:= f (0,0,…, 0)=0.
К
этому классу относятся, например, функции ; ; ; .
2.
Класс функций, сохраняющих константу единица (обозначается T1 или P1):
T1:= f (1,1,…, 1)=1.
К
нему относятся все нечетные функции.
3.
Класс самодвойственных функций (обозначается T* или S):
T*:=f;
Пример
и .
Функция
называется двойственной по отношению к
функции , если . Двойственная функция получается
из исходной при замене значений всех переменных, а также значений функции на
противоположные, т. е. в таблице истинности нужно заменить 0 на 1, 1 на 0.
Пример.
Двойственной к функции является
функция, соответствующая формуле , т. е.
или : . Аналогично , .
Принцип
двойственности:
Если
,
то
.
Таким
образом, функция, двойственная суперпозиции функций, есть соответствующая
суперпозиция двойственных функций.
Этот
принцип удобен при нахождении двойственных функций, представленных формулами,
содержащими лишь конъюнкции, дизъюнкции и отрицание. В этом случае в исходной
формуле конъюнкции заменяются на дизъюнкции, а дизъюнкции – на конъюнкции.
Таким образом, ДНФ соответствует КНФ, КНФ – ДНФ, СДНФ – СКНФ, СКНФ – СДНФ.
Пример.
,
если
, то и .
Функция
называется самодвойственной,
если .
Пример.
Покажем, что формула задает
самодвойственную функцию.
Убедимся,
что на всех противоположных наборах значений переменных и формула принимает
противоположные значения. Действительно, составим таблицу истинности:
x
y
z
0
0
0
0
0
0
0
1
0
0
1
0
1
0
1
1
0
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
Получаем
, , , .
4.
Класс монотонных функций (обозначается TM или M):
, где ,
, , .
5.
Класс линейных функций (обозначается TL или L):
.
Эквивалентность
является линейной функцией .
Стрелка Пирса – нет, .
, ,
,…, ,
т. е.
, ,…,
. (7)
Таким
образом, проверка линейности сводится к нахождению коэффициентов по формулам (7) и
сопоставлению таблиц истинности данной формулы и
полученной формулы .
Пример.
Проверим, является ли линейной функция .
Имеем , , . Таким образом, . Сопоставляя таблицы
истинности формул и , убеждаемся, что они не
совпадают. Вывод: функция нелинейна.
Линейность
функции можно также определить с помощью следующей теоремы.
Теорема
Жегалкина. Всякая булева функция представима
полиномом Жегалкина, т. е. в виде , где в каждом наборе (i1,…, ik) все ij различны, а суммирование
ведется по некоторому множеству таких несовпадающих наборов. Представление булевой
функции в виде полинома Жегалкина единственно с точностью до порядка слагаемых.
Полином
Жегалкина называется нелинейным (линейным), если он (не) содержит произведения
переменных.
Таким
образом, линейность булевой функции равносильна линейности соответствующего
полинома Жегалкина.
Для получения
полинома Жегалкина булевой функции, находящейся в СДНФ, используются аксиомы
булевой алгебры, аксиомы булева кольца и
равенства, выражающие операции через
операции этого булева кольца: и т. д.
Пример.
Определим линейность функции .
Имеем
Полученный
полином Жегалкина является нелинейным, и, следовательно, функция f также нелинейна.
Заметим, что
если в эквивалентности формулы
являются различными
конституентами единицы, то их произведение равно
0, и тогда . Следовательно, для
получения полинома Жегалкина из СДНФ можно сразу заменить .
Отметим, что
каждый класс Поста замкнут относительно операций замены переменных и
суперпозиции, т. е. с помощью этих операций из функций, принадлежащих данному
классу, можно получить только функции из этого же класса.
Пример.
Определим, к каким классам Поста относится булева функция .
Так как f (0,0)=1, а f (1,1)=0, то и . Поскольку , то . Так как f (0,0)>f (1,1), то . Полином Жегалкина для
функции имеет вид в силу равенства . Поэтому данная функция
нелинейна. Таким образом, можно составить следующую таблицу
Таблица
функций
Функция
Классы
Р0
Р1
S
М
L
х | у
Нет
Нет
Нет
Нет
Нет
Теорема
Поста. Система F булевых функций тогда и только тогда является полной, когда для
каждого из классов P0, P1, S, M, L в системе F найдется функция, не принадлежащая
этому классу.
В силу
теоремы Поста функция х | у образует полную систему, т. е. с
помощью штриха Шеффера можно получить любую булеву функцию. В частности, .
Система
булевых функций называется базисом, если она полна, а удаление любой
функции из этой системы делает ее неполной.
Теорема.
Каждый базис содержит, не более четырех булевых функций.
Доказательство.
Предположим, что существует базис F, состоящий более чем из четырех функций. По теореме
Поста тогда получаем, что F состоит ровно из пяти функций, каждая из которых
не принадлежит ровно одному классу Поста. Пусть f – функция из F, не принадлежащая классу
Р0. Тогда, с одной стороны, f (0,0,…, 0)=1, а, с другой – из следует, что f (1,1,…, 1)=1. Это означает, что f не является
самодвойственной функцией, что противоречит предположению.
Пример. Следующие
системы булевых функций являются базисами: .
Таблица 7
Обоснование
Базис
;
следовательно,
{И, НЕ} – конъюнктивный
базис
;
следовательно,
{ИЛИ, НЕ} – дизъюнктивный
базис
;
{И, , 1} – базис Жегалкина
;
следовательно, ;
– базис Шеффера
;
следовательно, ;
{} – базис Пирса
Пример.
Конъюнкции,
то есть все функции вида , тоже
составляют замкнутый класс. Очевидно, однако, что, например, функцию, которая
на наборе (0,0,…, 0) имеет значение 1, нельзя представить суперпозицией таких
функций. Таким образом, {И} не является базисом, следовательно, конъюнктивный
базис {И, НЕ} является минимальным.
Рассмотрим
более подробно базис Жегалкина.
Алгебра
Жегалкина и линейные функции
Алгебра
Жегалкина – это алгебра над множеством двух бинарных булевых функций (И, ) и нульарной функции 1.
Легко проверить следующие соотношения в этой алгебре:
;
;
;
.
Если в
произвольной формуле, включающей только функции базиса Жегалкина, раскрыть
скобки, то получим бесскобочную формулу, имеющую вид суммы (по модулю два)
произведений, то есть некоторый полином. Он называется полиномом Жегалкина.
Широкий набор
базисов открывает большие возможности при решении задач минимизации схем
устройств дискретного действия, поскольку из базисных схем с помощью
суперпозиций можно составить схему, соответствующую любой булевой функции.
На первом
этапе минимизации исходную СДНФ можно упростить за счет использования закона
склеивания, тогда получим:
.
Обращаем
внимание на то, что одну и ту же конституенту (импликанту) можно склеивать с
другими конституентами (импликантами) многократно, так как в логике Буля
действует закон идемпотентности:
,
поэтому любую
конституенту можно размножить.
На втором
этапе воспользуемся таблицей Куайна (табл. 8), в соответствии с которой данный
метод минимизации получил свое наименование – метод Куайна. В таблице по
вертикали перечислены все полученные на первом этапе упрощения импликанты, а по
горизонтали – исходные конституенты. Единица в табл. 8 стоит там, где
импликанта «накрывает» конституенту. Дело в том, что конституента всегда может
быть заменена импликантой или даже отдельным термом по закону поглощения:
Таблица 8
0010
0101
0110
0111
1010
1100
1101
1110
– – 1 0
1
0
1
0
1
0
0
1
0 1 – 1
0
1
0
1
0
0
0
0
0 1 1 –
0
0
1
1
0
0
0
0
– 1 0 1
0
1
0
0
0
0
1
0
1 1 0 –
0
0
0
0
0
1
1
0
1 1 – 0
0
0
0
0
0
1
0
1
После
заполнения таблицы Куайна у нас получилось так, что почти в каждой графе
оказалось по две единицы; между тем достаточно иметь одну единицу в графе. Поэтому,
по возможности, нужно исключить избыточные единицы. Выбор единиц производится
из соображений минимальности числа термов (выбранные единицы затемнены). В итоге
оказалось, что можно обойтись только тремя импликантами вместо шести:
.
С помощью
таблиц истинности легко проверить, что полученная в МНФ функция воспроизводит
все значения исходной функции. Отметим, что в общем случае решений по критерию
минимума термов может быть несколько.
2. Не менее
эффективным способом минимизации логических функций является метод сочетания
индексов. Для его изложения составим табл. 9, в графах которой записаны
возможные сочетания индексов. В последней графе выписаны значения функции.
Анализ таблицы начинается слева по столбцам. Принцип исключения i, j‑кода следующий. На
пересечении i‑столбца, например, с сочетанием индексов 23, и j‑строки, например,
3‑ей, находится код 10, что соответствует импликанте . Следовательно, в этом
столбце везде, где встречается код 10, т. е. в строках 2, 3, 10 и 11, эти
коды исключаются, поскольку значение функции в 3‑ей строке равно нулю.
Теперь возьмем столбец с сочетанием индексов 124. Здесь во 2‑ой и 6‑ой
строках оставлены коды 010, а в 10‑ой и 14‑ой строках – код 011.
Сделано это потому, что эти коды встречаются только на строках со значением
функции, равным единице. Напротив, код 110 этого же столбца встречается как при
единичных значениях функции, так и при нулевых.
Таблица 9
n
1
2
3
4
12
13
14
23
24
34
123
124
134
234
1234
y
0
0
0
0
0
00
00
00
00
00
00
000
000
000
000
0000
0
1
1
0
0
0
10
10
10
00
00
00
100
100
100
000
1000
0
2
0
1
0
0
01
00
00
10
10
00
010
010
000
100
0100
1
3
1
1
0
0
11
10
10
10
10
00
110
110
100
100
1100
0
4
0
0
1
0
00
01
00
01
00
10
001
000
010
010
0010
0
5
1
0
1
0
10
11
10
01
00
10
101
100
110
010
1010
1
6
0
1
1
0
01
01
00
11
10
10
011
010
010
110
0110
1
7
1
1
1
0
11
11
10
11
10
10
111
110
110
110
1110
1
8
0
0
0
1
00
00
01
00
01
01
000
001
001
001
0001
0
9
1
0
0
1
10
10
11
00
01
01
100
101
101
001
1001
0
10
0
1
0
1
01
00
01
10
11
01
010
011
001
101
0101
1
11
1
1
0
1
11
10
11
10
11
01
110
111
101
101
1101
0
12
0
0
1
1
00
01
01
01
01
11
001
001
011
011
0011
1
13
1
0
1
1
10
11
11
01
01
11
101
101
111
011
1011
1
14
0
1
1
1
01
01
01
11
11
11
011
011
011
111
0111
1
15
1
1
1
1
11
11
11
11
11
11
111
111
111
111
1111
0
Итак, все
коды на строках, заканчивающихся нулевыми значениями функции, исключаются
автоматически. Если эти коды попадают на строки, заканчивающиеся единичным
значением функции, то они также не учитываются. Остаются только те коды,
которые расположены на строках с единичным значением функции (эти коды затемнены).
Далее
руководствуются следующим правилом. Для того чтобы функция приняла значение,
равное единице, достаточно того, чтобы только какая-нибудь одна импликанта на
строке приняла единичное значение. Прежде всего, оставляем минимальную
импликанту , которая перекрывает
единицы в строках 2, 6, 10 и 14. Затем, естественно, обращаемся к 12‑ой
строке. Здесь оставляем единственный на строке код 011, что отвечает импликанте
. Эта же импликанта
ответственна за 13‑ую строку, оканчивающуюся тоже единицей. Осталось
рассмотреть 5‑ую и 7‑ую строки. Общей для них является импликанта: . Таким образом, тремя
импликантами мы перекрыли все единичные значения функции, что совпадает с
результатом, полученным на основе таблиц Куайна.
3.
Существует графический способ склеивания, который получил название метод карты
Карно (представлен в табл. 10). Выделяем смежные единицы, это и будут слагаемые
нашей функции.
Таблица
10
x3x4
x1x2
00
01
11
10
00
0
0
1
1
01
1
0
0
0
11
1
0
0
0
10
0
0
0
0
– получили два слагаемых
Хотя табл. 9
более громоздка, чем табл. 8, метод сочетания индексов не считается более
сложным, чем метод Куайна, если помнить, что до составления таблиц Куайна
необходимо произвести многочисленные склейки конституент и импликант.
Реализация на компьютере алгоритма метода сочетания индексов оказывается
сравнительно простой. И напротив, внешняя простота и наглядность третьего
метода минимизации логических функций с помощью карт Карно оборачивается
сложной программой при реализации алгоритма на компьютере.
Таблица 11
1100
1110
0110
0100
1101
1111
0111
0101
1001
1011
0011
0001
1000
1010
0010
0000
Таблица 12
Карта Карно
для четырех переменных представлена в виде табл. 11. Каждая клетка карты
соответствует конституенте. Заполненная карта представлена табл. 12 (функция
взята та же, что и в первых двух методах). Согласно закону склеивания, две
смежные конституенты с единичными значениями всегда можно объединить для
получения соответствующей импликанты. Причем смежными считаются и те, которые
лежат на границах карты. Какие именно единицы требуется объединить для
получения подходящей импликанты, легко определить визуально. Следует также помнить,
что в соответствии с законом идемпотентности одна и та же единица табл. 12
может склеиваться с двумя или тремя смежными единицами.
Контрольные
вопросы
1.
Перечислите основные методы минимизации функций.
2. Расскажите
о методе Куайна.
3. Расскажите
о методе карт Карно.
3.9 Неполностью определенные логические функции
Ранее
мы рассматривали ситуации, когда на множество аргументов или логических
переменных x1, x2,…, xn не накладывались ограничения,
или, что то же самое, функции были определены на всем наборе аргументов. Однако
реально на практике функции либо не определены полностью, либо есть запрещенные
комбинации. Необходимо доопределить функцию таким образом, чтобы аналитическая
форма ее представления была минимальной, далее производят склейки (пример
приведён в табл. 13).
Таблица
13
x3x4
x1x2
00
01
11
10
00
0*
0
1*
0
01
1*
1
1
1*
11
0
0
1
0*
10
0*
0*
1*
0*
.
*
эти значения доопределили сами, исходя того, чтобы выражение для функции F было минимальным.
К настоящему
времени мы знакомы с двумя формами представления булевых функций: таблица
истинности и формула (аналитическая запись). Рассмотрим еще две формы
представления таких функций.
3.10.1
Семантические деревья
Семантическое
дерево – это двоичное дерево, корень которого помечен двоичной функцией от m переменных, из каждого
узла идут по два ребра, соответствующих двум значениям очередной переменной, а
2m листьев помечены соответствующими значениями функции.
Бинарная
диаграмма решений (Binary Decision Diagrams, BDD) – это граф, являющийся
модификацией семантического дерева. В БДР узлы с одним и тем же значением
функции объединены. Если на каждом уровне БДР все вершины имеют одну и ту же
метку (одинаковые переменные), то такая БДР называется упорядоченной (в англоязычной
литературе такое представление называется Ordinary Binary Decision Diagrams, или сокращенно OBDD). Будем называть такое
представление УБДР. Вершины УБДР расположены по уровням, каждому уровню соответствует
одна переменная, которая помечает вершины, находящиеся на этом уровне. Из
каждой вершины выходят два ребра: одно соответствует нулевому значению соответствующей
переменной (будем его изображать штриховой линией), а другое – единичному
значению этой переменной (оно изображается сплошной линией).
На рис. 4
показаны все четыре формы представления функции .
Бинарные
диаграммы решений используются как компактная форма представления булевой
функции. Такое представление полезно во многих случаях, например, когда нужно
многократно вычислять значения функции при различных наборах значений ее
аргументов. Для того чтобы получить значение функции f, например, на языке С,
вместо хранения громоздкой таблицы истинности можно вычислить оператор: f=q? (r? 0:1): (р? 0:1), который построен на
основании БДР (см. рис. 4). В этом примере использование УБДР позволяет
вычислить значение булевой функции, выполнив всего две операции, в то время как
при ее вычислении по аналитическому представлению требуется не менее 5 операций.
Рис. 4.
Четыре формы представления двоичной функции
f (p, q, r)
Таблица истинности
Семантическое дерево
Бинарная диаграмма
решений
p
q
r
f
0
0
0
1
0
0
1
1
0
1
0
1
0
1
1
0
1
0
0
0
1
0
1
0
1
1
0
1
1
1
1
0
Сложность
представления функции с помощью УБДР существенно зависит от порядка переменных.
Так, например, УБДР для иного порядка переменных, чем на рис. 4, содержит
четыре вершины, а не три (рис. 5). Интересной проблемой теоретической
информатики является нахождение алгоритма, дающего оптимальный порядок переменных
булевой функции с точки зрения представления этой функции упорядоченной БДР.
Рис. 5.
УБДР для функции с порядком
переменных [p, q, r]
При синтезе
логических схем применяют элементы с одним и несколькими входами. Условия
функционирования таких элементов определяются переключательными функциями одной
или нескольких переменных.
Входные и
выходные сигналы логических схем зависят от времени (одни из них в некоторый
момент времени равны 1, в другие моменты времени 0). Логические функции,
описывающие работу таких схем, называют переменными. Используют также
схемы, для которых во все моменты времени сигналы равны либо 1, либо 0.
Логические функции, описывающие работу этих схем, называют постоянными.
Существует
только четыре различные переключательные функции одной переменной. Как видно из
таблицы 14, только две функции не зависят от переменной А (в этих
случаях переменная А фиктивна).
Таблица 14
Х
А
Условное обозначение
Название функции
0 1
X0=f0
(A)
X1=f1
(A)
X2=f2
(A)
X3=f3
(A)
0 0
0 1
1 0
1 1
0
A
1
Константа 0
Переменная А
Инверсия А
Константа 1
Для функции
двух переменных существует шестнадцать различных переключательных функций. Как
видно из таблицы 5, только десять функций существенно зависят от переменных А
и В.
На рис. 6,
7 приведены обозначения элементов, реализующих некоторые переключательные
функции двух переменных.
Каждой
элементарной логической операции можно поставить в соответствие элементарную
логическую схему или вентиль. На входе и выходе вентиля мы имеем логические
сигналы двух видов, что можно ассоциировать с логическим 0 или логической 1.
1. Элемент
«И» 2. Элемент «ИЛИ» 3. Элемент «НЕ»
F=x1∙x2
F=x1x2 F=
Рис. 6. Символическое обозначение
вентилей
а) б) в)
г) д) е)
Рис. 7.
Условные обозначения переключательных функций двух переменных: а – элемент
Шеффера; б – элемент Пирса; в-импликатор; г – запрет; д – равнозначность; е
сложение по модулю 2
В технической
литературе используются обозначения элементов, несколько отличающихся друг от
друга.
Логическая
схема, которая полностью описывается булевыми выражениями или таблицами
истинности, называется комбинационной схемой.
Таким
образом, комбинационная схема – схема, в которой значения входных переменных в
текущий момент времени полностью определяют значения выходных переменных.
Другой класс
схем – последовательностные схемы. Это схемы с внутренней памятью. В них
значения выходных переменных определяются не только значениями входных переменных
в текущий момент времени, но и их значениями в предыдущие моменты времени.
Будем
рассматривать только комбинационные схемы.
До сих пор мы
рассматривали поведение логической схемы, таблицы истинности и булевы выражения,
использованные для описания значений выходной переменной в зависимости от
набора значений входных переменных. Но булево выражение содержит сведения и о
структуре логической схемы.
Соединив
логические элементы в соответствии с булевыми выражениями, получим логическую
схему, реализующую данное выражение.
Логическая
связь выхода и входов этой схемы описывается исходным булевым выражением. Таким
образом, булево изображение – описание логической схемы.
Описывая
конкретные алгоритмы, мы отмечали, что вычисление по алгоритму можно
рассматривать как некоторый процесс, который описывается множеством состояний,
начальным состоянием и правилами перехода из состояния в состояние.
Рассмотрим
три варианта таких правил и соответственно три в принципе различных процесса:
·
процесс,
в котором переходы выполняются под влиянием некоторых внешних воздействий. Этот
процесс называется автоматом;
·
процесс,
в котором переходы выполняются под влиянием некоторого случайного механизма.
Таких процессов можно придумать много, простейший из них, который будем
рассматривать в дальнейшем, называется марковской цепью;
·
процесс,
в котором переходы выполняются по выбору некоего «одушевленного существа»,
стремящегося выбрать такой набор или последовательность решений, которые
обеспечат ему максимальное значение некоторой функции от траектории процесса.
Это управляемые процессы.
Разумеется,
кроме таких чистых схем имеются и всякого рода смеси. Однако, чистые схемы
интересны тем, что по ним можно увидеть, на что в соответствующей конкретной
науке обращается особое внимание, и как сильно традиции этой конкретной науки
влияют на изучение одного и того же математического объекта.
3.12.2
Конечные автоматы
Пусть заданы:
М – конечное
непустое множество, элементы которого называются состояниями автомата;
А – конечное
непустое множество внешних воздействий на автомат (входной алфавит автомата);
В-множество
ответов автомата на внешние воздействия (выходной алфавит).
Автомат – это
процесс, который рассматривается в дискретные моменты времени (такты работы) и
в каждый момент времени получает внешние воздействия. В зависимости от
воздействия и текущего состояния процесса переходит в новое состояние и вырабатывает
свой ответ.
По сравнению
со схемой из функциональных элементов конечный автомат является более точной
моделью дискретного преобразователя информации, однако, как и любая модель,
понятие конечного автомата связано с рядом упрощающих предположений.
Во-первых,
предполагается, что вход (выход) автомата в каждый момент времени может
находиться в одном из конечного числа различных состояний. Но у реального
преобразователя входной сигнал x(t) представляет собой
непрерывную величину, и для описания такого преобразователя с помощью модели
конечного автомата нужно разделить диапазон изменения x(t) на конечное число
уровней и произвести квантование.
Во-вторых,
предполагается, что время изменяется дискретно. Это означает, что состояния
входа и выхода устройства отмечаются только в определенные моменты времени,
образующие дискретную последовательность
t1, t2,…, tn. Каждый момент времени
однозначно определяется его индексом, поэтому с целью упрощения будем считать,
что время tпринимает значения 1, 2, 3,…, n. Промежуток (n, n+1) называется тактом.
Конечный
автомат является математической моделью реальных дискретных устройств по
переработке информации. Структура теории конечных автоматов определяется теми
задачами, которые возникают при производстве и эксплуатации таких устройств.
Теория автоматов – раздел теоретической кибернетики, в котором изучаются
математические модели (называемые автоматами, машинами) реально существующих
(механических, биологических и т. п.) или принципиально возможных
устройств, перерабатывающих дискретную информацию дискретными временными
тактами.
Теория автоматов возникла, главным образом, под влиянием запросов техники
цифровых вычислительных и управляющих машин, а также внутренней потребности
теории алгоритмов и математической логики.
Понятие «автомата» заметно варьируется в зависимости от характера
названных устройств, от принятого уровня абстракции и целесообразной степени
общности (автоматы конечные, бесконечные, растущие, вероятностные, детерминированные,
автономные и т. п.).
Автомат можно рассматривать как частный случай общего понятия управляющей
системы. В теории автоматов широко применяется аппарат алгебры, математической
логики, комбинаторного анализа (включая теорию графов) и теорию вероятностей.
Конечные и бесконечные автоматы характеризуются соответственно
конечностью и бесконечностью объема памяти (число внутренних состояний).
Конечными автоматами являются отдельные блоки компьютера и даже компьютер в
целом. Мозг тоже можно также рассматривать как конечный автомат. Бесконечные
автоматы представляют собой естественную математическую идеализацию, вырастающую
из представления об автомате с конечным, но необратимо большим числом
состояний.
Анализ автоматов – нахождение по заданному в том или ином виде автомату
отображения «вход-выход», осуществляемого этим автоматом; часто такое
отображение можно интерпретировать как вычисление предиката, и поскольку каждый
предикат характеризуется своим множеством истинности, то задача анализа
автомата сводится к нахождению этого множества (говорят, что это множество распознается
автоматом).
Для многих классов автоматов хорошо известны классы распознаваемых ими
множеств. Например, машины Тьюринга распознают все рекурсивно перечислимые
множества, автоматы с магазинной памятью (недетерминированные) – контекстно
свободные языки.
Далеко не всегда по заданным автомату и множеству удается определить,
распознает ли автомат в точности это множество. В общем виде для произвольного
класса автоматов или даже для произвольного конкретного автомата эта проблема является
алгоритмически неразрешимой. Если наложить ограничения на способы задания
автоматов и на способы задания множеств, то для многих случаев она становится разрешимой.
Например, если регулярные события задавать регулярными выражениями, а конечные
автоматы – матрицами переходов и выходов, то существует общий конструктивный
прием (алгоритм анализа конечных автоматов), позволяющий находить регулярные
выражения для событий, представляемых в произвольном конечном автомате.
Синтез автоматов – построение автоматов по заданному
поведению «вход-выход». Проблема синтеза наиболее подробно исследовалась для
конечных автоматов, поскольку к этому случаю сводятся многие практические
задачи, связанные с проектированием разного рода управляющих и вычислительных
устройств.
Трудности
синтеза автоматов зависят в основном от того, как заданы условия функционирования
автомата. Чем выразительнее язык, применяемый для задания условий
функционирования аппарата (т. е., чем удобнее он для заказчика), тем
сложнее метод синтеза. Во многих случаях может оказаться, что единого метода
синтеза не существует. Поэтому для ряда классов автоматов, в частности, для
конечных автоматов, разрабатываются специальные языки, с помощью которых удобно
задавать условия функционирования автоматов, для которых существуют методы синтеза
(регулярные событияи выражения, логический язык для задания
автоматов).
Минимизация
числа состояний автомата – по произвольному заданному конечному автомату
создается автомат с наименьшим возможным числом состояний, обладающий тем же
поведением, что и исходный автомат. Решение этой задачи состоит в нахождении
эффективного алгоритма минимизации. Оно представляет интерес, как в абстрактной
теории автоматов, так и в проектировании реальных автоматов.
Рассмотрим
модели, которые представлены в виде некоторого черного ящика, на вход которого
поступают некоторые логические переменные x1, x2,…, xn. Объект их перерабатывает,
и на выходе получаем некоторые логические функции y1, y2,…, yk.
Рис. 8.
Логический конечный автомат
Такие модели
называют логически конечными автоматами. Существуют некоторые классы таких автоматов:
Примером
таких автоматов является простая экспертная система профессиональной
пригодности, где входные значения – это ответы на n вопросов, а выходные – k выводов о том, может ли
человек работать в данной области.
Для таких
автоматов характерно наличие вектора внутренних состояний z=(z1, z2,…, zm).
В таких
автоматах каждая логическая функция зависит от входных функций x и функций внутреннего
состояния z.
Рис. 10.
Конечный автомат с памятью
. (8)
Для автоматов
с памятью характерно, что они функционируют во времени, и в момент времени t0 должно быть задано
начальное состояние z0. В момент времени t0 определяется
выражением (8). В момент времени t1=t0+t входной вектор может
поменяться, в свою очередь может поменяться вектор состояний Y.
, (9)
где t
такт логического конечного автомата. Считается, что t много больше времени
расчета на ЭВМ.
Пример.
Та же самая
экспертная система определения профессиональной пригодности, но с условием, что
значение о профессиональной пригодности зависит от ранее полученных ответов. Такие
экспертные системы называют самообучающимися, т. к. сразу правильного
ответа не дают. Частным случаем конечного автомата с памятью является автомат с
обратной связью по выходу. Для него вектор внутренних состояний в момент
времени t+t
равен вектору выходных сообщений в момент времени t. Пример конечного
автомата с памятью и обратной связью по выходу приведен на рис. 11.
Рис. 11.
Конечный автомат с памятью и обратной связью по выходу
Экспертная
система является примером конечного автомата с памятью с обратной связью по
выходу. Программная модель такого автомата базируется на программной модели
автомата без памяти, однако, помимо уже накопленного опыта добавляется
процедура tact, а также начальные значения входных и выходных переменных.
Const
N=…;
k=…;
Type
Vector
x = array [1..n] of boolean;
Vector
y = array [1..k] of boolean;
Var
X:
vector X;
Ypred,
Y: vector Y;
Procedure
tact (v: vector X; var Ypred, Y: vector Y);
Var
I:
integer;
Begin
Y[1]:=y1(…);
Y[2]:=y2(…);
Y[3]:=y3(…);
Y[k]:=yk(…);
For
i:=1 to k do
Ypred[i]:=
Y[i];
End;
End.
Состояние
конечного автомата называется установившимся, если с течением времени при
постоянном значении входного вектора Х, вектор Y принимает постоянное значение.
В этом случае процесс обучения конечного автомата заканчивается, и результаты
его работы могут быть использованы. Однако существуют автоматы, состояние которых
не устанавливается с течением времени. Такие автоматы используются только в
схемотехнике. Примером такого автомата является автомат триггерного типа. Логическая
схема триггера приведена на рис. 12.
Рис. 12.
Автомат триггерного типа
Другим
частным случаем является автономный конечный автомат, для которого вектор
входных воздействий отсутствует. Для
него вектор выходных состояний является функцией от вектора внутренних
состояний . Для него (с обратной связью по
выходу), тогда . Такие конечные
автоматы называют также генераторами высказываний или генераторами логической
последовательности. Они могут использоваться для отладки и моделирования
некоторых ситуаций.
Контрольные
вопросы
1. Что такое
логический конечный автомат?
2.
Представьте в виде рисунка логический конечный автомат.
3. Что такое такт
конечного логического автомата?
4. Приведите
пример конечного автомата без памяти.
5. Приведите
пример конечного автомата с памятью.
6. Приведите
пример конечного автомата с обратной связью по выходу.
1. Акимов В.А. Дискретная
математика: логика, группы, графы. М.: Лаборатория Базовых Знаний, 2003, 376 с.
2. Стол Роберт Р. Множества.
Логика. Аксиоматические теории. Пер. с англ. Ю.А. Гастева И.Х. Шмаина.
Под ред. Ю.А. Шихановича. М., «Просвещение», 1968, 232 с.
3. Ершов Ю.А., Полюнин Е.А. Математическая
логика: Учебное пособие для вузов. М.: Наука. Гл. ред. физ. – мат. лит., 1987,
336 с.
4. Лавров И.А., Максимова Л.Л. Задачи
по теории множеств, математической логике и теории алгоритмов. М.: Высшая
школа, 2003, 256 с.
5. Р. Хаггарти
Дискретная математика для программистов Москва: Техносфера, 2003, 320 с.
6. Гончарова Г.А., Мочалин А.А. Элементы
дискретной математики: Учебное пособие. – М.: ФОРУМ: ИНФРА-М, 2004, 128 с.
7. Судоплатов С.В., Овчинникова Е.В. Элементы
дискретной математики: Учебник. – М.: ИНФРА – М; Новосибирск: НГТУ, 2003, 280 с.
(Серия «Высшее образование»)
8. Новиков Ф.А. Дискретная
математика для программистов. – СПб: Питер, 2001, 304 с.: ил.