Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекция - Булевы функции

.pdf
Скачиваний:
66
Добавлен:
06.06.2019
Размер:
572.81 Кб
Скачать

БУЛЕВЫ ФУНКЦИИ

Двоичная функция двоичного аргумента называется булевой

функцией.

y = f (x1, x2,…, xn), xi {0, 1}, y {0, 1}, i 1,n.

Система булевых функций задается следующим образом:

y1 f1(x1,...,xn ), yk fk (x1,...,xn ).

Будем говорить, что две функции равны, если их значения совпадают на любой комбинации значений переменных.

f (x1,…, xn) = g (x1,…, xn).

Различными считаются функции, не совпадающие хотя бы на одной комбинации переменных.

Число различных функций равно 22n .

Пусть n = 0, тогда 220 = 2, т. е. функция принимает значение 0 или 1. При n = 1, число различных функций равно 4.

х

 

 

функция

 

 

нуль

тождественна

отрицательна

единица

 

 

 

 

 

 

 

0

0

0

1

1

1

0

1

0

1

 

0

х

 

 

 

1

 

 

x,x', x

 

 

 

 

 

 

 

При n = 2, число различных функций равно 16.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Функции

 

 

 

 

 

 

 

 

 

 

х1

x2

 

f0

f1

f2

 

f3

 

f4

 

f5

f6

f7

 

 

f8

 

f9

 

f10

f11

f12

f13

f14

f15

 

0

0

 

0

0

0

 

0

 

 

0

 

0

0

0

 

 

1

 

1

 

1

 

1

1

1

1

1

 

0

1

 

0

0

0

 

0

 

 

1

 

1

1

1

 

 

0

 

0

 

0

 

0

1

1

1

1

 

1

0

 

0

0

1

 

1

 

 

0

 

0

1

1

 

 

0

 

0

 

1

 

1

0

0

1

1

 

1

1

 

0

1

0

 

1

 

 

0

 

1

0

1

 

 

0

 

1

 

0

 

1

0

1

0

1

 

 

Приведем эти булевы функции.

 

 

 

 

 

 

 

 

 

 

 

 

 

f0(x1, x2) = 0 – константа 0;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f1(x1, x2) = x1

x2 – конъюнкция;

 

 

 

 

 

 

 

 

 

 

 

 

 

f

(x , x ) = x

1

 

x

=

x x

 

= x

1

x

2

– левая коимпликация (читается

 

2

1

2

 

 

 

2

 

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

«не если x1, то x2»);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f3(x1, x2) = x1 x2 x1 x2 = x1;

 

 

 

 

 

 

 

 

 

 

 

 

 

f4(x1, x2) = x

 

x2 = x1

x2 =

 

x x

=

 

x x

;

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

1

 

2

 

 

1

2

 

 

 

 

 

правая коимпликация;

f5(x1, x2) = x1 x2 x1 x2 = x2;

f6(x1, x2) = x1 x2 x1 x2 = x1 x2 – сложение по модулю два, дизъюнкция с исключением;

f7(x1, x2) = x1 x2 – дизъюнкция;

f8(x1, x2) = x1 x2 = x1 x2 = x1x2 – функция Вебба, иногда данная функция определяется как стрелка Пирса f8(x1, x2)= x1x2;

f9(x1, x2) = x1 x2 = x1~ x2 – функция эквивалентности; f10(x1, x2) = x2 – отрицание;

f11(x1, x2) = x1 x2 x1 x2 x1 x2 = x2 x1 = x1x2 – правая импликация (читается «если x2, то x1»);

f12(x1, x2) = x1 – отрицание;

f13(x1, x2) = x1 x1 x2 x2 x1 x2 = x1 x2 = x1 x2 – левая импликация (читается «если x1, то x2»);

f14(x1, x2) = x1 x2 x1 x1 x1 = x2 x2 = x1| x2 – функция Шеффера;

f15(x1, x2) = 1 – константа 1.

Способы задания булевой функции

1. Табличный способ Область определения булевой функции – совокупность всевозможных

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

Естественным расположением наборов является расположение в порядке возрастания десятичного числа, соответствующего данному набору.

№ набора

х1

х2

х3

f (х1, х2, х3)

1

0

0

0

0

2

0

0

1

1

3

0

1

0

1

4

0

1

1

1

5

1

0

0

0

6

1

0

1

1

7

1

1

0

0

8

1

1

1

1

2. Представление вершинами n-мерного куба.

Множество значений вектора x = (x1, x2,…, xn) составляет булево пространство. Каждому значению вектора сопоставлен элемент пространства. Число компонент вектора определяет размерность пространства.

n = 0

 

 

 

n = 1

0

 

x1

 

 

 

1

 

 

 

x2

 

 

 

10

 

11

 

n = 2

 

 

 

 

 

 

 

 

00

01

 

x1

 

x3

 

 

 

 

 

 

110

 

 

100

 

101

111

 

 

 

 

n = 3

 

 

 

x2

 

 

 

 

 

 

 

010

011

 

000

 

 

 

 

 

 

 

 

 

001

 

x1

Расстояние между вершинами n-мерного куба есть число компонент, значениями которых эти вершины отличаются. Это расстояние называется расстоянием по Хемингу. Соседние вершины n-мерного куба различаются одной компонентой.

3. Задание булевой функции формулами.

Суперпозицией системы S = { 1(x1, x2, …, xk1), 2(x1, x2, …, xk2), …,

l(x1, x2, …, xkl)} называется любая функция f, полученная:

1)из j(x1, x2, …, xki) переименованием переменных, 1 S;

2)подстановкой вместо некоторых переменных функции a(x1, x2, …,

xka), функций j(x1, x2, …, xkj), a, j S;

3) с помощью многократного применения п. 1 и 2.

Пусть F = {f1, f2, …, fn} – множество булевых функций. Формулой над F называется выражение вида F[F] = (t1,…, tn), где F и ti, либо переменная, либо формула над F. Множество F называется базисом, функция называется главной (внешней) операцией (функцией), a ti называются подформулами.

Систему булевых функций будем называть функционально полной, если любая булева функция может быть представлена в виде суперпозиции функций этой системы. Функционально полная система называется базисом. Базис называется безизбыточным, если ни одну из функций базиса нельзя исключить так, чтобы оставшаяся система функций была функционально полной. Базис называется минимальным, если он содержит наименьшее из возможных число функций.

Система S называется полной в Pk, если любая функция f, f Pk представима в виде суперпозиции этой системы, и базисом, если теряется полнота S при удалении хотя бы одной функции, где Pk k– значная логика.

Существует 17 базисов, в каждом из которых нельзя вычеркнуть ни одну функцию без потери полноты:

{0 } – базис Вебба;

{| } – базис Шеффера;

{, ~ };

{ , 0} – импликативный базис;

{ , }; { , –} – коимпликативный базис;

{ , }; {, ˉ} – импликативный базис;

{&, ˉ} – конъюнктивный базис Буля; {, ˉ} – дизъюнктивный базис Буля; { , 1} – коимпликативный базис;

{~, &, 0};

{~, , 0}; { , &, ~}; { , , ~};

{ , &, 1} – базис Жегалкина;

{ , , 1}.

Техническая реализация базисных функций может быть основана на использовании различных физических явлений, например, импликация и коимпликация может быть основана на использовании магнитных явлений, а функции Шеффера и Вебба – на использовании явлений в полупроводниках.

Равносильные преобразования формул

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

Теория булевых функций занимается изучением специальных функций и равносильных преобразований, приводящих к этим функциям.

Основные свойства элементарных формул (основные равносильности):

1)закон идемпотентности:

а а = а, а а = а;

2)закон коммутативности:

a b = b a, a b = b a;

3)закон ассоциативности: a (b c) = (a b) c, a (b c) = (a b) c;

4)закон дистрибутивности: a (b c) = a b a c,

a (b c) = (a b) (a c);

5)закон двойного отрицания:

aa ;

6)закон де Моргана:

ab a b,a b a b;

7)законы склеивания:

a b a b = а, (a b) (a b ) = а;

8)законы поглощения:

a a b = а, a (а b) = а;

9)законы Порецкого:

a a b = а b, a ( a b) = а b;

10)законы, определяющие действия с константами 0 или 1:

a = а,

a 0 = 0,

a 1 = 1,

a 1 = а, a a = 1,

a a = 0.

Правило подстановки: если в равносильных формулах вместо всех вхождений некоторой переменной х подставить одну и ту же формулу, то получатся равносильные формулы.

Правило замены: если в формуле заменить некоторую под-формулу на равносильную, то получится равносильная формула.

Нормальные формулы. Совершенные нормальные формулы

Обозначим хо = x , х1 = х,

x x, 1;x, 0.

Любую конъюнкцию ранга n можно представить в виде: x1 1 x22 ...xnn

Элементарной конъюнкцией называется конъюнкция переменных, некоторые из которых могут быть взяты со знаком отрицания, причем переменная в конъюнкции не должна встречаться более одного раза.

Или: элементарной конъюнкцией называется выражение вида

x1 1 x22 ...xnn .

То есть элементарная конъюнкция есть логическое произведение переменных, взятых в некоторой степени δ, в которой ни одна переменная не употребляется два раза.

Число переменных в конъюнкции или дизъюнкции назовем ее рангом. Дизъюнкция различных элементарных конъюнкций называется

дизъюнктивной нормальной формой (ДНФ).

Конъюнкция различных элементарных дизъюнкций называется

конъюнктивной нормальной формой (КНФ).

Число конъюнкций в ДНФ называется длиной ДНФ.

Если мы возьмем любую формулу из символов a, b, c,…, x, y, z, , , ¬, →, ~, , (, ), то можно ее заменить равносильной ДНФ.

ab = a b, a ~ b = a b a b, a b = ab a b.

Пример.

(а b ) → (с d) = a b с d = a b c d;

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

совершенной ДНФ (СДНФ), а ее члены констатуэнтами единицы. СДНФ любой булевой функции единственна с точностью до порядка следования членов и литералов (чего нельзя сказать о ДНФ) и является, как говорят,

канонической формой.

Пример.

Пусть задана функция (a b) → (c ~ a). Построим таблицу истинности.

a

b

c

a b

c ~ a

(a b) → (c ~ a)

0

0

0

0

1

1

0

0

1

0

0

1

0

1

0

1

1

1

0

1

1

1

0

0

1

0

0

1

0

0

1

0

1

1

1

1

1

1

0

0

0

1

1

1

1

0

1

1

Построим СДНФ.

abc abc abc abc abc abc .

КНФ так же удобна для представления нулей булевой функции, как ДНФ для представления единиц.

СКНФ для предыдущего примера запишется

(a b c)(a b c ).

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

5.4. Разложение Шеннона. Декомпозиция булевых функций

Рассмотрим разложение булевой функции f (x1, x2,…, xn) по k переменным (x1,…, xk) – разложение Шеннона.

Теорема 1. Любая функция f (x1, x2,…, xn), не равная тождественно нулю, может быть представлена в виде разложения Шеннона:

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

f (x ,x ,...,x ,x

,...,x )

V

 

 

 

& x i ( ,

2

,...,

k

,x

,...,x ) .

1 2

n k 1

 

n

(

,

 

,...,

 

)i 1

i

1

 

k 1

n

 

 

 

 

2

k

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

Заметим, что x 1

,x 2

,...,x k

1,

 

 

 

 

 

если xi =

δi,

для i =1,k . Выберем

 

1

2

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

набор δ1, δ2,…, δk и положим, что xi = δi, i = 1,k . Тогда левая часть будет равна:

f(x1, x2,…, xk, xk+1, …, xn) = f1,…, δk, xk+1, …, xn),

а правая:

Vx11 ,...,xk k f ( 1, 2 ,..., k ,xk 1,...,xn ) f ( 1, 2,..., k ,xk 1,...,xn ) .

Здесь x1 1 ,..,xk k разбиваются на единичные и нулевые наборы.

Согласно закону а 0 = а, получаем, что левая и правая части формул равны при любой подстановке переменных х1, х2,…,хk.

Теорема 2. Любая булева функция может быть представлена формулой, являющейся суперпозицией , , ¬.

Доказательство.

1) В начале докажем для f = 1 или f = 0.

f(x1, x2,…, xn) = 1 = xi xi; f(x1, x2,…, xn) = 0 = xi xi;

2) Докажем для функции, не равной константе, f(x1, x2,…, xn) разложим по n переменным. Получим

V x 1

...x n f ( ...

n

) Vx 1

...x .

1

n

1

1

n

1,..., n

 

 

 

 

 

Это совершенная ДНФ. Из этой формулы следует способ построения СДНФ.

 

Заметим, что

f может быть разложена

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(x ,...,x

) V

x 1

,...,x n

 

 

( ,...,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f

f

n

) ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

n

 

1

 

n

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1,..., n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(в булевой алгебре справедлив принцип двойственности).

 

 

 

 

 

 

 

 

 

 

 

 

Согласно закону двойного отрицания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x 1 ,...,x n

 

 

 

 

 

 

 

f (x ,x ,...,x ) f (x ,x ,...,x ,x

,...,x )

 

 

 

 

 

 

( ,...,

 

 

)

 

 

V

 

f

n

 

1 2

 

n

1 2

 

k k 1

 

n

1

,..., n

1

 

 

n

 

 

1

 

 

 

 

 

x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

 

 

 

 

 

 

 

 

 

n .

 

 

 

 

 

 

... x

 

 

1 x

 

2

... x

 

 

 

1

x

2

2

n

n f ( 1, 2 ,..., n )

 

2

n

 

1,.., n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1,.., n

 

 

 

 

 

 

 

 

 

 

 

(1)

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

Покажем связь между разложением Шеннона и таблицами Вейча. Представим пространство Pn(X) в виде декартова произведения

пространств Pk(Xa) и Pg(Xb), Xa Xb = X, Xa Xb = , k + g = n:

Pn(X) = Pk(Xa) Pg(Xb).

Каждой строке таблицы Вейча взаимно однозначно сопоставим точку пространства Pk(Xa), столбцу – точку пространства Pg(Xb) и рассмотрим разложение Шеннона булевой функции

f xa1 ,xa2 ,...,xak , xb1 ,xb2 ,...,xbg ,

по первым k переменным. Тогда i-строка таблицы Вейча, идентифицируемая

конъюнкцией x 1

x 2 ... x k , соответствует остаточной функции

a1

a2

ak

 

 

 

f xa

,xa

,...,xa , xb

,xb

,...,xb .

 

1

2

k 1

2

g

Будем называть разложение Шеннона булевой функции f(X) строчным, если разложение осуществляется по переменным, соответствующим строкам таблицы Вейча.

5.5. Классы булевых функций

1. Классом K0 булевых функций fi (x1, x2, …, xn), сохраняющих константу 0, называется множество функций вида

{fi (x1, x2, …, xn) | fi (0, 0, …, 0) = 0}.

2. Классом K1 булевых функций fi (x1, x2, , xn), сохраняющих константу 1, называется множество функций вида

{fi (x1, x2, …, xn) | fi (1, 1, …, 1) = 1}.

3. Классом Kл линейных булевых функций fi (x1, x2, …, xn), называется множество функций вида

{fi (x1, x2, …, xn) | fi (x1, x2, …, xn) 0 ○ cixi}, c0, ci = 0, 1; i= 1, 2, …, n,

где – знаки операции «сложение по модулю два».

4.Классом Kс самодвойственных булевых функций fi (x1, x2, …, xn), называется множество функций вида

fi x1,x2 ,...,xn |fi x1,x2 ,...,xn fi x1,x2 ,...,xn .

5.Классом Kм монотонных булевых функций fi (x1,x2, …, xn) называется множество функций вида

 

f

x ,x

,...,x

*

*

*

,

 

,...,

 

 

*

 

,i 1,2,...,n

 

 

|

,

2

,...,

n

2

n

 

 

i

1 2

n

1

 

1

 

 

i

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

fi 1*, *2 ,..., *n fi 1, 2 ,..., n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Критерий полноты. Система S булевых функций fi является полной тогда и только тогда, когда выполняются пять условий: существуют:

функция fi S, не сохраняющая константу нуль: fi K0;

функция fi S, не сохраняющая константу единицу: fi K1;

нелинейная функция в системе S;

несамодвойственная функция в системе S;

немонотонная функция в системе S.

5.6. Представление булевой функции картами Карно (Вейча)

Карта Карно – это диаграмма, состоящая из правильно расположенных квадратов, каждый из которых соответствует одной из 2n полных конъюнкций соответствующих функции от n переменных. Значения данной функции f из таблицы истинностей вносят в нужные квадраты. Тогда функция f равна дизъюнкции всех полных конъюнкций, для которых в соответствующих квадратах стоит единица.

Рассмотрим построение карт Карно. Пусть задана функция от двух переменных. Тогда карта Карно будет выглядеть

x1

 

00

01

x2

10

11

Чтобы наборы не мешали внутри клеток, их можно вынести за пределы таблицы

x1

0 1

0 x2 1

В карте Карно соседние клетки различаются одной компонентой. Для кодировки используется код Грея. Код Грея получается из обыкновенного весового кода сложением по модулю 2. Искомое число вычисляется следующим образом. Берем весовой код в качестве первого слагаемого, в качестве второго слагаемого берем тот же код, но сдвинутый на один разряд вправо. Производим сложение по модулю 2. Тогда карта Карно для трех переменных будет выглядеть:

0

0

1

1

x1

0

1

1

0

x2

0

1

x3

Если вместо единиц поставить черту, а нули не писать, тогда эта же карта будет выглядеть следующим образом:

x1 x2

x3

Карты для четырех и пяти переменных представлены ниже.

x1 x2

x3 x4

x1 x2 x3

x4 x5

Необходимо отметить, что карта Карно обладает «зеркальной» симметрией и все соседние компоненты находятся на расстоянии один.

Представим функцию от четырех переменных картой Карно. Пусть задана функция от четырех переменных в табличной форме. Покажем наборы, на которых функция принимает единичное значение. Отметим их на карте точками.

x1

x2

x3

x4

F

Наборы

 

 

 

 

 

 

 

 

0

0

0

0

0

 

 

 

 

 

 

 

 

 

0

0

0

1

0

 

 

 

 

 

 

 

 

 

0

0

1

0

0

 

 

 

 

 

 

 

 

 

0

0

1

1

0

 

 

 

 

 

 

 

 

 

0

1

0

0

0

 

 

 

 

 

 

 

 

 

0

1

0

1

1

x1x2 x3 x4

 

 

 

 

 

 

 

 

0

1

1

0

1

x1x2 x3 x4

 

 

 

 

 

 

 

 

0

1

1

1

1

x1x2 x3 x4

 

 

 

 

 

 

 

 

1

0

0

0

0

 

 

 

 

 

 

 

 

x1

 

 

 

 

 

 

 

 

1

0

0

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2

1

0

1

0

0

 

 

 

 

 

 

 

 

1

0

1

1

0

 

 

 

 

 

 

 

 

 

1

1

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

0

1

1

x1x2 x3 x4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

1

0

0

 

 

 

 

 

 

 

 

1

1

1

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x3 x4