<==Back
Булевы Функции
Функционально полные системы булевых функций.
"Любая булева функция может быть представлена аналитически одной из выше рассмотренных нормальных форм. Последние используют ограниченное число элементарных булевых функций. Например, для СДНФ такими функциями являются "конъюнкция", "дизъюнкция" и "отрицание". Следовательно, существуют системы булевых функций, с помощью которых можно аналитически представить любую сколь угодно сложную булеву функцию. Проектирование цифровых автоматов основано на знании таких систем булевых функций. Последнее особенно важно для разработки комплектов интегральных микросхем, из которых можно построить призвольный цифровой автомат. Проблема функциональной полноты является центральной проблемой функциональных построений в алгебре логики.
Функционально полной системой булевых функций (ФПСБФ) называется совокупность таких булефых функций (f1, f2, ... fk), что произвольная булева функция f может быть записана в виде формулы через функции этой совокупности.
Исходя оз определения СДНФ, СПНФ, СКНФ и ФПСБФ следует отнести системы:
(/\, \/, не),(/\,, не).
Это обуславливает целесообразность постановки задачи определения свойств, которыми должны обладать функции, составляющие ФПСБФ.
Решение этой задачи основано на понятии замкнутого относительно операции суперпозиции класса функций. Класс булевых функций, функционально замкнутый по операции суперпозиции, есть множество функций, любая суперпозиция которых дает функцию, также принадлежащую этому множеству.
Среди функционально замкнутых классов выделяют классы обычного типа, называемые предполными, которые обладают следующими свойствами. Предполный класс S не совпадает с множеством Р2 всех возможных булевых функций, однако, если в него включить любую, не входящую в S, булеву функцию, то новый функционально замкнутый класс будет совпадать с множеством Р2. Проведенные исследования показали, что преднолных классов пять, а для построения ФПСБФ необходимо и достаточно, чтобы ее функции не содержались полностью ни в одном из пяти предполных классов.
Перечислим предполные классы булевых функций:
- булевы функции, сохраняющие константу 0;
- булевы функции, сохраняющие константу 1;
- самодвойственные булевы функции;
- линейные булевы функции;
- монотонные булевы функции;
Табл 3.1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
х1х2 |
f0 |
f1 |
f2 |
f3 |
f4 |
f5 |
f6 |
f7 |
f8 |
f9 |
f10 |
f11 |
f12 |
f13 |
f14 |
f15 |
00 01 10 11 |
0 0 0 0 |
0 0 0 1 |
0 0 1 0 |
0 0 1 1 |
0 1 0 0 |
0 1 0 1 |
0 1 1 0 |
0 1 1 1 |
1 0 0 0 |
1 0 0 1 |
1 0 1 0 |
1 0 1 1 |
1 1 0 0 |
1 1 0 1 |
1 1 1 0 |
1 1 1 1 |
К булевым функциям сохраняющим константу 0, относят такие булеы функции f(x1,...,xn), для которых справедливо соотношение
f(0,...,0)=0.
Примерами булевых функций, сохраняющих константу 0, являются функции f0, f1,..., f7 (табл 3.1). Поскольку таблица истинности для функций, сохраняющих константу 0, в первой строке значений функций содержит 0, то имеется ровно 22(^n)-1 таких функций.
К булевым функциям сохраняющим константу 1, относят такие булеы функции f(x1,...,xn), для которых справедливо соотношение
f(1,...,1)=1.
Примерами булевых функций, сохраняющих константу 1, являются функции f1, f3, f5, f7, f9, f11, f13, f15 (табл 3.1). Поскольку таблица истинности для функций, сохраняющих константу 1, в последней строке значений функций содержит 1, то имеется ровно 22(^n)-1 таких функций.
Прежде чем ввести понятие класса самодвойстенных функций, дадим следующее определение.
Булевы функции f
1(x
1,...,x
n) и f
2(x
1,...,x
n) называются двойственными друг другу, если выполняется соотношение
f1(x1,...,xn)=/(f2(/x1,...,/xn))
Двойственными являются функции f0 и f15, f1 и f7, f2 и f11 и т.д. (табл 3.1).
К самодвойственным булевым функциям относят такие булеы функции, которые двойственны по отнощению к самим себе, т.е. справедливо соотношение
f(x1,...,xn)=/(f(/x1,...,/xn)).
Если условия назвать противоположными наборами, набор <y1,y2,...,yn> и набор </y1,/y2,...,/yn>, то определение самодвойственных функций дадим следующее.
Булева функция называется самодвойственной, если на любых двух противоположных наборах она принимает противоположные значения.
Самодвойственными являются функции f3, f5, f10, f12 (табл 3.1). Из определения самодвойственной функции следует, что она полностью определяется своими значениями на первой половине строк таблицы истинности. Поэтому число всех самодвойственных булевых функций f(x1,...,xn) равно
К линейным булевым функциям относят такие булевы функции, которые представимы в виде
f(x1,...,xn)=с0 + c1x1 + ... + cnxn,
где c
i E {0,1}, а + операция "сумма по mod 2".
Линейными являются булевы функции f0, f3, f5, f6, f9, f10, f12,
f15, (табл 3.1), ибо
f0 = 0, f3 = x1,
f5 = x2, f6 = x1 + x2,
f9 = x1 + x2 + 1,
f10 = /x2 = 1 + x2,
f12 = /x1 = 1 + x1,
f15 = 1.
Примечание + = .
Поскольку линейная функция однозначно определяется заданием коэффициентов с0,...,сn, то число линейных функций равно 2(n+1).
Прежде чем ввести понятие класса монотонных булевых функций, дадим следующее определение.
Двоичный набор Y = <y1,y2,...,yn>
не меньше двоичного набора
B = <b1,b2,...,bn>
, если для каждой пары (Yi,Bi) i = 1...n справедливо соотношение Yi >= Bi.
Так, набор 1011 >= 1010. Вместе с тем наборы 1011 и 0100 несравнимы в том смысле, что для них не выполняется ни соотношение Y >= B, ни Y <= B.
Булева функция f(x1,...,xn) называется монотонной,
если для любых двух наборов Y = <y1,y2,...,yn> и B = <b1,b2,...,bn> таких, что Y >= B имеет место неравенство f(y1,...,yn)>=f(b1,...,bn).
Монотонными являются булевы функции f0, f1, f3, f5, f7, f15 (табл. 3.1).
Вместе с тем функция f2 из табл. 3.1 не является монотонной,
так как f2(1,0) > f2(1,1), хотя набор <1,0> меньше, чем набор <1,1>.
Приведем без доказательства две формулировки теоремы о функциональной полноте.
Теорема.
Для того чтобы система S булевых функций была функционально полной, необходимо и достаточно, чтобы эта система содержала хотя бы одну булеву функцию, не сохраняющую константу 1, хотя бы одну булеву функцию, не сохраняющую константу 0, хотя бы одну несамодвойственную булеву функцию,
хотя бы одну нелинейную булеву функцию и хотя бы одну немонотонную булеву функцию.
Система булевых функций является функционаьно полной тогда и только тогда, когда она целиком не содержится ни в одном из предполных классов.
Рассмотрим примеры ФПСБФ. Для удобства изложения материала сведем элементарные булевы функциидвух переменных и некоторые функции одной переменной в таблицу, класифицируя каждую из них по признакам принадлежности к предполным классам.
Из таблицы видно, что каждая из функций f8 и f14 являются ФПСБФ. Иными словами, используя, например, только булеву функцию
f14 - "штрих Шеффера", можно записать в виде формулы любую булеву функцию. f14 = х1 / х2 = /х1 v /х2. Признаком функциональной полноты, очевидно, является наличие плюса в каждом столбце таблицы, хотя бы для одной из составляющих систему булевых функций. К таким ФСПБФ, наиболее распостраненным в практике построения цифровых автоматов, следует отнести:
Иногда удобно строить ФПСБФ при наличии констант, т.е. булевых функций "константа 0", "константа 1". Как следует из таблицы, функция "константа 0" несамодвойственна и не сохраняет 1; функция "константа 1" несамодвойственна и не сохраняет 0. Вместе с тем константы являютя линейными и монотонными функциями. Отсюда непосредственно (на основании теоремы о функциональной полноте) вытекает следующее: система булевых функций является ослабленно функционально полной, если она содержит хотя бы одну нелинейную и хотя бы одну нелинейную и хотя бы одну немонотонную булеву функцию.
Примерами ослабленых ФПСБФ могут служить следующие системы:
Введенное понятие двойственных булевых функций позволяет сформулировать принцып двойственности, заключающийся в следующем: если формула U=c[f1,...,fs] реализует булеву фунуцию f(x1,...,xn), то формула U*=c[f*1,...,f*n], полученная из U заменой функций f1,...,fs на двойственные функции f*1,...,f*s, соответтвенно реализует функцию f*=f*(x1,...,xn), двойственную функции f. Формулу U называют двойственной U. Для формул над множеством {0, 1, /x, x1x2, x1 v x2} принцип двойственности может быть сформулирован так: для получения формулы U* двойственной формуле U достаточно в формуле U всюду заменить 0 на 1, 1 на 0,
& на \/, \/ на &.
"
Использованная литература:
1) "Прикладная теория цифровых автоматов" Киев "Вища Школа" 1987
К.Г. Самофалов, А.М. Романкевич, В.Н. Валуйский,
Ю.С. Каневский, М.М. Пиневич
страницы (191 - 195).