Основные способы задания двоичных функций

advertisement
Лекция №1
Основные способы задания двоичных функций
§1.1 Табличный способ задания
Определение 1.1.1 Двоичной функцией от n (n  1) переменных называется
функция f(x1, ..., xn), аргументы и значения которой выбираются из множества
F2={0;1}, т.е. f: F2n  F2, где F2n = {a=(a1, ... ,an) | aiF2, i(1,... ,n)}
Замечание 1.1.2 Двоичные функции от n переменных также называют
булевыми (булевскими) функциями от n переменных или n –местными
булевыми функциями.
На множестве F2n определим так называемый лексикографический
порядок, т.е. для любого двоичного набора
a  (a1 ,..., a n )  F2n
определим его номер
N(a) = a12n-1 + a22n-2 +...+ an-121 + an20
Тогда двоичная функция однозначно может быть задана следующей таблицей
таблица 1.1.3
Номер набора
x1 ... xn-1 xn
f(x1, ..., xn)
0
0...0 0
f(0, ..., 0,0)
1
0...0 1
f(0, ..., 0,1)
.
.
.
.
.
.
.
.
.
2n-2
1...1 0
f(1, ..., 1,0)
2n-1
1...1 1
f(1, ..., 1,1)
При указанной договоренности о расположении наборов из F2n функция
однозначно определяется набором - столбцом значений. Отсюда
непосредственно вытекает справедливость следующего утверждения.
Утверждение 1.1.4 Число двоичных функций от n переменных
n
равно 2 2
Перечислим все двоичные функции от одной и двух переменных. Имеется
четыре функции от одной переменной
Таблица 1.1.5
x1 \ f
f0
f1
f2
f3
0
0
0
1
1
1
0
1
0
1
Условное
0
x1
1
x1
обозначение
Функции f0 и f3 не зависят от значения переменной x1 и называются
константными ( f0(x1)  0, f3(x1)  1). Функция f1(x1) = x1 называется
тождественной функцией, а функция f2(x1) = x1 называется отрицанием.
Функций от двух переменных – шестнадцать.
x1, x2\ f
00
01
10
11
Обозначение
f0
0
0
0
0
0
f1
0
0
0
1
x1 x2
f2
0
0
1
0
f3
0
0
1
1
x1
f4
0
1
0
0
x1, x2\ f
00
01
10
11
Обозначение
f8
1
0
0
0
x1  x2
f9
1
0
0
1
x1~x2
f10
1
0
1
0
x2
f11
1
0
1
1
f12
1
1
0
0
x1
f5
0
1
0
1
x2
Таблица 1.1.6
f6
f7
0
0
1
1
1
1
0
1
x1  x2 x1  x2
f13
1
1
0
1
x1  x2
f14
1
1
1
0
x1| x2
f15
1
1
1
1
1
Важнейшими из них являются:
f1 - конъюнкция (x1 x2, x1 & x2, x1  x2)
f6 - сложение по модулю 2 (x1  x2 )
f7 - дизъюнкция(x1  x2)
f8 - функция Пирса (x1  x2)
f13 - импликация (x1  x2)
f14 - функция Шеффера (x1| x2)
Определение 1.1.7 Переменная xi , или i-ая переменная двоичной функции
f(x1,... , xn) называется существенной переменной функции f(т.е. функция f
существенно зависит от xi), если существует набор
(a1,..., ai-1, ai+1,..., an)  F2n1 такой, что
f (a1,..., ai-1,0, ai+1,..., an) f (a1,..., ai-1,1, ai+1,..., an)
В противном случае переменная xi называется несущественной (фиктивной)
переменной функции f.
Так, среди функций от двух переменных имеется ровно десять функций,
существенно зависящих от всех своих переменных.
Число двоичных функций от n переменных растет с увеличением n
чрезвычайно быстро, например, при n  8 оно равно
Таблица 1.1.8
число функций от n
переменных
2
16
256
65536
4294967296
> 1.8 1019
> 3.4 1038
> 1.1 1077
n
1
2
3
4
5
6
7
8
С табличным заданием функции непосредственно связан такой ее параметр, как
вес.
Определение 1.1.9 Множество двоичных наборов
{(a1, ... ,an)  F2n | f(a1, ... ,an) = 1}, на которых функция f принимает значение 1,
называется областью истинности функции f.
Мощность области истинности функции f называется весом функции f и
обозначается ||f||.
Очевидно, что 0 ||f||  2n, причем равенства достигаются лишь для
функций-констант 0 и 1. Если ||f|| = 2n-1, то функция f называется
равновероятной.
Для двоичных функций используются и другие способы задания,
приспособленного для рассматриваемой в каждом конкретном случае задачи,
которые будут рассмотрены ниже.
§1.2 Геометрический способ задания
Под геометрическим способом задания двоичной функции f(x1, ... ,xn)
понимается выделение тех вершин n –мерного двоичного куба, на наборах
координат которых функция принимает единичное значение. На рис. 1.2.1
приведены двоичные кубы размерностей n = 0, 1, 2, 3.
x2
x3
01
11
001
011
101
111
000
010
0
(n = 0)
1
(n = 1)
x1
00
10
(n = 2)
100
x1
x2
110
(n = 3)
Рис. 1.2.1
Выделим среди множества вершин n-мерного куба те, на наборе координат
которых функция принимает единичное значение. Например, функции,
заданной таблицей 1.2.2 соответствует геометрическое задание, изображенное
на рис. 1.2.3
x1
Таблица 1.2.2
x1
x2
x3
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
f
1
0
1
0
1
0
1
1
x3
001
011
101
111
000
010
x2
110
100 x1
Рис. 1.2.3
Часто по геометрическому заданию функции строят граф связности
вершин n-мерного куба, соответствующий данной функции. Для этого сначала
отмечают те ребра, у которых оба конца выделены, т.е. соответствующие
вершины лежат в области истинности. Затем все остальные ребра и вершины, не
лежащие в области истинности, отбрасывают. Так функции, изображенной на
рис. 1.2.3, соответствует граф связанности вида
010
000
110
111
100
Рис 1.2.4
§1.3 Задание двоичных функций формулами
Пусть имеется некоторый класс (т.е. множество) двоичных функций K.
Он может быть как конечным, так и бесконечным. Обозначим через f1, f2, ... ,
входящие в него функции, и пусть X = {x1, x2 ,...} множество двоичных
переменных. Дадим индуктивное определение формулы над классом K.
1. Символ переменной xi, xiX есть формула над K.
2. Если f –обозначение некоторой функции от m переменных из класса
K и Ф1, ..., Фm - формулы над K то запись Ф = f(Ф1, ... , Фm) есть
формула над K
Таким образом, формулы – это записи, в которых используются символы
переменных и функций из K. Если необходимо подчеркнуть, от каких
переменных зависит формула Ф, то используют обозначение Ф(x1, ... ,xn), где x1,
... ,xn - это все переменные, участвующие в задании формулы Ф.
Установим теперь связь между формулами и двоичными функциями.
Сначала заметим, что для произвольного набора значений переменных,
входящих в формулу, можно, используя индуктивных характер определения,
вычислять ее значение на этом наборе. Действительно, если значение формул
Ф1, ..., Фm, входящих в формулу Ф = f(Ф1, ... , Фm), уже подсчитаны и равны
соответственно b1, ..., bm, biF2, то значение формулы Ф равно значению
функции f(b1, ..., bm). Поставим в соответствие каждой формуле Ф(x1, ... ,xn)
функцию fФ(x1, ... ,xn), зависящую от тех же переменных, значения которой при
всех значениях переменных совпадают со значениями формулы Ф(x1, ... ,xn).
Легко видеть, что одна и та же формула может быть использована для
записи целого ряда функций. Например, формула x1 соответствует функциям
x1
0
1
f1
0
1
x1
0
0
1
1
x2
0
1
0
1
f
0
0
1
1
x1
0
0
0
0
1
1
1
1
x2
0
0
1
1
0
0
1
1
x3
0
1
0
1
0
1
0
1
f
0
0
0
0
1
1
1
1
и.т.д. Поэтому естественным оказывается следующее определение.
Определение 1.3.1 Под функциями, реализуемыми формулой Ф понимается
функция fФ , а также все функции, которые получаются из fФ удалением или
добавлением несущественных переменных.
С другой стороны, одной функции может соответствовать множество
различных формул. Например, рассматриваемые выше функции могут быть
заданы любой из следующих формул:
x1, x1 (x1  x2), x1  (x1 x2), x1  (x2 x 2 ), ...
Чтобы учесть эту неоднозначность введем понятие равносильности
формул.
Определение 1.3.2. Две формулы Ф1 и Ф2 называются равносильными
(обозначается Ф1 = Ф2), если они реализуют одинаковые множества функций.
Замечание 1.3.3. Заметим, что для проверки равносильности формул Ф1 и Ф2
достаточно добавить к функции f ф1 те переменные, которые входят в Ф2, но не
входят в формулу Ф1, а к функции f ф2 добавить переменные из Ф1, которые не
входят в формулу Ф2, а затем сравнить таблицы полученных функций.
Приведем два свойства, облегчающих проверку равносильности формул.
Для их формулировки нам потребуется понятие подформулы.
Определение 1.3.4. Подформулой формулы Ф называется сама формула Ф;
подформулой формулы f(Ф1, ..., Фm) называется она сама, а также все
подформулы формул Ф1, ..., Фm.
Свойство 1.3.5. Если Ф1 - подформула формулы Ф, и Ф1 равносильна Ф2, то
подформула Ф’, полученная из Ф путем замены Ф1 на Ф2 будет равносильна
формуле Ф.
Свойство 1.3.6. Если формулы Ф1 и Ф2 равносильны, то, подставив
одновременно в них вместо некоторых переменных любые формулы, получим в
результате также равносильные формулы.
Основные способы задания двоичных функций.
(продолжение)
§2.1 нормальные формы двоичных функций.
Всюду в этом параграфе рассматриваются формулы над классом
 xi , еслиa i  1;
К  х1 х 2 , х1  х 2 , х1 . Обозначим через х iai функцию хiai  
 xi , еслиa i  0.


Очевидно, что хiai  1 тогда и только тогда, когда хi  ai , ai  {0,1}
Определение 2.1.1 Элементарной конъюнкцией называются формулы вида
хia11 ...  xiakk , где все переменные различны. Рангом элементарной конъюнкции
называется число входящих в неё переменных.
Непосредственно из определения 2.1.1 получаем, что элементарная
конъюнкция хia11 ...  xiakk принимает единичное значение в том и только том
случае, когда хi  ai , i  1, k . Этот факт запомним как свойство элементарных
конъюнкций.
Определение 2.1.2. Дизъюнктивной нормальной формой (ДНФ) называется
формула вида  хia11  ...  xiakk , где дизъюнкция берется по некоторым наборам
(i1 ,...., ik ),1  i1  ...  ik  n , и (a1 ,..., a k )  F2k , k  {1,..., n} .
Обозначим через f (a1 ,..., ak , xk 1 ,...xn ) функцию, полученную из функции
f ( x1 ,..., xn ) фиксацией первых k переменных значениями a1 ,..., ak  F2 . Из
следующей теоремы вытекает, что любую двоичную функцию можно задать с
помощью ДНФ.
Теорема 2.1.3 (о разложении функции). При любом k , 1  k  n , двоичную
функцию f ( x1 ,..., xn ) можно представить в виде:
(2.1.4)
f ( x1 ,..., x n ) 

( a1 ,..., ak )F2k
x1a1  ...  x kak  f (a1 ,..., a k , x k 1 ,...x n )
Доказательство. Покажем, что функция, стоящая в левой и правой части
равенства 2.1.4 , принимает одинаковое значение при одинаковых значениях
переменной. Пусть x1  b1 ,..., xn  bn . Тогда в силу свойств элементарных
конъюнкций значение функции из правой части равно

( a1 ,..., ak )F2k
b1a1  ...  bkak  f (a1 ,..., a k , bk 1 ,...bn ) =
b1b1  ...  bkbk  f (b1 ,..., bk , bk 1 ,...bn )  f (b1 ,..., bn ) . Теорема доказана. 
Следствие 2.1.5
(2.1.6)
f ( x1 ,..., xn )  x1 f (0, x2 ,..., xn )  x1 f (1, x2 ,..., xn )
Доказательство. Следует из теоремы 2.1.3, если положить k  1. 
Следствие 2.1.7
(2.1.8)
f ( x1 ,..., xn )  xi f ( x1 ,..., xi 1 ,0, xi 1 ,..., xn )  xi f ( x1 ,..., xi 1 ,1, xi 1 ,..., xn )
Доказательство. Вытекает из следствия 2.1.5 при перенумерации переменных.
Замечание 2.1.9. Разложение (2.1.6) называется разложением Шеннона.
Следствие 2.1.10
f ( x1 ,..., x n ) 

( a1 ,..., an )F2n
x1a1  ...  x nan  f (a1 ,..., a n )
(2.1.11)
Доказательство. Следует из теоремы 2.1.3 , если положить k  n .
Замечание 2.1.12. В разложении 2.1.11 можно опустить все элементарные
конъюнкции, которым соответствуют нулевые значения функций. Полученная в
результате формула имеет вид :
f ( x1 ,..., x n ) 
 n x1a1  ...  x nan
(2.1.13)
( a1 ,..., an )F2
f ( a ) 1
Определение 2.1.14. Равенство (2.1.13) называется совершенной ДНФ
(СДНФ) функции f .
Как построить СДНФ функции f ?
СДНФ двоичной функции легко построить по ее табличному заданию. С этой
целью для каждого набора аргументов (a1 ,..., a n ) , на котором функция
принимает единичное значение, строится элементарная конъюнкция ранга n по
правилу:
(a1 ,..., a n )  x1a1  ...  x nan
(2.1.15)
Затем берется дизъюнкция всех построенных элементарных конъюнкций.
Приведём пример:
Пример 2.1.16. Пусть функция f задана следующей таблицей:
Таблица 2.1.17
f
x1 x 2 x3
0 0 0
0
0 0 1
1
0 1 0
0
0 1 1
1
1 0 0
0
1 0 1
0
1 1 0
1
1 1 1
1
Построим для неё СДНФ:
001  x10  x20  x31  x1  x2  x3 ,
011  x10  x12  x31  x1  x2  x3 ,
110  x11  x12  x30  x1  x2  x3 ,
111  x11  x12  x31  x1  x 2  x3 .
Поэтому:
f ( x1 , x2 , x3 )  x1  x2  x3  x1  x2  x3  x1  x2  x3  x1  x2  x3 .
Заметим, что СДНФ является частным случаем ДНФ. В ней все элементарные
конъюнкции имеют ранг n .
Отличительной особенностью СДНФ является то, что она однозначно
определяется по функции f . Действительно, все элементарные конъюнкции в
ней находятся во взаимно-однозначном соответствии с векторами (a1 ,..., a n ) из
области истинности функции: x1a1  ...  x nan  (a1 ,..., a n ) .
В отличие от СДНФ, ДНФ не однозначно соответствует функции. Так
функция f ( x1 , x2 , x3 ) из предыдущего примера может быть записана в виде
следующих ДНФ:
x2  x2  x1  x2  x2  x1  x2  x1  x2  x1  x2  x2  x1  x2  x3
Аналогично ДНФ вводятся конъюктивные нормальные формы (КНФ). Они
являются конъюнкциями элементарных дизъюнкций х ia11  ...  x iak k и имеют
вид  ( хia11  ...  xiakk ) , где конъюнкция берется по некоторым наборам
(i1 ,...., ik ),1  i1  ...  ik  n , (a1 ,..., a k )  F2k , k  {1,..., n} . Как и в случае СДНФ
можно показать, что функции f ( x1 ,..., xn ) соответствует однозначно
определенная КНФ( называемая совершенная КНФ), в которой все
элементарные дизъюнкции имеют ранг n . Её можно получить из СДНФ
 n x1b1  ...  xnbn с помощью соотношений:
функции f : f ( x1 ,..., xn ) 
( b1 ,..., bn )F2
f ( b ) 1
x 2  x1  x1  x 2 , x 2  x1  x1  x 2 . Из свойств 1.3.5 и 1.3.6 равносильных формул
имеем :
f ( x1 ,..., x n )  f ( x1 ,..., x n ) 

( b1 ,..., bn )F2n
f ( b ) 1

( b1 ,..., bn )F2n
x1b1  ...  xnbn =

( b1 ,..., bn )F2n
x1b1  ...  xnbn =
f ( b )0
( x  ...  x ) .
b1
1
bn
n
f (b )0
СКНФ функции f легко строится по её табличному зданию. Для функции
f ( x1 , x2 , x3 ) , заданной таблицей 2.1.17, получаем:
000  x11  x12  x31  x1  x 2  x3 ,
001  x11  x12  x30  x1  x2  x3 ,
100  x10  x12  x31  x1  x2  x3 ,
101  x10  x12  x30  x1  x2  x3 .
Поэтому
f ( x1 , x2 , x3 )  ( x1  x2  x3 )  ( x1  x2  x3 )  ( x1  x2  x3 )  ( x1  x2  x3 ).
§2.2 Многочлен Жегалкина и действительный
многочлен двоичной функции.
Будем рассматривать формулы над классом К  х1 х2 , х1  х2 ,0,1
Определение 2.2.1. Многочленом Жегалкина (приведенным многочленом)
называется представление двоичной функции f ( x1 ,..., xn ) формулой вида:
n
f ( x1 ,..., xn )  a0   ai  xi 
i 1
a
ij
{i , j },1i  j  n
 xi  x j  ...  a1... n  x1  ...  xn , где
a0 , a1 ,..., a n , a12 ,..., a1... n  F2 .
Теорема 2.2.2. Для каждой двоичной функции существует единственный
многочлен Жегалкина.
Доказательство. Покажем, что по таблице функции однозначно определяются
коэффициенты a0 , a1 ,..., a1... n её многочлена Жегалкина. Воспользуемся методом
неопределенных коэффициентов. Будем последовательно вычислять значения
искомого многочлена на наборе из одних нулей, затем на наборе с одной
единицей, затем – с двумя, и т.д. В результате получим систему:
 f (0,0,......,0,0)  a 0 ,
 f (1,0,.......,0,0)  a  a ,
0
1

 f (0,1,.......,0,0)  a 0  a 2 ,

........................................

 f (0,0,.......,0,1)  a 0  a n ,
 f (1,1,........,0,0)  a  a  a  a ,
0
1
2
12

..........................................

n
 f (1,1,.........,1,1) a  a  a  ....  a .

 ij
0
1
1... n

i 1
{i , j }
Из первого уравнения находим a 0 , из второго a1 ,…, из (n  1)  го - a n ,
из (n  2)  го - a12 ,…, из последнего a1,..., n . Теорема доказана. 
Определение 2.2.3. Конъюнкции xi1 ...  xik , входящие в многочлен Жегалкина,
называются одночленами. Степенью одночлена называется число входящих в
него переменных (ранг конъюнкции). Степенью нелинейности (порядком)
многочлена Жегалкина функции f (обозначается deg f ) называют
максимальную из степеней входящих в него многочленов.
Многочлен Жегалкина можно вычислять исходя из ДНФ или СДНФ
функции f ( x1 ,..., xn ) , выразив операции дизъюнкция и отрицание через
операции конъюнкция и сложение по модулю два :
x1  x2  x1  x2  x1 x2 ;
x1  x1  1
Пример 2.2.4.
f ( x1 , x 2 , x3 )  x1 x3  x 2 x3
f ( x1 , x2 , x3 )  x1  x3  x2  x3  x1  x3  x2  x3  x1  x3  x2 x3  ( x1  1)  x3  x2  ( x3  1)
=
= x2  x3  x1  x3  x2  x3
Двоичные функции можно также задавать многочленами, в которых
используются операции сложения, вычитания и умножения действительных
чисел. Так, непосредственно проверкой убеждаемся, что
x1  x 2  x1  x 2 ,
x1  x 2  x1  x 2  x1  x 2 ,
x1  x 2  x1  x 2  2 x1  x 2 ,
x1  1  x1 .
Поскольку каждую двоичную функцию можно задать своим многочленом
Жегалкина, СДНФ или СКНФ, то ,заменив все используемые в этих формулах
операции на их выражения (по приведенным выше формулам) и раскрыв затем
скобки получаем для всякой двоичной функции эквивалентную запись в виде
некоторого действительного многочлена. Вместе с тем, можно заметить, что
такая запись неоднозначна. Например , функцию x1 можно представить
действительными многочленами вида :
x1  1  x1  1  2 x1  x12  1  x12  1  3x12  214  ....
Перечисленные многочлены при x1  0 и x1  1 принимают значения 1 и 0
соответственно. Все многочлены в этом примере обладают той особенностью,
что они содержат степени переменной x1 , в то же время для двоичных
переменных очевидны равенства:
x1  x12  x13  ...
Если отказаться от использования переменных в степенях выше первой , то
неоднозначность представления двоичных функций можно исключить.
Теорема 2.2.4. Любая двоичная функция f ( x1 ,..., xn ) однозначно
представляется в виде следующего действительного многочлена :
n
D f ( x1 ,..., xn )  a0   ai  xi 
i 1
a
ij
{i , j },1i  j  n
 xi  x j  ...  a1... n  x1  ...  xn
все коэффициенты ,которого являются целыми числами.
Доказательство. Полностью аналогично тому, которое было приведено в
теореме 2.2.2. Необходимо только заменить операцию «  » на «+».
Ниже, говоря «действительный многочлен», будем всюду иметь в виду
определенный в теореме 2.2.4 многочлен D f ( x1 ,..., x n )
§ 2.3. Теорема о разложении в ряд Фурье.
Сопоставим каждому двоичному вектору a  (a1 ,..., a n )  F2n линейную
двоичную функцию a1 x1  ...  a n xn ( сокращенно ( a, x )), и определим функции
:
1, если (a, x)  0
e i ( a , x )  (1) ( a , x )  
 1, если (a, x)  1
Например, векторам a  (0,...,0) и b  (1,...,1) соответствуют из функции
e i ( 0, x )  (1) 0  1
и
e i (1, x )  (1) x1 ... x2
соответственно. Всего имеется 2 n функций вида (1) ( a , x ) . Как показывает
следующая лемма, они образуют ортогональную систему функций.
Лемма 2.3.1. Для любых векторов a, b  F2n справедливы равенства
0, еслиa  b
n(1) (a, x)  (1) (b, x)  2 n , еслиa  b
xF2

0, еслиa  0
Доказательство. Сначала заметим, что  (1) ( a , x )   k
xF2n
2 , еслиa  0
Поскольку линейная функция ( a, x ) при a  0 принимает значение 0 ровно 2 n 1 .
Теперь
 (1) (a, x)  (1) (b,x)   (1) (a, x)(b, x)   (1) (a,x)(b,x)   (1) (ab,x) . Отсюда и
xF2n
xF2n
xF2n
xF2n
следует утверждение леммы.
Теорема 2.3.2. (о разложении в ряд Фурье). Для всякой двоичной функции
имеется единственное разложение вида : f ( x)   C af  (1) ( a , x ) , где
aF2n
коэффициенты C af являются рациональными числами. При этом значения
коэффициентов определяются равенствами
1
С af  n  f ( x)  (1) ( a , x ) .
x xF2n
Доказательство. Докажем сначала, что указанный ряд представляет функцию
f (x ) . Имеем
C
f
a
 (1) ( a , x ) 
aF2n

 1
  2  f ( y)  (1)
aF2n

n
y
(a, y )

1
  (1) ( a , x )  n

2


yF2n


f ( y )    (1) ( a , y )  (1) ( a , x )  
 aF n

 2

1
 f ( x)  2 n  f ( x)
n
2
Поскольку в последней сумме будет только одно нулевое слагаемое при y=x.
Покажем теперь, что коэффициенты С af однозначно определяются по функции
~
f (x ) . Предположим, существует другое разложение f ( x)   C af  (1) ( a , x ) .
Тогда


aF2n
~
C af  C af  (1) ( a , x )  0 . Домножив обе части этого равенства на
aF2n
(1) (b, x ) для b  F2n и просуммировав по x  F2n полученные равенства,
получаем :
0

   C

xF2n aF2n
f
a


~
~ 
~
 C af  (1) ( a , x )   (1) ( b , x )   C af  C af    (1) ( a , x )  (1) (b , x )   C af  C af  2 n

 xF n

aF2n

 2





~
Отсюда Сbf  Cbf . Так как b-произвольный вектор из F2n получаем требуемое
утверждение.
Определение 2.3.2. Коэффициенты С af , a  F2n , называется коэффициентами
Фурье функции f (x) .
Лекция №3
Полнота и замкнутость. Критерий полноты системы.
Функционально полные системы. Замкнутые классы булевых
функций.
§3.1 Полнота и замкнутость. Функционально полные
системы.
Определение 3.1.1. Для произвольного класса системы двоичных функций К
множество всех двоичных функций, представимых формулами ,над К ,
называется замыканием класса (системы) функций К и обозначается через К  .
Имеют место следующие свойства замыкания:
Свойство 3.1.2. К  К  .
Свойство 3.1.3. К1  К 2  К1   К 2 
Свойство 3.1.4. К   К 
Обозначим через B2 (n) - множество всех двоичных функций от переменных, а
через B2 множество всех двоичных функций (от произвольного числа
переменных).
Определение 3.1.5. Система функций К называется полной, если К   B2 .


Утверждение 3.1.6. Система функций К 0  х1 х2 , х1  х2 , х1 является полной
системой функций.
Доказательство. Очевидно, что элементарная конъюнкция хia11 ...  xiann является
формулой над К 0 . Отсюда следует, что дизъюнкция любого числа
элементарных конъюнкций является формулой над К 0 . Отсюда и из равенства
(2.1.13) следует, что любая функция f  B2 ,представима над формулой К 0 .
Следовательно, К 0   B2 . 


Утверждение 3.1.7. Система функций К 1  х1 х 2 , х1 является полной системой
функций.
Доказательство. Очевидно, что К1   B2 , из равенства x1  x2  x1  x2
следует, что К 0  К1  . Отсюда и из свойств 3.1.3 и 3.1.4 имеем
B2  К 0   К1   К1  , т.е. B2  К1  . Таким образом, показано, что
B2  К1  и B2  К1  . Полученные включения означают, что К1   B2 . 



Утверждение 3.1.8. Система функций К 1  х1  х 2 , х1 является полной
системой функций.
Доказательство. Очевидно, что К 2   B2 , из равенства x1  x2  x1  x2
следует, что К1  К 2 . Отсюда и из свойств 3.1.3 и 3.1.4 имеем
B2  К1   К 2   К 2  , т.е. B2  К 2  . Таким образом, показано, что
B2  К 2  и B2  К 2  . Полученные включения означают, что К 2   B2 . 
Утверждение 3.1.9. Система функций К 3  х1 | х2  является полной системой
функций, где x1 | x2 - двоичная функция, называемая штрихом Шеффера,
задается таблицей
x1 x 2
x1 | x2
0 0
1
0 1
1
1 0
1
1 1
0
Доказательство. Очевидно, что К 3   B2 . Из равенств:
x1  x1 | x1
и
x1  x2  ( x1 | x2 ) | ( x1 | x2 )
следует, что К1  К 3  . Далее доказательство текстуально аналогично
доказательству утверждения 3.1.8 при подстановке К 3 вместо К 2 . 
Утверждение 3.1.10. Система функций К 4  x1  x2 , x1  x2 ,1 , является полной
системой функций.
Доказательство. Очевидно, что К 4   B2 . Из равенства x1  x1  1 следует, что
К1  К 4 . Далее доказательство текстуально аналогично доказательству
утверждения 3.1.8 при подстановке К 4 вместо К 2 . 
Утверждение 3.1.11. Система функций К 5  x1  x 2  , является полной
системой функций, где x1  x2 - двоичная функция, называемая стрелкой Пирса,
задается таблицей:
x1 x 2
x1  x2
0 0
1
0 1
0
1 0
0
1 1
0
Доказательство. Очевидно, что К 5   B2 . Из равенств : x1  x1  x1 и
x1  x2  ( x1  x2 )  ( x1  x2 ) следует , что К 2  К 5 . Далее доказательство
текстуально аналогично доказательству утверждения 3.1.8 при подстановке К 2
вместо К1 и К 5 вместо К 2 . 
Определение 3.1.12. Каждая двоичная функция f ( x1 ,..., xn ) сама одна
образующая полную систему называется Шефферовой функцией.
Пример 3.1.13. Функция f ( x1 , x2 )  x1 | x2 является Шефферовой функцией.
Это следует из утверждения 3.1.9.
Пример 3.1.14. Функция f ( x1 , x2 )  x1  x2 является Шефферовой функцией.
Это следует из утверждения 3.1.11.
Примеры Шефферовых функций от большего числа переменных будут
приведены ниже, после изложения критерия полноты системы двоичных
функций.
§3.2. Замкнутые классы булевых функций.
Определение 3.2.1. Класс булевых функций К называется замкнутым, если он
совпадает со своим замыканием, т.е. К  К  .
Замечание 3.2.2 Полное описание всех замкнутых классов было дано
американским математиком Э. Постом. В частности, он доказал, что множество
всех замкнутых классов булевых функций счетно и в каждом замкнутом классе
К можно выделить конечную подсистему К  , порождающую К , т.е.
имеющую своим замыканием класс К , т.е. К  К  .
Определение 3.2.3. Булева функция f ( x1 ,..., xn ) называется функцией,
сохраняющей константу 0, если f (0,...,0)  0 .
Класс всех булевых функцией, сохраняющих константу 0, обозначим Т 0 .
Определение 3.2.4. Булева функция f ( x1 ,..., xn ) называется функцией,
сохраняющей константу 1, если f (1,...,1)  1 .
Класс всех булевых функцией, сохраняющих константу 1, обозначим Т1 .
Определение 3.2.5. Булева функция f ( x1 ,..., xn ) называется линейной, если
а1 ,..., аn  F2 , такие ,что f ( x1 ,..., xn )  a1 x1  ...  an xn .
Класс всех булевых линейных функций обозначим через L .
Определение 3.2.6. Булева функция f ( x1 ,..., xn ) называется аффинной
функцией, если а1 , a2 ,..., аn , an1  F2 , такие, что
f ( x1 ,..., xn )  a1 x1  ...  an xn  an1 .
Обозначим через L1 класс всех булевых аффинных функций.
Определение 3.2.7. Булева функция f ( x1 ,..., xn ) называется самодвойственной
функцией, если f (a1 ,..., an )  f (a1 ,..., an ) а1 ,..., а n  F2 (3.2.8)
Класс всех булевых самодвойственных функций обозначим через S.
Далее определим понятие монотонной функции. Для этого нам необходимы
некоторые дополнительные сведения. Изложим их. На множестве F2n (n  1)
введем отношение  , положив для наборов a  (а1 ,..., а n )  F2n и
b  (b1 ,..., bn )  F2n : a  b  a1  b1 ,..., an  bn , где отношение  на F2n
понимается как неравенство на множестве чисел {0,1}.
Несложно доказать, то отношение  рефлексивно, транзитивно и
антисимметрично, т.е. является отношением частичного порядка.
Определение 3.2.9. Булева функция f ( x1 ,..., xn ) называется монотонно
возрастающей, или монотонной, если для любых наборов a, b  F2n выполняется
условие: a  b  f (a)  f (b)
Замечание 3.2.10. Нульместные функции 0 и 1 также естественно считать
монотонными.
Класс всех булевых монотонных функций обозначим через М.
Утверждение 3.2.11. Классы булевых функций T0 , T1 , L, L1 , S и M являются
замкнутыми классами булевых функций.
Для доказательства данного утверждения нам необходимо определить понятие
ранга формулы А над классом К .
Определение 3.2.12. Число всех символов функций из К , встречающихся в
формуле А над К , называется рангом формулы А и обозначается через r ( А) .
Замечание 3.2.13. Понятие ранга формулы А над классом К не следует путать
с понятие ранга элементарной конъюнкции из определения 2.1.1.
Доказательство утверждения 3.2.11. Замкнутость перечисленных в
утверждении 3.2.11 шести классов функций доказывается по одной и той же
схеме. Проделаем это для какого-нибудь одного класса, например S.
Согласно определениям замыкания (определение 3.1.1) и замкнутого класса
(определение 3.2.1) нам необходимо доказать, что любая функция,
представимая формулой над S, принадлежит S. Докажем это индукцией по
рангу r ( А) формулы А, представляющей функцию f ( x1 ,..., xn ) .
Если r ( А)  0 , то A  xi , и утверждение очевидно, так как xi  xi .
Пусть утверждение верно для всех f , таких что r ( А)  k , где k    0.
Докажем, что утверждение верно и при r ( А)  k  1 .
Если r ( А)  k  1 , то А имеет вид: f j ( A1 ,..., Am ) , где f j  S и A1 ,..., Am формулы меньших рангов, чем k  1 , т.е. r ( А1 )  k  1,..., r ( Am )  k  1 . По
предположению индукции формулы A1 ,..., Am представляют булевы функции
1 ,...,  m  S . Тогда для любых а1 ,..., а n  F2n имеем:
f (a1 ,..., a n )  f j ( 1 (a1 ,..., a n ),...,  m (a1 ,..., a n ))  f j (( 1 (a1 ,..., a n ),...,  m (a1 ,..., a n )) 
 f j ( 1 (a1 ,..., a n ),...,  m (a1 ,..., a n ))  f j ( 1 (a1 ,..., a n ),...,  m (a1 ,..., a n ))  f (a1 ,..., a n )
Следовательно , f удовлетворяет условию (3.2.8), т.е f  S . 
§3.3 Критерий полноты системы булевых функций.
Теорема 3.3.1. Система булевых функций К полна тогда и только тогда, когда
она содержит хотя бы по одной функции каждого из следующих классов :
B2 \ T0 , B2 \ T1 , B2 \ L1 , B2 \ S , B2 \ M . (3.3.2)
(без доказательства).
Пример 3.3.3. Пусть функция f ( x1 , x2 , x3 ) задана таблицей 3.3.4
x1
0
0
0
0
1
1
1
1
x2
0
0
1
1
0
0
1
1
x3
0
1
0
1
0
1
0
1
f
1
0
0
0
0
0
0
0
Таблица 3.3.4
Показать, что f ( x1 , x2 , x3 ) - Шефферова функция, т.е. К   f - полная система,
т.е. К   B2 . Выразить x1 и x1  x2 формулами над К.
Решение:
f (0,0,0,0)  1  f  T0  f  B2 \ T0 ,
f (1,1,1,1)  0  f  T1  f  B2 \ T1 ,
(0,0,0)  (1,1,1) , но f (0,0,0) не  f (1,1,1)  f  M  f  B2 \ M .
f (0,0,1)  0  f (0, 0,1)  f (1,1,0)  0  1  f  S  f  B2 \ S .
Чтобы выяснить вопрос о принадлежности f классу L , представим f
многочленом Жегалкина:
f ( x1 , x2 , x3 )  x1 x2 x3  x1 x2 x3  x1 x2  x1 x3  x2 x3  x1  x2  x3  1  f  L1  f  B2 \ L1 .
Итак, все условия теоремы 3.3.1 выполнены. Следовательно К   f -полная
система, т.е. f - Шефферова функция. Теперь решим вторую часть примера. Так
как f  x1 x2 x3 . , то очевидно x1  f ( x1 , x1 , x1 ). , x1 x2  f ( x1 , x2 ,0) .
Лекция №4.
§4.1. Псевдобулевы функции.
Пусть Р- произвольное поле. Элементы 0;1 F2 будем рассматривать как нуль
и единицу поля F2 .
Определение 4.1.1. Псевдобулевой функцией от n переменных, или n -местной
псевдобулевой функцией, над полем Р при n  1 называется любое отображение
F 2n в Р. Нуль-местными псевдобулевыми функциями над Р называются все
элементы поля Р.
Множество всех пседобулевых функций от n переменных над полем Р
обозначим через Р (n ) . В частности, при Р  GF (2) класс Р (n ) совпадает с
классом булевых функций B2 (n) . В других случаях эти классы различны и если
условиться , псевдобулеву функцию со значением из F2 считать булевой, то :
B2 (n)  Р(n) .
Множество функций Р (n ) относительно естественным образом определяемых
операций сложения функций и умножения функций на элементы из Р образуют
линейное пространство над полем Р.
Рассмотрим систему функций:
(4.1.2)
{ f 2 |   F2n , f (  )    ,  }
1, при  
,где   ,  -символ Кронекера, т.е. :   ,   
0, при  
Утверждение 4.1.3. Система функций (4.1.2) является базисом пространства
Р (n ) .
Доказательство. Очевидно, что система (4.1.2) – линейно независимая система.
Далее пусть f - произвольная функция из Р (n ) . Тогда очевидно, что :
(4.1.4)
f ( x)   f ( )  f ( x)
F2n
Отсюда следует, что (4.1.2) – базис пространства Р (n ) . 
Замечание 4.1.5. Если Р  GF (2) , то f - булева функция и разложение (4.1.4)
функции f совпадает с разложением , полученным заменой в её СДНФ
операции  на  .
Замечание 4.1.6. Если P  GF (2) , то система функций :
{xi1  xi2  ...  xik | 1  k  n,1  i1  ...  ik  n}
(4.1.7)
является базисом пространства P(n)  B2 (n) . Это следует из теоремы 2.2.4 об
однозначном представлении булевых функций многочленами Жегалкина. В
этом случае представление функции многочленом Жегалкина есть (4.1.7).
Замечание 4.1.8. Представление булевых функций через базисы пространства
Р (n ) сопряжено со многими трудностями. Вот две из них :
1. Непростым является вопрос об описании базисов пространства Р (n ) ;
2. Если даже имеется система функций являющаяся базисом
пространства, то в общем случае сложным является вопрос о
нахождении коэффициентов в разложении булевой функции по
указанному базису.
Замечание 4.1.9. В решении вопроса об описании базисов пространства Р (n )
иногда оказывается полезным переход от пространства Р (n ) к пространству
n
Р ( 2 ) векторов-столбцов длинны 2 n над полем Р. Сопоставим каждой функции
f  Р (n) вектор столбец значений f этой функции. В итоге получаем

отображение  пространства Р (n ) в пространство Р ( 2 ) . Нетрудно видеть, что
 есть изоморфизм пространств, а поэтому система функций  0 ,  1 ,...,  2n 1
n
является базисом пространства Р (n ) тогда и только тогда, когда матрица
( 0 , 1 ,...,  2n 1 ) является невырожденной .



§ 4.2. Функции к-значной логики.
Пусть Fk  {0,1,..., k  1} , где k  , k  2 .
Определение 4.2.1. Функцией k-значной логики, или k-значной функцией, от
переменных при k  1 называется произвольное отображение f : Fkn  Fk kзначными функциями от 0 переменных называются функции- константы
0,1,…,к-1.
Обозначим через Bk и Bk (n) множества всех k-значных функций и k-значных
функций от n переменных.
При изучении k-значных функций используются многие из терминов и
обозначений, введенных при изучении булевых функций. В частности,
аналогичным образом определяются равенство функций, существенные и
несущественные переменные, функции от n переменных, тождественно равны
константам 0,1,…,к-1, подфункции и т.д.
Так как множество Fkn конечно, то k-значную функцию от n переменных
можно задать таблицей её значений на всех наборах (или векторах) из Fkn . При
этом условимся записывать их в порядке возрастания как числа в конечной
системе исчисления. Непосредственно из табличного значения видно, что
n
различных k-значных функций равно k k . При k  2 табличное задание kзначных функций практически еще более трудно осуществимо.
В связи с этим важным вопросом является вопрос о разработке аналитических
способов k-значных функций.
Множество Fk можно рассматривать как кольцо вычетов  / K по модулю k , и
потому можно считать определенными на Fk операции сложения и умножения
по модулю k . Будем обозначать эти операции при k  2 теми же значками , ,
что и операции над числами. Используя эти операции и функции-константы
можно построить кольцо многочленов Fk [ x1 ,..., xn ] от переменных x1 ,..., xn .
Каждый многочлен из этого кольца представляет k-значную функцию от
n переменный . При простом k , когда Fk - есть поле, многочленами
представляются все k-значные функции. При составном k - это не так.
Используя операции сложения и умножения, а так же элементарные функции
1, еслиx  a
 a ( x)  
0, еслиx  a
можно получить представление k-значной функции сходное с совершенной
дизъюнктивной нормальной формой для случая k  2 .
f ( x1 ,..., xn )   a1 ( x1 )  ...   an ( xn )  f (a1 ,..., an ) (4.2.2)
( a1 ,..., an )Fkn
Другими, часто используемыми операциями на Fk являются аналоги
дизъюнкции, конъюнкции и отрицания :
~
x1  x2  max{ x1 , x2 }, x1 & x2  min{ x1 , x2 }, x  x  1(mod k ), x  k  1  x(mod k ) .
Для k-значных функций, как и в двоичном случае, можно ввести понятия
операции, представления функций формулами над заданной системой функций,
замыкания, замкнутой и полной системы функций и.т.д. Приведем примеры
полных систем k-значных функций.
1. Из представления (4.2.2) следует, что полной является система
функций K1  {0,1,..., k  1,  0 ( x),...,  k 1 ( x), x1 x2 , x1  x2 }
2. Так как в разложении (4.2.2) операцию сложения можно заменить на
дизъюнкцию( выбор максимума), то полной является также система
функций K 2  {0,1,..., k  1,  0 ( x),...,  k 1 ( x), x1 x2 , x1  x2 }
3. Наряду с разложением (4.2.2) имеет место еще один аналог
совершенной дизъюнктивной нормальной формы функции
f ( x1 ,..., x n )   I a1 ( x1 ) & ... & I an ( x n ) & f (a1 ,..., a n ) , где
k  1, еслиx  a
. Отсюда следует, что полной является
????  
????
система функций K 3  {0,1,..., k  1, I 0 ( x),..., I k 1 ( x), x1  x2 , x1 & x2 } .
4. Система функций K 4  {x1 , x1  x 2 } является полной системой
функций.
Доказательство. С помощью суперпозиции из функции x1 легко получить
функции x1  1, x1  2,..., x1  (k  1) . Из них получим константу
k  1  max{ x1 , x1  1,..., x1  k  1}, а поэтому все функции константы 0,1,..., k  1 .
Теперь нетрудно получить функции I a (x) :
I a ( x)  max{ x  i : i  Fk \ {k  1  a}}  1 .
Как следует из примера 3, остается построить функцию x1 & x2 , т.е. min{ x1 , x2 }.
Для этого сначала построим функции
s, еслиx  a
f s ,a ( x)  s  1  max{ I a ( x), k  1  s}  
0, еслиx  a
x  max{ f k 1, 0 ( x), f k  2,1 ( x),..., f 0,k 1 ( x)} и
Теперь из них можно получить функции ~
min{ x1 , x2 } 
~
~
.
~
max{ x1, x2 }
5. Аналогично функции Шеффера в k-значной логике является
функция Вебба  k ( x1 , x2 )  max{ x1 , x2 }  1  x1  x2 , которая одна
образует систему, т.е. система K ?  { k ( x1 , x2 )} является ????????
Доказательство. Используя  k ( x1 , x2 ) при x1  x2 имеем
x1  max{ x1 , x1}  1   k {x1 , x1} . Далее получаем :
x1  2  x1
x1  3  x1
.................
(k  1) раз
................ 
x1  k  1  x1
А так как x1  x2  max{ x1 , x2 }  max{ x1 , x2 }  1  k  1   k ( x1 , x2 )  k  1 . Отсюда
имеем, что K 4  [ K 5 ]  K 5 - полная система функций.
Утверждение 4.2.3. Все k-значные функции представляются многочленами над
Fk в том и только том случае, когда к- простое число, т.е. Fk -поле.
(без доказательства).
Утверждение 4.2.4. (критерий полноты- Критерий ?????Слунецкого??).
Пусть система k-значных функций K содержит се функции одной переменной,
причем k  3 . Тогда для полноты системы К необходимо и достаточно, чтобы К
содержала функцию, существенно зависящую по меньшей мере от двух
переменных и принимающую все k значений из Fk .
Лекция №5
5.1 Минимизация двоичных функции.
Пусть двоичная функция f представлена в виде ДНФ:
(5.1.1)
f  xia11  ...  xiakk  ...  x bj11  ...  x bjmm
Определение 5.1.2: Сложностью представления (5.1.1) булевой функции f
называется число операций «  » и «  » в записи (5.1.1).
Замечание 5.1.3: Операции «отрицания» в определении 5.1.2 не учитываются.
Определение 5.1.4: Задача минимизации для функции f заключается в
нахождении заданий функции f в виде ДНФ, у которых сложности минимальны.
Такие ДНФ называются минимальными (МДНФ).
Определение 5.1.5: Импликантами двоичной функции f называются
элементарные конъюнкции, входящие во всевозможные ДНФ функции f.
Импликанта   xia11  ...  xiakk функции f называется простой, если все
элементарные конъюнкции, полученные из неё удалением некоторых
переменных, не являются импликантами функции f.
Утверждение 5.1.6: Пусть   xia11  ...  xiakk . Следующие утверждения
эквивалентны:
1)  является импликантой функции f;
2)   f  f ;
3)   f   .
Доказательство: Покажем эквивалентность первых двух утверждений. Если  –
импликанта и 1  ...  k  f – та ДНФ, в которую входит  , например,
  1 , то
  (1  ...  k )  1  ...  k .
Обратно, если 1  ...  k – некоторая ДНФ, то в силу тождества f    f
конъюнкцию можно  дописать в качестве (k+1)-ой импликанты в эту ДНФ не
нарушая равносильности.
Эквивалентность утверждений 2 и 3 следует из тождеств:
  f  (  f )  f       ,
f   f  f  f .
Утверждение доказано.
Утверждение 5.1.7: В минимальной ДНФ функции f ( f  0;1 ) все импликанты
являются простыми.
Доказательство: Пусть 1  ...  m - минимальная ДНФ функции f.
Предположим, что импликанта 1  xia11  ...  xiakk не простая. Тогда её можно
представить в виде произведения 1  11 двух элементарных конъюнкций
от разных переменных, одна из которых, например, 1 также является
импликантой функции f. Согласно утверждению 5.1.6:
f  1  f , или иначе
f  11 2  ...  m  (11 )  2  ...  m  1  2  ...  m .
Таким образом, получено противоречие с минимальностью исходной ДНФ.
Утверждение доказано.
Из этого утверждения вытекает, что задачу минимизации в классе ДНФ можно
решать в два этапа.
1-ый этап: Находят все простые импликанты функции f. Дизъюнкция всех
простых импликант функции f называется сокращённой ДНФ этой функции.
Замечание 5.1.8: Сокращённая ДНФ функции f действительно является ДНФ
для f, поскольку, повторяя доказательство утверждения 5.1.7 можно в
произвольной ДНФ функции f заменить все импликанты на простые.
2-ой этап: Находят все такие ДНФ функции f, состоящие из простых импликант,
из которых нельзя удалить ни одной импликанты. Такие ДНФ называются
тупиковыми или несократимыми. Подсчитав сложности тупиковых ДНФ,
можно выбрать из них ТДНФ с минимальной сложностью, которая и есть
МДНФ.
5.2 Геометрическая интерпретация минимизации ДНФ.
Зададим двоичную функцию на n-мерном двоичном кубе. Как было отмечено
ранее, при таком задании элементарным конъюнкциям ранга k соответствуют
такие множества вершин, графы связности которых имеют вид (k-n)-мерных
кубов. Поскольку дизъюнкции элементарных конъюнкций соответствует
объединение множеств вершин таких подкубов, то каждой ДНФ функции f
соответствует некоторое покрытие множества Mf единичных вершин функции f
(области истинности) подмножествами, имеющими в качестве графов связности
подкубы. Простым импликантам функции f будут соответствовать подкубы
максимальных размерностей, покрывающие вершины из Mf.
Соответственно, первая задача (1-ый этап) решается перечислением всех
максимальных подкубов, содержащихся в графе связности множества Mf.
Вторая задача (2-ой этап) заключается в нахождении минимальных (по числу
подкубов) покрытий множества Mf максимальными подкубами.
Рассмотрим пример. Пусть двоичная функция f (x1, x2, x3, x4) имеет
геометрическое задание, изображённое на рис. 5.2.1:
0011
1011
X3
0111
1111
X4
0001
0010
1001
0101
1010
0110
1110
1101
0000
1000
0100
1100
X2
Рисунок 5.2.1
Граф связности такой функции имеет вид:
1110
1100
1010
1110
0111
0011
1000
1110
X1
Выпишем сокращённую ДНФ, записывая простые импликанты в том же
порядке, в каком они изображены в графе связности:
x1 x4  x1 x2 x3  x2 x3 x4  x1 x3 x4  x1 x2 x4
Легко видеть, что тупиковыми будут две ДНФ:
x1 x4  x1 x2 x3  x1 x3 x4  x1 x2 x4 ,
x1 x4  x2 x3 x4  x1 x2 x4 ,
соответствующие покрытиям:
Минимальной будет только вторая тупиковая ДНФ.
Лекция №6
6.1 Метод Квайка – Мак-Класски нахождения
сокращённой ДНФ двоичной функции.
Пусть функция f задана в виде СДНФ. Метод, предложенный Квайком в 1952 г.
заключается в следующем:
1. применим к элементарным конъюнкциям СДНФ операцию «неполного
склеивания»:
x  x   ,
до тех пор, пока в результате применения этой операции не перестанут
появляться новые конъюнкции;
2. в полученной ДНФ выполняем операции поглощения:
      , пока это возможно.
Теорема 6.1.1: В результате выполнения пунктов 1, 2 получается сокращённая
ДНФ функции f.
Доказательство: Сначала заметим, что из всякой импликанты функции f можно
с помощью «операции расклеивания»   x  x получить дизъюнкцию
импликант длины n.
Поскольку все импликанты длины n входят в СДНФ, то в результате
применения операции неполного склеивания в СДНФ на первом этапе (пункт 1)
метода будут получены все, в том числе и простые, импликанты функции f.
После применения второго этапа (пункт 2), очевидно, в ДНФ останутся только
простые импликанты, т.е. полученная в результате ДНФ будет сокращенной.
Теорема доказана.
Мак-Класски в 1956 г. предложил удобную интерпретацию этого метода.
Прежде всего заметим, что склеиваться могут только конъюнкции одинакового
ранга, отличающиеся по одной переменной. Будем записывать конъюнкции
xia11 ...  xiakk в виде вектора ( a1 ,..., an ).
n
Индексом конъюнкции назовём || a ||  ai .
i 1
Учитывая это замечание, разобьём все импликанты в СДНФ на группы в
соответствии со значениями их индексов. Сам метод при этом заключается в
заполнении таблицы специального вида.
Пример 6.1.2. Пусть f – функция, геометрическое представление которой дано
на рисунке 5.2.1. Её СДНФ имеет вид:
f ( x1 , x2 , x3 , x4 )  x1 x2 x3 x4  x1 x2 x3 x4  x1 x2 x3 x4  x1 x2 x3 x4  x1 x2 x3 x4  x1 x2 x3 x4  x1 x2 x3 x4 
 x1 x2 x3 x4
Имеем
Индекс
СДНФ
1000*
1
1100*
1010*
0101*
0011*
2
1110*
1011*
0111*
3
Шаг 1
1_00*
10_0*
11_0*
1_10*
101_
01_1
_011
0_11
______
Шаг 2
Шаг 3
1__0
______
______
______
______
______
Таблица 6.1.3.
Применяя операцию неполного склеивания к импликантам длины n (СДНФ)
производим заполнение колонки таблицы. При этом в СДНФ звёздочкой
отмечаются использованные импликанты (они будут поглощаться на втором
этапе). Затем операция склеивания применяется к конъюнкциям ранга (n-1) и
т.д. Как только заполнение таблицы прекратилось, выбираются все не
отмеченные звёздочкой импликанты и из них составляется сокращённая ДНФ.
Для рассмотренного примера сокращённой ДНФ будет:
f ( x1 , x2 , x3 , x4 )  x1 x4  x1 x2 x3  x1 x2 x4  x2 x3 x4  x1 x3 x4 .
6.2 Метод нахождения тупиковых ДНФ.
Для изложения метода нахождения тупиковых ДНФ нам потребуется одно
свойство ДНФ монотонных функций.
Утверждение 6.2.1: Минимальная ДНФ монотонной функции совпадает с её
сокращённой ДНФ.
Доказательство: Сначала покажем, что все простые импликанты монотонной
функции не содержат переменных с отрицаниями. Действительно, в противном
случае наряду с простой импликантой 1  x1 x2a2  ...  xkak функция имела бы
импликанту 2  x1 x2a2  ...  xkak (в силу её монотонности). Склеивая эти две
импликанты, получаем противоречие с простотой импликанты 1 .
Покажем теперь, что все простые импликанты входят в минимальную ДНФ.
Пусть   x1  ...  xm - простая импликанта. Тогда на наборе
( x1  ...  xm )  (1
...10...0) импликанта  принимает значение 1. Все остальные
m
n m
импликанты должны быть равны на этом наборе нулю, так как в них
обязательно должны входить переменные из множества {xm1 ,..., xn } .
Следовательно,  импликанта должна входить в минимальную ДНФ,
поскольку иначе функция f на этом наборе будет равна 0.
Утверждение доказано.
Метод Петрика нахождения тупиковых ДНФ.
Рассмотрим таблицу, строки которой соответствуют простым импликантам
функции f, а столбцы – конъюнкциям совершенной ДНФ (СДНФ). В каждую
клетку записываем единицу, если соответствующая простая импликанта
поглощает элементарную конъюнкцию и ноль – в противном случае. Такая
таблица называется «импликантной таблицей».
Для функции из примера 6.1.2 она имеет вид:
СДНФ
Сокр.
ДНФ
P1 1__0
P2 101_
P3 _001
1000
1100
1010
0101
0011
1110
1011
0111
1
0
0
1
0
0
1
1
0
0
0
0
0
0
1
1
0
0
0
1
1
0
0
0
P4 0_11
0
0
0
0
1
0
0
1
P5 01_1
0
0
0
1
0
0
0
1
Таблица 6.2.2
Согласно определению, каждая тупиковая ДНФ определяется таким набором
строк, что в таблице, образованной этими строками в каждом столбце имеется
одна единица, причём из этого набора нельзя удалить ни одной строки так,
чтобы при этом ни один столбец не стал нулевым.
Пусть в общем случае в таблице имеется N столбцов и m строк. Поставим в
соответствие простым импликантам сокращённой ДНФ переменные P1 … Pm.
Фиксируем некоторую дизъюнкцию простых импликант. Будем считать, что Pi
= 1, если i-ая простая импликанта
входит в эту дизъюнкцию и Pi = 0, в противном случае. Запишем в виде
формалы условие того, что рассматриваемая дизъюнкция является ДНФ
функции. Для этого необходимо, чтобы в каждом столбце таблицы была хотя
бы одна единица, т.е.
N
(6.2.3)
 (a
P  ...  amj Pm )  1 ,
1j 1
j 1
где a ij – элемент матрицы (таблицы), стоящий в i-ой строке и j-м столбце,
i  1, m, j  1, N .
Эту формулу можно трактовать как КНФ некоторой двоичной функции от
переменных P1 … Pm, которая принимает значение 1 только на тех наборах
переменных, которые соответствуют некоторым ДНФ исходной функции, и
значение 0 – на наборах, которые соответствуют наборам импликант, не
являющихся ДНФ исходной функции.
Заметим, что функция  ( P1 ,..., Pm ) монотонна, так как формула 6.2.3 не
содержит переменных с отрицаниями. Поэтому согласно утверждению 6.2.1 для
нахождения её сокращённой ДНФ достаточно раскрыть скобки в формуле 6.2.3,
а затем произвести все поглощения. Наконец, остаётся заметить, что в силу
указанного выше свойства этой функции, её простые импликанты и только они
будут давать тупиковые ДНФ исходной функции f.
Для таблицы 6.2.2 функция  равна:
 ( P1 , P2 , P3 , P4 , P5 )  P1  P1  ( P1  P2 )  P5  ( P3  P4 )  P1  ( P2  P3 )  ( P4  P5 ) 
 P1  ( P1  P2 )  P5  ( P3  P4 )  ( P2  P3 )  ( P4  P5 )  P1  P5 ( P3  P2 P4 )  P1 P3 P5  P1 P2 P4 P5
Отсюда P1P3P5 даёт для f тупиковую форму: x1 x4  x2 x3 x4  x1 x2 x4 ,
а P1P2 P4P5 даёт: x1 x4  x1 x2 x3  x1 x3 x4  x1 x2 x4 .
Лекция №7
7.1 Алгебраические системы. Булевы алгебры.
Определение 7.1.1: Множество M с заданными на нём операциями и
отношениями называется алгебраической системой. При этом M называется
основным множеством системы, а множество символов, используемых для
обозначения определённых на M операций и отношений называется сигнатурой
алгебраической системы.
Алгебраическую систему с основным множеством M и сигнатурой
  { f1 ,... f k ; R1 ,..., Rl } , состоящий из символов операций fi арностей ni и
отношений Rj арностей mj , обозначают в виде M(  ), или подробнее
M( f1 ,... f k ; R1 ,..., Rl ). При этом набор натуральных чисел <n1, …, nk; m1, … ,ml>
называется типом алгебраической системы M(  ).
Если на алгебраической системе определены только операции, то она
называется алгеброй.
Если на алгебраической системе только отношения, то она называется моделью.
Пример 7.1.2: N(+,*;=,<) – алгебраическая система;
Пример 7.1.3: N(+,*) – алгебра;
Пример 7.1.4: N(+,<) – модель.
Пример 7.1.5: Алгебрами являются полугруппы, группы, кольца, поля и т.д.
В математической логике особую роль играют так называемые булевы алгебры.
Определение 7.1.6: Булевой алгеброй называется множество B с двумя
бинарными операциями «  », «  », и одной унарной операцией «’» и двумя
нуль-арными операциями (т.е. выделенными элементами) 0, 1,
удовлетворяющими условиям (при любых a, b, c  B ):
1. (a  b)  c  a  (b  c) ,
2. (a  b)  c  a  (b  c) ,
3. a  b  b  a ,
4. a  b  b  a ,
5. a  a  a ,
6. a  a  a ,
7. a  (a  b)  a ,
8. a  (a  b)  a ,
9. a  (b  c)  (a  b)  (a  c) ,
10. a  (b  c)  (a  b)  (a  c) ,
11. a  a  0 ,
12. a  a  1 .
Несложно показать, что из условий 1-12 следуют равенства:
a  0  0 , a 1  a , a  0  a , a  1  1 , (a  b)  a  b , (a  b)  a  b .
Например, выведем из условий 1-12 равенство a  0  0 :
a  0  a  (a  a)  (a  a)  a  a  a  0 .
Элементы 0 и 1 булевой алгебры B называют её нулём и единицей. Иногда их
обозначают в виде 0B и 1B.
Пример 7.1.7: Пусть 2M – обозначение множества всех подмножеств множества
M,  - бинарная операция пересечения множеств,  - бинарная операция
объединения множеств. Для A  M обозначим A’=M\A, A’ – дополнение
множества A. «’» - унарная операция,  и M – нуль-арные операции, играющие
роль 0 и 1. Тогда 2M(  ,  ,  ,M) - булева алгебра.
Пример 7.1.8: Пусть M – множество всех положительных делителей числа m,
равного произведению некоторых различных простых чисел. Определим
операции «  », «  » и «’» следующим образом: для любых a, b  M положим
m
a  b  НОД (a, b) , a  b  НОК (a, b) , a   .
a
Число 1 M играет роль нуль-арной операции 0.
Число m M играет роль нуль-арной операции 1.
Тогда M(  ,  ,’,1,m) - булева алгебра.
Определение 7.1.9: Пусть  - бинарное отношение на на M. Бинарное
отношение  на множестве M называется отношением частичного порядка
(или просто отношением порядка), если оно рефлексивно, транзитивно,
антисимметрично. Связное отношение частичного порядка называется
линейным порядком. Отношение порядка обозначается через «  ». Если a  b и
a  b , то пишут a  b .
Множество M с заданным на нём отношением частичного или линейного
порядка «  » называется, соответственно, частично или линейно
упорядоченным множеством.
В некоторых случаях при изучении частично упорядоченных множеств
используются их геометрические изображения – диаграммы. При построении
диаграмм частично упорядоченного множества M(  ) различные элементы из M
отождествляются с различными точками плоскости так, что:
1. точка a лежит левее (или ниже) точки b если a  b ;
2. точка a соединяется отрезком с отличной от неё тачкой b , если a  b и
не существует точки c , отличной от a, b, удовлетворяющей условию
a  c  b (в этом случае говорят, что b непосредственно следует за a или
a непосредственно предшествует b).
Пример 7.1.10: M = 2{1,2,3}
Положим для любых A,B  M, A  B  A  B .
Тогда диаграмма для M(  ) представляется следующим рисунком:
{1,2,3}
{2,3}
{1,2}
{1,3}
{1}
{2}
{3}

Рисунок 7.1.11.
Пример 7.1.12: M={ 1, n }.
Положим a  b «натуральное число a»  «натурального числа b». Тогда
диаграмма для M(  ) имеет следующий вид:
1
2
3
n-1
n
Рисунок 7.1.13.
Пример 7.1.14: M={1,2,3,4,5,6}
Положим a  b  a | b для любых a, b  M. Тогда диаграмма для M(  ) имеет
следующий вид:
4
6
3
5
2
1
Рисунок 7.1.15.
Интересно отметить связь булевых алгебр с частично упорядоченными
множествами.
Пусть B – произвольная булева алгебра. Для произвольных элементов a, b  B
положим
a  b  a  b=b.
Из условий 6.4.2 следует, соответственно, что так определённое отношение «  »
на B рефлексивно, антисимметрично и транзитивно. В итоге имеем частично
упорядоченное множество B(  ). Диаграмма для B(  ) называется диаграммой
булевой алгебры B.
Таким образом на рисунке 7.1.11 изображена диаграмма булевой алгебры всех
надмножеств множества {1,2,3}.
7.2 Изоморфизм алгебраических систем.
В математике при изучении алгебраических систем их обычно классифицируют
по темам и по свойствам. Так получаются классы полугрупп, групп, колец,
полей, булевых алгебр и т.д. В каждом таком классе алгебраические системы
изучаются с точностью до изоморфизма.
Определение 7.2.1: Алгебраические системы A, B одной и той же сигнатуры
  { f1 ,... f k ; R1 ,..., Rl } типа <n1, …, nk; m1, … ,ml> называются изоморфными,
если существует биективное отображение  :A  B, такое, что
1. для любой операции f i   и любых элементов a1 ,..., ani  A выполняется
равенство:  ( f i (a1 ,..., ani ))  f i ( (a1 ),...,  (ani )) ;
2. для любого отношения R j   и любых элементов a1 ,..., ani  A:
R j (a1 ,..., am j )  R j ( (a1 ),...,  (am j ))
При этом само отображение называется изоморфизмом системы A на систему
B.
Пример 7.2.2: Пусть B1 – булева алгебра всех подмножеств множества M={a1 …
an},
B2 – булева алгебра всех делителей числа m = p1 p2 … pn, где p1 p2 … pn –
различные простые числа.
Определим отображение  :B1  B2 положив  ({ai1 ,..., ai1 })  Pi1  ...  Pik и
 ()  1 .
Легко видеть, что  (0 B1 )   ()  1  0 B2 ,  (1B1 )   ( M )  1B2 ;  ( A)   ( A) , а
также  ( A  B)   ( A)   ( A) ,  ( A  B)   ( A)   ( A) ,
для любых подмножеств A, B множества M. Это и означает, что есть
изоморфизм булевой алгебры B1 на булеву алгебру B2.
Замечание 7.2.3: Легко видеть, что отношение изоморфизма является
отношением эквивалентности на любом множестве алгебраических систем
одной сигнатуры и потому все такие системы разбиваются на классы
изоморфных систем. Из определения 7.2.1 видно, что изоморфные
алгебраические системы сигнатуры  с точки зрения свойств операций и
отношений отличаются лишь обозначениями элементов. Отождествив в
системах из определения 7.2.1 элементы a и  (a), мы получим одну и ту же
алгебраическую систему. Тем самым достигается существенная экономия сил и
времени при изучении всего многообразия алгебраических систем.
Замечание 7.2.4: Понятие изоморфизма естественным образом
распространяется на алгебраические системы различных, но однотипных
сигнатур. При этом необходимо только предварительно установить между
операциями (а также между отношениями) систем взаимно однозначное
соответствие, сохраняющее арности. Так, если операции fi соответствует
~
операция f i , то условие 1 определения 7.2.1 запишется в виде:
~
 ( f i (a1 ,..., ani ))  f i ( (a1 ),...,  (ani )) .
В частности, если fi – бинарная операция «  », а f – бинарная «  », то последнее
равенство будет иметь вид:
 (a1  a2 )   (a1 )   (a2 ) .
Пример 7.2.5: Рассмотрим алгебры R+(  ) и R(+), где R+ – множество всех
положительных действительных чисел; R – множество всех действительных
чисел.
Положим  ( x)  log a x , для любого x  R+,
где a – некоторое положительное число, a  1. Тогда условие 1 определения
7.2.1 гарантируется в этом случае известным свойством логарифмов:
log a ( x  y)  log a x  log a y .
Замечание 7.2.6: Этот пример 7.2.5 показывает, что в некоторых случаях
переход к изоморфной алгебре позволяет существенно упростить вычисления. В
этом проявляется ещё одна положительная роль понятия изоморфизма.
Download