logo search
кр одмита

4.2. Элементарные булевы функции и алгебраические формы

Рассматривая векторную форму задания булевой функции, легко определить число булевых функций от п переменных – это число всех 2n-компонентных булевых векторов, т. е. . Однако это число учитывает также функции и от меньшего числа аргументов. Любую функцию отп аргументов можно считать функцией от большего числа аргументов. Для этого вводится понятие существенной зависимости и несущественной зависимости. Функция f(х1х2, ... , хn) существенно зависит от аргумента хi, если

f(х1х2, ... , хi – 1, 0, х+ 1, … , хn)  f(х1х2, ... , х– 1, 1, х+ 1, … , хn).

Переменная хi в этом случае называется существенным аргументом. В противном случае она является несущественным или фиктивным аргументом.

Элементарными булевыми функциями являются функции от одной и двух переменных. Число функций от одной переменной равно = 4. Эти функции представлены в табл. 4.2. Две из них,f0 и f3, являются константами 0 и 1, переменная x для них является несущественным аргументом. Функция f1 также является тривиальной, любое ее значение совпадает со значением аргумента: f1(x) = x. Нетривиальной функцией является функция f2(x) =x, называемая отрицанием, или инверсией. Ее значение всегда противоположно значению аргумента x. Из табл. 4.2 видно, что 0 = 1 и1 = 0.

В табл. 4.3 приведены все булевы функции f(х1х2) от двух аргументов. В левом столбце показаны их выражения в терминах нескольких функций, принятых за основные. Эти основные элементарные булевы функции определяются табл. 4.4, содержащей имена функций и их обозначения, а также значения, принимаемые данными функциями на каждом из четырех наборов значений аргументов х1 и х2 (приведенных в верхней части таблицы), т. е. каждая из функций задана в векторном виде.

Таблица 4.2

Булевы функции от одного аргумента

x

0

1

f0 = 0

0

0

f1 = x

0

1

f2 =x

1

0

f3 = 1

1

1

Таблица 4.3

Булевы функции от двух аргументов

х1

0

0

1

1

х2

0

1

0

1

f0 = 0 – константа 0

0

0

0

0

f1 = х1  х2 – конъюнкция

0

0

0

1

f2 – отрицание импликации

0

0

1

0

f3 = х1

0

0

1

1

f4 – отрицание обратной импликации

0

1

0

0

f5 = х2

0

1

0

1

f6 = х1  х2 – сложение по модулю 2

0

1

1

0

f7 = х1  х2 - дизъюнкция

0

1

1

1

f8 = х1 х2 – стрелка Пирса

1

0

0

0

f9 = х1  х2 – эквиваленция

1

0

0

1

f10 =х2

1

0

1

0

f11 = х2  х1 – обратная импликация

1

0

1

1

f12 =х1

1

1

0

0

f13 = х1  х2 – импликация

1

1

0

1

f14 = х1  х2 – штрих Шеффера

1

1

1

0

f15 = 1 – константа 1

1

1

1

1

Элементарные функции имеют особое значение в теории булевых функций, поскольку каждая из них может быть выражена одноместной или двухместной алгебраической операцией. Все операции, представленные в табл. 4.3, составляют алгебру логики. Любая булева функция от любого числа аргументов может быть представлена формулой алгебры логики. Формулу, содержащую более чем одну операцию, можно рассматривать как суперпозицию элементарных функций. Под суперпозицией функций понимается использование одних функций в качестве аргументов других функций. Для булевых функций это является возможным благодаря совпадению области значений функций с областями значений их аргументов. Таким образом, алгебраическое задание булевой функции представляет собой формулу, по которой вычисляется значение этой функции. Понятие формулы определим следующим образом:

1) каждый символ переменной есть формула;

2) если А и В – формулы, то формулами являются А и (А  В), где  – любая операция алгебры логики;

3) других формул нет.

Для установления порядка выполнения операций в формулах используются скобки. При отсутствии скобок порядок устанавливается согласно приоритетам операций. Первым приоритетом обладает операция отрицания, затем выполняется . Третьим приоритетом обладают операции  и , четвертым приоритетом – операции ~ и . Для упрощения написания формул иногда символ конъюнкции опускается. Процесс вычисления значений функции f(x1x2x3) =  по ее формуле покажем с помощью табл. 4.4, где последовательность столбцов соответствует порядку выполнения операций.

Таблица 4.4

Вычисление по формуле

x1

х2

х3

х1  х2

(x1  х2х3

x1

х2х3

x1  х2х3

f(x1x2x3)

0

0

0

0

0

1

1

0

1

1

0

0

1

0

0

1

1

0

1

1

0

1

0

1

0

1

1

0

1

1

0

1

1

1

1

0

1

1

1

1

1

0

0

1

0

1

0

0

0

0

1

0

1

1

1

0

0

0

0

1

1

1

0

1

0

1

0

0

0

0

1

1

1

1

1

0

0

1

1

1

Две разные формулы могут представлять одну и ту же функцию. Такие формулы называются равносильными. Если А и В – равносильные формулы, то А = В. В этом случае, если А является частью другой формулы, то вместо нее можно подставить В, в результате чего получится формула, равносильная исходной.

Алгебра, содержащая только три операции  ,  и , называется булевой, так же как и формула, представляющая некоторую композицию этих операций. Легко проверить по табл. 4.3 следующие основные законы булевой алгебры.

Коммутативность:

х  у  у  х; х у  у х.

Ассоциативность:

х  (у  z)  (x  y)  z; (y z)  (x y) z.

Дистрибутивность:

( z)  x y  x z; y z  ( y) (x  z).

Идемпотентность:

 x  x; x x  x.

Законы де Моргана:

=xy; =x y.

Законы операций с константами:

x  0  x; x 1  x;

x 0  0; x  1  1;

х х  1; хх  0.

Закон двойного отрицания:

х.

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

На основании этих формул выводятся следующие соотношения.

Закон поглощения:

х  х у  х; х (х  у)  х.

Действительно,

х  х у  х 1  х у  х (1  у)  х1 = х;

х (х  у)  х х  х у  х  х у  х.

Закон простого склеивания:

х у  ху  х; (х  у) (х у)  х.

Левая формула выводится с помощью закона дистрибутивности конъюнкции относительно дизъюнкции: х у  ху  х(у у)  х. Для вывода правой формулы достаточно раскрыть скобки и применить законы идемпотентности и поглощения.

Закон обобщенного склеивания:

х у х z  х у х z  y z.

Эту формулу можно вывести следующим образом:

х у х z  y z  x y x z  y (x x)  x y (1  z) x z (1  y)  x y x z,

а если подставить у = 1, то получим

х х z = х 1 х z  1 z  х  z.

Все операции алгебры логики можно выразить через булевы операции. Справедливость следующих формул можно доказать простой подстановкой значений из табл. 4.3:

х  у = xy x y;

х ~ у =xy  x y;

х  у =x  y.

Пользуясь этими формулами, построим булево выражение, эквивалентное формуле ((х  у)  (х  z))y:

((х  у)  (х  z))y = (x  y  xz x z)y = (x  y z)y =xy yz.

Познакомимся еще с одной алгеброй на множестве логических функций – алгеброй Жегалкина.

Алгебра над множеством логических функций с двумя бинарными операциями и, двумя константами 1,0 называется алгеброй Жегалкина, если в ней выполняются следующие законы:

; ;;;

xy = yx; x(yz) = (xy)z; xx = x

В алгебре Жегалкина дизъюнкция выражается формулой, из которой видно, чтотогда, когда xy = 0 (когда x и y ортогональны).

Действительно,

Всякую формулу алгебры Жегалкина можно представить в виде полинома Жегалкина.

Для всякой логической функции существует единственный полином Жегалкина.