Вы находитесь на странице: 1из 10

Нормальные формы булевых функций (v. 1.

2)
Булеву функцию можно представить в виде формул многими разными способами:

f ( x1, x2 )  x1  x2  x1  x2  x1  x2  ...
Укажем несколько стандартных форм представления булевой функции.

Алгебраическая степень и булева степень


Алгебраическая степень:

1,   0
x  
 x,   1
Булева степень:

x,   0
x( )  
 x,   1
Свойства булевой степени

 0( )   ,
 1( )   ,
  ( )  1,
( )
  1    

Разложение функции по переменным


Теорема (О разложении булевой функции по переменным.
Для каждой булевой функции f ( x1, x2 ,..., xn ) при любом m, 1  m  n, справедливо
представление

f  x1,..., xm , xm1,..., xn  

 x1
( 1 ,..., m )
1  ...  x m  f (
m 1,...,  m , xm 1,..., xn).

Доказательство. Рассмотрим, чему будут равны выражения в левой и правой


части равенства при подстановке вместо переменных произвольных значений
x1  1, x2   2 , ..., xn   n .
После подстановки x1  1, x2   2 , ..., xn   n слева будем иметь f (1, 2 ,..., n ).

В то же время выражение справа будет равно


 1
( 1 ,..., m )
1  ...    m  f (
m 1,..., m , m 1,..., n).

1
Поскольку  ( )  1     , единственным ненулевым слагаемым будет слагаемое,
соответствующее набору 1  1, ...,  m   m :

1
1  ...   m  f ( ,..., , ,..., )  f ( , ,..., ).
m 1 m m 1 n 1 2 n

Таким образом, выражения в левой и правой частях совпадают при любых значениях
переменных x1, x2 ,..., xn , т.е. они равны как функции.

Замечание. Представление функции в виде

f  x1,..., xm , xm1,..., xn  


( 1 ,..., m )
x1
1  ...  x m  f (
m 1,...,  m , xm 1,..., xn)

называется разложением булевой функции по переменным x1, x2 ,..., xm .

При этом переменные, по которым происходит разложение функции, не обязательно


выбирать подряд и в числе первых.

Пример. Разложим функцию f ( x1, x2 ,..., x5 ) по переменным x2 , x4 :

f  x1,..., x5   
 
x
  x  f (x , , x , , x ) 
( 2, 4 )
2
2
4
4
1 2 3 4 5

 x2 x4 f (x1,0, x3 ,0, x5)  x2 x4 f (x1,0, x3 ,1, x5)  x2 x4 f (x1,1, x3 ,0, x5)  x2 x4 f (x1,1, x3,1, x5)

слагаемое, слагаемое,
соответствующее соответствующее
(σ2 , σ4) = (0,0) (σ2 , σ4) = (0,1)

Следствие 1. Разложение булевой функции по одной переменной  m  1 :

f  x1,..., xn   

x
n
  f (x ,..., x
n
n
1 n 1, n)  xn f (x1,..., xn 1,0)  xn f (x1,..., xn 1,1).

Следствие 2. Разложение булевой функции по всем переменной  m  n  :

f  x1, x2 ,..., xn  


( 1 ,..., n )
x1
1  ...  x n  f (
n 1,...,  n)  
(1 ,..., n)
x1
1  ...  x n .
n
f (1,..., n) 1

СДНФ – совершненная дизъюнктивная


2
нормальная форма
Пример. СДНФ функции, заданной таблично:
f ( x1, x2 , x3 )  x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3
x1 x2 x3 f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 1

1 0 0 1

1 0 1 0

1 1 0 0

1 1 1 1

Дизъюнктивные нормальные формы

Пусть даны булевы переменные x1, x2 ,..., xn . Выражение вида xi


 i1   ...  x i 
k
1 ik
называется элементарной конъюнкцией ранга k (k  n).

Дизъюнктивной нормальной формой (ДНФ) булевой функции называется реализующая


формула, являющаяся дизъюнкцией элементарных конъюнкций. В отличии от СДНФ,
дизъюнктивная нормальная форма функции определяется неоднозначно, т.е. может
иметь несколько реализующих ее ДНФ.

Пример. Различные
f ( x1, x2 , x3 )  x1  x1x2 ДНФ
 x2  x1x2
 x1x3  x1x3  x1x2  x1x2 x3
 x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3

СДНФ

3
Конъюнктивные нормальные формы

Пусть даны булевы переменные x1, x2 ,..., xn . Выражение вида xi


 i1   ...  x i 
k
1 ik
называется элементарной дизъюнкцией ранга k (k  n).

Конъюнктивной нормальной формой (КНФ) булевой функции называется реализующая


формула, являющаяся конъюнкцией элементарных дизъюнкций. Аналогично ДНФ,
конъюнктивная нормальная форма функции определяется неоднозначно, т.е. может
иметь несколько реализующих ее КНФ:

f ( x1, x2 , x3 )   x1  x2 
  x1  x2  x3    x1  x2  x3 

Рассмотрим f ( x1, x2 ,..., xn )  1.

Тогда двойственная функция f ( x1, x2 ,..., xn )  0 и для нее можно получить СДНФ:
*

f *  x1, x2 ,..., xn   
(1 ,..., n)
x1
1  ...  x n .
n
*
f (1,..., n)1

 f *
*
В силу свойств двойственной функции  f . Тогда

*
 
 
f ( x1, x2 ,..., xn )  f *
* 
( x1, x2 ,..., xn )     1 

   
x1  ...  xn n   
 * 1 n  
( ,..., )

 1 n
f ( ,..., ) 1 

 
(1 ,..., n)
 1   n  
 x1  ...  xn  
 

(1 ,..., n)
 1   n  
 x1  ...  xn  
 
*
f (1,..., n) 1 f (1,..., n) 0

 
(1 ,..., n)
 1   n  
 x1  ...  xn  .
 
f (1 ,..., n) 0
СКНФ – совершненная
конъюнктивная
нормальная форма

4
Пример. СКНФ функции, заданной таблично: f ( x1, x2 , x3 ) 

  x1  x2  x3    x1  x2  x3    x1  x2  x3    x1  x2  x3 
x1 x2 x3 f

0 0 0 0

0 0 1 1

0 1 0 0

0 1 1 1

1 0 0 1

1 0 1 0

1 1 0 0

1 1 1 1

Полнота системы булевых функций


Вопрос: если задано множество B  P2 , любую ли булеву функцию можно выразить
формулами над этим множеством, а если нет, то какие булевы функции выражаются
формулами над ?
Система (множество) булевых функций B  P2 называется функционально полной, если
любая булева функция f  P2 может быть выражены в виде формулы над .

Примеры.
НЕ функционально полная система
B   0,  1
B1  P2

B2  x1  x2 , x1  x2 , x  ФУНКЦИОНАЛЬНО ПОЛНЫЕ СИСТЕМЫ

Теорема. Пусть F   f1, f 2 ,... и G   g1, g2 ,... – системы булевых функций, при
этом – функционально полная система и каждая ее функция может быть выражена
формулой над множеством . Тогда – функционально полная система.

5
Доказательство. Пусть h  P2 – произвольная булева функция. В силу функциональной
полноты системы функция выражается формулой над : h  C ( f1, f 2 ,...).

В силу второго условия теоремы, f1  C1( g1, g2 ,...), f 2  C2 ( g1, g2 ,...), ... . Подставляя
формулы для fi в формулу для , получаем,

h  C ( f1, f 2 ,...)  C (C1( g1, g2 ,...), C2 ( g1, g2 ,...), ...),


т.е. произвольная функция h  P2 может быть выражена формулой над , откуда следует,
что – функционально полная система.

Применяя эту теорему, можно расширить список функционально полных систем:

B3  x1  x2 , x
F  B2   x1  x2 , x1  x2 , x 
G  B3   x1  x2 , x 
x  x ; x1  x2  x1  x2 ;
x1  x2   x1  x2 

B4  x1  x2 , x F  B2   x1  x2 , x1  x2 , x 
G  B4   x1  x2 , x 
x  x ; x1  x2  x1  x2 ;
x1  x2   x1  x2 

B5  x1 | x2
F  B3   x1  x2 , x ; G  B5   x1 | x2
x  x | x; x1  x2   x1 | x2    x1 | x2  |  x1 | x2 

B6   x1  x2 Доказать функциональную полноту

F  B3   x1  x2 , x 
B7  1, x1  x2 , x1  x2
G  B7  1, x1  x2 , x1  x2 
x  x  1; x1  x2  x1  x2 ;

6
Алгебраическая нормальная форма
После раскрытия скобок и приведения подобных членов любая формула над множеством
B7  1, x1  x2 , x1  x2 превращается в многочлен по (mod 2). Заметим при этом, что


 a 2  a  a  a,
a : 
a  a  0,

поэтому в многочленах по (mod 2) переменные могут фигурировать только в 1-й степени
(поскольку xi  xi  xi ), а одночлены – только с коэффициентом 1 (поскольку

 xi  xi
1 2
  
 xik  xi1  xi2  
 xik  0 ).

Пример. Рассмотрим формулу над множеством B7  1, x1  x2 , x1  x2 :


 ( x1  x2 )( x1  x3 )  x2  ( x2  x3 )    ( x2  x3 )  1  x1  x1x2  x1x3  x2 x3.

Пусть даны булевы переменные x1, x2 ,..., xn . Выражение вида xi  ...  xi называется
1 k

одночленом степени .
  
Общая формула для одночлена от переменных имеет вид x1 1  x2 2  ...  xn n , i  2,

 1  2
при этом степень одночлена deg x1  x2  ...  xn
n
  w( , ,..., ).
1 2 n

n
Число одночленов от переменных равно 2 . Общая формула для многочлена от
переменных имеет вид

f  x1,..., xn   
( ,..., )
 
x1 1  ...  xn n  a( ,..., ) ,
1 n
1 n

n
2 слагаемых
при этом коэффициенты a( ,..., )  2 .
1 n

Теорема Жегалкина. Каждая булева функция f  x1,..., xn  единственным образом


представляется в виде

f  x1,..., xn   
( ,..., )
 
x1 1  ...  xn n  a( ,..., ) ,
1 n
1 n

где коэффициенты a( ,..., )  2 .


1 n

7
Доказательство. Поскольку система B7  1, x1  x2 , x1  x2 – функционально полна,
каждая функция может быть представлена в виде многочлена по . Поскольку число
2n
различных многочленов от переменных равно 2 и совпадает с числом всех булевых
функций от того же числа переменных получаем, что каждой булевой функции
соответствует единственный многочлен по .
Этот многочлен называется алгебраической нормальной формой (АНФ) булевой функции
или ее многочленом Жегалкина.

Получение алгебраической нормальной формы (АНФ) булевой функции .


1) Из СДНФ:
Заметим, что

a  1
a  b  a  b  
b  1
То есть логическая сумма двух выражений и их сумма по совпадают, если оба эти
выражения одновременно не могут равняться 1. Заметим, что в СДНФ каждое слагаемое
равно 1 на единственном наборе переменных и для разных слагаемых эти наборы различны.
Например, для функции f ( x1, x2 , x3 ) , СДНФ которой равна

f ( x1, x2 , x3 )  x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3 ,


это наборы (001), (011), (100), (101) и (111).
Тогда (и только в этом случае) мы имеем право заменить в формуле логические суммы на
суммы по :

f ( x1, x2 , x3 )  x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3 


 x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3.
Если теперь заменить инверсию каждой переменной на ее сумму с 1: ( xi  xi  1), мы
получаем представление нашей функции в виде формулы над B7  1, x1  x2 , x1  x2 .
После раскрытия скобок и приведения подобных членов, мы получаем представление нашей
функции в виде многочлена по , т.е. АНФ:

f ( x1, x2 , x3 )  x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3 


 x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3  x1x2 x3 
  x1  1 x2  1 x3   x1  1 x2 x3  x1  x2  1  x3  1  x1  x2  1 x3  x1x2 x3 
 x1  x3  x1x2  x1x3  x1x2 x3

АНФ – алгебраическая
8
нормальная форма
2) Решая систему линейных уравнений
Рассмотрим этот метод получения АНФ на примере той же функции от 3 переменных. АНФ
– это представление нашей функции в виде многочлена по . Общий вид многочлена
от 3 переменных:

f ( x1, x2 , x3 ) 
 a0  1  a1  x1  a2  x2  a3  x3  a12  x1x2  a13  x1x3  a23  x2 x3  a123  x1x2 x3
Наша задача – определить значения коэффициентов a0 , a1, , a123 таким образом, чтобы
полученный многочлен совпадал с нашей функцией, т.е. имел такую же таблицу значений,
что и наша функция.

x1 x2 x3 f
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 1
1 1 0 0
1 1 1 1

Из таблицы следует, что f (000)  0 . В то же время значение многочлена

a0 1  a1  x1  a2  x2  a3  x3  a12  x1x2  a13  x1x3  a23  x2 x3  a123  x1x2 x3


на наборе  x1  0, x2  0, x3  0 равно a0 . В результате мы получаем следующее
уравнение: a0  0 .

Далее, значение функции на наборе (001) равно f (001) 1. В то же время значение
многочлена

a0 1  a1  x1  a2  x2  a3  x3  a12  x1x2  a13  x1x3  a23  x2 x3  a123  x1x2 x3


на наборе  x1  0, x2  0, x3  1 равно a0  a3 . В результате мы получаем уравнение:
a0  a3  1.
Приравнивая теперь значения многочлена на всех возможных наборах переменных
соответствующим значениям нашей функции, получаем систему линейных уравнений по
относительно неизвестных значений коэффициентов a0 , a1, , a123 :

9
x1 x2 x3 f
0 0 0 0 a0  0

0 0 1 1 a0  a3  1

0 1 0 0 a0  a2  0

0 1 1 1 a0  a2  a3  a23  1

1 0 0 1 a0  a1  1

1 0 1 1 a0  a1  a3  a13  1

1 1 0 0 a0  a1  a2  a12  0

1 1 1 1 a0  a1  ...  a23  a123  1

Решая систему линейных уравнений по , получаем:

a0  0, a1  1, a2  0, a3  1, a12  1, a13  1, a23  0, a123  1

 f ( x1, x2 , x3 )  x1  x3  x1x2  x1x3  x1x2 x3

АНФ – алгебраическая
нормальная форма

10