Булевы функции и их применение. Курс лекций
.pdf
Тогда геометрическое задание будет иметь следующий вид
(рис. 1.1).
Определение. Графическое задание б.ф. реализуется неориентированным графом Гf со множеством вершин If, в котором ребрами соединены пары соседних наборов.
Граф Гf можно получить из геометрического задания отбрасыванием всех вершин из множества Vn\If и инцидентных им ребер.
Рис. 1.1. Геометрическое задание б.ф.
f (x1, x2, x3) =x1 x2x3
Пример. Для б.ф. f (x1, x2, x3) из предыдущего при-
мера графическое задание имеет следующий вид
(рис. 1.2).
1.4.Реализация булевых функций формулами
Рис. 1.2. Графическое задание б.ф. f (x1, x2, x3) = x1 x2x3
Используя элементарные б.ф., можно строить формулы. Определим их индуктивно. Для этого рассмотрим подмножество множества всех б.ф. P P2.
Определение. Функция f (x1, x2,…, xn) P называется формулой
над P. Если f0 (x1, x2,…, xm) P и f1, f2,…, fm – либо формулы над P, либо символы переменных, то выражение f0 (f1, f2,…, fm) также
называется формулой над P.
Определение. Подформулы формулы U – формулы, которые использовались для построения формулы U.
– 11 –
Определение. С использованием аналогичной индукции можно показать, что каждой формуле U над P однозначно ставится в соответствие б.ф. из P2, при этом говорят, что формула U реализует функцию f.
Определение. Функция f, соответствующая формуле U, называ-
ется суперпозицией функций из P.
Если формула U реализует суперпозицию функций f1, f2,…, fs из P, то символически это записывается так: U = C [f1, f2,…, fs].
Определение. Формулы называются эквивалентными, если реа-
лизуемые ими функции равны.
Если в формуле U заменить некоторую подформулу эквивалентной ей формулой, то вновь полученная формула будет эквивалентна исходной формуле U.
Определение. Функция f (x1, x2,…, xn), равная f (x1, x2,..., xn ),
называется двойственной к функции f (x1, x2,…, xn).
Из определения вытекает, что таблица f (x1, x2,…, xn) получается из таблицы f (x1, x2,…, xn) инвертированием столбца значений функции и переворачиванием его, и, следовательно, ( f ) = f .
Определение. Для формул справедлив принцип двойственно-
сти, состоящий в том, что если формула U = C [f1, f2,…, fs] реализует функцию f (x1, x2,…, xn), то формула U* = C [f1*, f2*,…, fs*] называ-
ется двойственной к U и реализует функцию f (x1, x2,…, xn).
Для формул над множеством {0, 1, x, x1 x2, x1 x2} принцип
двойственности формулируется так: для получения формулы U*, двойственной к формуле U, нужно в формуле U выполнить взаимные замены 0 ↔ 1, ↔ . При этом нужно сохранять соотвествующий порядок действий.
Пример. |
Пусть U = x1 x2. Тогда по принципу двойственности |
|
U* = x1 x2. Проверим по определению двойственной функции: |
||
U * = |
|
=(x1 1) (x2 1) 1= x1 x2 x1 x2 = x1 x2 . |
x1 x2 |
||
Пример. |
Пусть U = x1 x2 x1 x2. Тогда по принципу двой- |
|
ственности |
U * =(x1 x2 ) (x1 x2 ).. Проверим по определению |
|
двойственной функции:
– 12 –
U * = x1 x2 x1 x2 = ((x1 x2 x1 x2 1) x1 x2 ) 1= x1 x2 .
Преобразуем выражение для U*, полученное по принципу двойственности:
U * = (x1 x2 x1x2 ) ((x1 1) (x2 1)) = = (x1 x2 x1x2 ) (x1 x2 1) = x1 x2.
Определение. Если f (x1, x2,…, xn) = f*(x1, x2,…, xn), то f называ-
ется самодвойственной функцией.
– 13 –
Лекция 2. Нормальные формы булевых функций
Введение. В данной лекции будут рассматриваться нормальные формы б.ф. (ДНФ и КНФ), будет сформулирована и доказана теорема о разложении б.ф. по переменным и следствия из нее. Приводится выражение б.ф. через конъюнкцию, дизъюнкцию и отрицание. Описываются способы построения дизъюнктивных и конъюнктивных нормальных форм. Формулируется и доказывается теорема о разложении б.ф. в виде многочлена Жегалкина, приводятся различные способы построения многочлена Жегалкина и действительного многочлена б.ф.
Ключевые слова: б.ф.; элементарная конъюнкция; элементарная дизъюнкция; ранг; ДНФ; СДНФ; КНФ; СКНФ; многочлен Жегалкина; действительный многочлен.
2.1. Дизъюнктивная нормальная форма булевой функции
Далее будем использовать следующее обозначение:
xσ = x, если σ = 1;x, если σ = 0.
Очевидно, что xσ = 1 тогда и только тогда, когда ( ) x = σ,
σ {0, 1}.
Определение. Элементарной конъюнкцией называется формула вида xiσ11 ... xiσk k , где все переменные различны.
Определение. Рангом элементарной конъюнкции называется число входящих в нее переменных.
Свойство элементарной конъюнкции: элементарная конъюнкция
xiσ11 ... xiσk k = 1 тогда и только тогда, когда ( ) xi j |
= σ j , j = |
1,k |
. |
Определение. Дизъюнктивной нормальной |
формой (ДНФ) |
||
называется формула вида xiσ11 ... xiσk k , где дизъюнкция берется по некоторым непустым наборам (i1, i2,…, ik) {1, 2,…, n}, и (σ1,…,
σk) Vk, k = 1,n.
– 14 –
Очевидно, что ДНФ реализует некоторую б.ф. Из следующей теоремы следует, что любую б.ф. можно задать через ДНФ.
Теорема. О разложении функции по переменным.
Для каждой б.ф. f (x1, x2,…, xn) при любом m =1,n справедливо представление:
f (x1,x2,…,xn ) =
|
|
|
σ1 |
σm |
(2.1) |
= |
|
x1 |
... xm f (σ1,...,σm ,xm+1,...,xn ). |
||
(σ1 |
,...,σm ) Vm |
|
|||
|
|
|
|
Доказательство. Покажем, что левая и правая части равенства (2.1) принимают равные значения при произвольном наборе значений переменных (α1, α2,…, αn).
Левая часть равна f (α1, α2,…, αn). Правая часть равна
|
σ1 |
σm |
f (σ1,...,σm ,αm+1,...,αn ). |
(σ1,...,σm ) Vm |
α1 |
... αm |
|
|
|
|
Так как αiσi = 1 тогда и только тогда, когда ( ) αi = σi , i = 1,m,
то слагаемые, соответствующие наборам (σ1,…, σm) ≠ (α1,…, αm), равны 0, а слагаемое, соответствующее набору (σ1,…, σm) = (α1,…, αm), равно f (α1, α2,…, αn). Что и требовалось доказать.
Представление |
б.ф. (1) называется |
разложением функции |
f (x1, x2,…, xn) по |
переменным x1,…, xm. |
Функция f (σ1,...,σm , |
xm+1,..., xn ) , записанная в правой части равенства (2.1), называется подфункцией функции f (x1, x2,…, xn), соответствующей фиксации переменных x1, x2,…, xm константами σ1, σ2,…, σm соответственно.
Следствие 1. |
Разложение б.ф. по одной переменной: |
|
|||
f (x1,…, xn–1, xn) = xn f (x1,…, xn–1, 1) xn f (x1,…, xn–1, 0). |
|
||||
Следствие 2. |
Разложение б.ф. по всем переменным: |
|
|||
|
|
σ1 |
σn |
|
|
f (x1,x2,…,xn ) = (σ1,...,σn ) Vn x1 |
... xn |
f (σ1,...,σn ). |
(2.2) |
||
– 15 –
Если функция f не равна константе 0,
f (x1,x2,…,xn ) = (σ1,...,σn ) Vn , f (σ1
Определение. Представление (2.3)
ДНФ (СДНФ) функции f (x1, x2,…, xn).
то (2.2) можно переписать:
x1σ1 ... xnσn . (2.3)
,...,σn ) = 1
называется совершенной
Следствие 3. О представимости б.ф. через отрицание, конъ-
юнкцию и дизъюнкции. Каждая б.ф. представима в виде формулы через отрицание, конъюнкцию и дизъюнкцию.
Доказательство. Для б.ф. f (x1, x2,…, xn), отличной от константы 0, утверждение вытекает из (3). Для f ≡ 0 верно f = x x. Что и тре-
бовалось доказать.
Построение СДНФ функции. СДНФ б.ф. легко построить по ее табличному заданию. Для этого для каждого набора аргументов (α1,…, αn), на котором функция принимает единичное значение, строится элементарная конъюнкция ранга n по правилу:
(α1,…, αn) → x1α1 ... xnαn .
Затем берется дизъюнкция всех построенных элементарных конъюнкций.
Пример. Пусть б.ф. f (x1, x2) задана табл. 2.1.
Построим для нее СДНФ: 00 → x10 x20 = x1 x2 ,
10 → x11 x20 = x1 x2 ,
11 → x11 x12 = x1 x2 .
Поэтому
f (x1, x2) = x1 x2 x1 x2 x1 x2 .
Таблица 2.1 Табличное задание б.ф. f (x1, x2)
x1 |
x2 |
f (x1, x2) |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
Заметим, что СДНФ является частным случаем ДНФ. В ней все элементарные конъюнкции имеют ранг n. Отличительной особенностью СДНФ является то, что она однозначно определяется по функции f с точностью до перестановок. Действительно, все элементарные конъюнкции в СДНФ находятся во взаимно-
– 16 –
однозначном соответствии с векторами (α1,…, αn) из области истинности функции.
В отличие от СДНФ, ДНФ не однозначно соответствует функции. Так функция из предыдущего примера может быть записана в виде следующих ДНФ:
F (x1, x2) = x1 x2 = x2 x1 x2 = x1 x2 x1 .
2.2. Конъюнктивная нормальная форма булевой функции
Аналогично ДНФ вводятся конъюнктивные нормальные формы
(КНФ).
Определение. Элементарной дизъюнкцией называется формула вида xiσ11 ... xiσk k ,, где все переменные различны.
Определение. Конъюнктивной нормальной формой (КНФ)
называется формула вида (xiσ11 ... xiσk k ), где конъюнкция берется по некоторым непустым наборам (i1, i2,…, ik) {1, 2,…, n}, и
(σ1,…, σk) Vk, k =1,n .
Покажем, что любую б.ф. можно представить формулой типа «произведение логических сумм», в то время как СДНФ есть формула типа «сумма логических произведений».
Для f ≡ 1 верно f = x x. |
|
|
|
||
Пусть f отлична от константы 1. |
Тогда |
f * отлична от константы |
|||
0. Выпишем СДНФ б.ф. f *: |
|
|
|
||
|
|
|
σ1 |
σn |
|
f * (x1, x2,…, xn) = |
(σ1 |
,...,σn ) Vn , |
f *(σ1 |
x1 |
... xn . |
|
,...,σn ) =1 |
|
|||
Воспользуемся тождеством для двойственных формул, т.е. вы-
полним замены 0 ↔ 1, ↔ : |
|
|
||
f ** (x1, x2,…, xn) = |
|
|
xσ1 |
... xσn |
(σ1 |
,...,σn ) Vn , |
1 |
n . |
|
|
f *(σ1,...,σn ) =1 |
|
||
Левая часть этого равенства есть f (x1, x2,…, xn). Правая часть равна
– 17 –
|
|
|
|
|
σ1 |
|
|
σn |
|
|
|
||||
(σ1,...,σn ) Vn , |
|
f (σ1,...,σn ) = 0 |
x1 |
... xn = |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||
= (переобозначим σi : заменим σi |
на σi) = |
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
= |
|
|
|
|
σ1 |
σn |
|
|
|
||||||
|
|
|
|
x1 |
... xn . |
|
|
|
|||||||
|
(σ1,...,σn ) Vn , f (σ1,...,σn ) = 0 |
|
|
|
|
|
|
|
|
|
|
||||
Таким образом, получаем, что |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
σ1 |
σn |
||||||
f (x1,x2,…,xn ) |
= |
(σ1 |
,...,σn ) Vn , |
f (σ1 |
|
|
x1 |
... xn . (2.4) |
|||||||
|
|
|
,...,σn )= 0 |
|
|
|
|||||||||
Определение. Правая часть равенства (2.4) называется совер-
шенной КНФ (СКНФ) б.ф. f (x1, x2,…, xn).
Получение СКНФ булевой функции. СКНФ б.ф. легко стро-
ится по ее табличному заданию. Для этого для каждого набора аргументов (α1,…, αn), на котором функция принимает нулевое значение, строится элементарная дизъюнкция ранга n по правилу
(α1,…, αn) → x1α1 ... xnαn .
Затем берется конъюнкция всех построенных элементарных дизъюнкций.
Пример. Пусть б.ф. f (x1, x2) задана табл. 2.2.
Построим для нее СКНФ: 01 → x11 x20 = x1 x2 , 11 → x10 x20 = x1 x2 .
Поэтому
f (x1, x2) = (x1 x2 ) (x1 x2 ) .
Задание б.ф. с помощью
Таблица 2.2 Табличное задание б.ф. f (x1, x2)
x1 |
x2 |
f (x1, x2) |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
СДНФ и СКНФ нередко менее громоздко, чем табличное задание. Однако в ряде случаев удобно
пользоваться не СДНФ и СКНФ, а более компактными формулами, которые могут быть получены из них.
– 18 –
2.3. Многочлен Жегалкина и действительный многочлен
Определение. Многочленом Жегалкина (приведенным многочленом, алгебраической нормальной формой (АНФ)) называется представление б.ф. формулой вида
f (x1, x2,…, xn) = |
|
|
αi1...is xi1 ... xis |
= |
|
||
|
|
|
{i1,...,is } {1,2,...,n} |
|
|
||
= α0 |
n |
αi xi |
|
αij xi xj ... α1...n |
x1 ... xn . |
||
|
i=1 |
|
|
{i, j},1≤i< j≤n |
|
|
|
Определение. |
Говорят, |
что конъюнкция |
xi1 ... xis входит (не |
||||
входит) |
в многочлен Жегалкина б.ф. f (x1, x2,…, xn), |
если αi1...is =1 |
|||||
(αi1...is =0).
Определение. Конъюнкции, входящие в многочлен Жегалкина,
называются одночленами.
Определение. Степенью одночлена xi1 ... xis (или рангом конъюнкции xi1 ... xis ) называется число s составляющих его пе-
ременных.
Определение. Степень нелинейности (порядок) многочлена Жегалкина – максимальная из степеней одночленов, входящих в многочлен.
Определение. Степень нелинейности б.ф. – степень нелиней-
ности ее многочлена Жегалкина.
Обозначение: deg f (x1, x2,…, xn), или кратко deg f, если понятно, от каких переменных зависит б.ф.
Теорема. О разложении б.ф. в виде многочлена Жегалкина.
Для каждой б.ф. существует единственный многочлен Жегалкина.
Доказательство. Покажем, что по таблице б.ф. f (x1, x2,…, xn) однозначно определяются коэффициенты многочлена Жегалкина α0, α1, α2,…, α1…n. Для этого воспользуемся методом неопределенных коэффициентов. Будем последовательно вычислять значения искомого многочлена на наборе из одних нулей, затем на наборе с одной единицей, затем – с двумя и т.д. В результате получится следующая система:
– 19 –
f (0,0,...,0,0) = α0; |
|
||
|
= α0 |
α1; |
|
f (1,0,...,0,0) |
|
||
|
= α0 |
α2; |
|
f (0,1,...,0,0) |
|
||
... |
|
|
|
|
= α0 |
αn ; |
|
f (0,0,...,0,1) |
|
||
|
= α0 |
α1 α2 α12; |
|
f (1,1,...,0,0) |
|||
... |
|
|
|
|
|
n |
|
f (1,1,...,1,1) = α0 αi αij ... α1...n . |
|||
|
|
i=1 |
{i, j} |
|
|
||
Из 1-го уравнения находим α0, из 2-го – α1 и т.д., из
(n + 1)-го – αn , из (n + 2)-го – α12 и т.д., из последнего – α1…n . Что и требовалось доказать.
Получение многочлена Жегалкина из ДНФ. Если б.ф. задана ДНФ, то ее многочлен Жегалкина можно вычислить, выразив операции отрицания и дизъюнкции через операции конъюнкции и сложения по модулю 2:
x = x 1,
x1 x2 = x1 x2 x1 x2.
В верности данных равенств можно убедиться непосредственной проверкой.
Определение. Б.ф. называется линейной по переменной xi, если она представляется в виде
f (x1, x2,…, xn) = xi g (x1, x2,…, xi-1, xi+1,…, xn).
Также б.ф. можно задавать многочленами над полем действительных чисел. Непосредственно проверкой можно убедиться в том, что
x1 x2 = x1 x2,
x1 x2 = x1 + x2 – x1 x2,
x1 x2 = x1 + x2 – 2 x1 x2, x = 1− x .
Так как каждую б.ф. можно задать своим многочленом Жегалкина, СДНФ или СКНФ, то, заменив все используемые в этих фор-
– 20 –
