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

LS-Sb89586

.pdf
Скачиваний:
2
Добавлен:
13.02.2021
Размер:
958.51 Кб
Скачать
Таблица 3.1

 

 

C0

 

 

 

 

1

 

 

 

0

 

 

 

 

 

 

 

C0

C1

 

 

1

1

 

 

1

 

1

 

 

 

 

 

 

C20

C12

 

C22

 

1

2

1

C0

C1

C

2

C3

1

3

3

1

3

3

3

3

...........................................

...................................

 

Рис. 2.2

 

 

 

Рис. 2.3

 

В этом треугольнике каждое число по выведенной рекуррентной формуле есть сумма двух, стоящих над ним, а по границам треугольника стоят еди-

ницы (рис. 2.3). Например, (a b)3 a3 3a2b 3ab2 b3 .

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

3.1.Определение булевой функции и примеры булевых функций

Определение. Функцию от одной или нескольких переменных, аргументы и значение которой могут принимать только значения 0 или 1, называют булевой функцией (в честь английского математика Джорджа Буля (1815–1864), одного из основателей математической логики).

Примеры:

Конъюнкция: x y = 1 тогда и только тогда, когда x и y оба равны 1. Дизъюнкция: x y = 1 тогда и только тогда, когда x и y оба равны 1.

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

При этом значения наборов переменных располагают

в лексикографическом порядке: сначала набор из одних

x

y

x y

0

0

0

нулей, затем правый 0 заменяют на 1, и так далее, до на-

0

1

0

бора из одних единиц (табл. 3.1).

1

0

0

Перечислим еще несколько булевых функций:

1

1

1

эквивалентность: x y (значение выражения равно 1,

 

 

 

 

 

 

если значения x и y совпадают);

симметрическая разность: xXORy (значение выражения равно 1, если зна-

чения x и y не совпадают);

импликация: x y (мнемоническое правило: из нуля следует что угодно –

иноль, и единица);

отрицание: x .

21

Таблица 3.2

3.2. Приоритет булевых функций

Высший приоритет у отрицания. За ним идет конъюнкция. Далее – дизъюнкция, симметрическая разность, эквивалентность, импликация. Иногда, впрочем, для дополнительного уточнения конъюнкцию заключают в скобки.

3.3.Некоторые равенства о булевых функциях двух переменных

Вдальнейшем понадобятся следующие три равенства. Их можно обосновать логическими рассуждениями, а можно и с помощью сравнения таблиц истинности.

1.x y x y .

2.x y x y .

3.x y x y .

3.4.Пример построения таблицы истинности для булевой функции трех переменных

Для функции трех переменных таблица истинности содержит 8 строк. Например: f (x, y, z) (y x) (y z) .

x

y

z

y x

y z

f

 

 

 

 

 

 

0

0

0

1

0

0

 

 

 

 

 

 

0

0

1

1

1

1

0

1

0

0

1

0

0

1

1

0

1

0

1

0

0

1

0

0

1

0

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

Для вычисления такой функции можно составить столбцы для промежуточных вычислений (табл. 3.2).

Примечание. Далее будем рассматривать действия с булевыми функциями прежде всего на примере функции f (x, y, z) (y x)

(y z) . Но если студенты быстро понимают материал, можно рассматривать дополнитель-

ные примеры для не очень сложных функций – например, f (x, y, z)

(x y)XOR(y z).

3.5.Совершенные дизъюнктивная (СДНФ)

иконъюнктивная (СКНФ) нормальные формы

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

22

Для вычисления СКНФ и СДНФ пригодится табл. 3.3.

Правило построения СДНФ: выбрать те и только те строки, в которых значение функции равно 1, затем в этих строках записать конъюнкцию x, y, z

по следующему правилу: если соответствующая переменная равна 0, то пишем ее с отрицанием, если она равна 1, то пишем без отрицания.

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 3.3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

y

z

y x

y z

f

 

СДНФ

 

СКНФ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

1

0

0

 

 

 

x y z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

1

1

1

1

 

 

 

 

 

 

 

 

 

 

 

x y z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

0

0

1

0

 

 

 

x

 

 

z

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

1

0

1

0

 

 

 

x

 

 

 

 

 

 

 

 

y

z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

1

0

0

 

 

 

 

 

y z

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

1

1

1

1

 

 

 

 

 

 

 

 

 

 

 

x y z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

0

1

1

1

 

 

 

 

 

 

 

 

 

 

 

x y z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

1

1

1

1

 

x y z

 

 

 

Например, во второй строке пишем x y z , поскольку в соответствующей строке были значения x = 0, y = 0, z = 1.

СДНФ записывают как дизъюнкцию этих выражений. При этом иногда операцию конъюнкции не пишут, подобно тому как для умножения не пишут знак умножения, то есть, например, yz означает произведение y и z.

В итоге получаем: СДНФ = x yz x yz xyz xyz .

Построение СКНФ в некотором смысле двойственно к построению СКНФ: вместо строк со значением 1 берем строки со значением 0, вместо дизъюнкции – конъюнкцию, а вместо конъюнкции – дизъюнкцию. И существует принципиальное отличие: там, где значение переменной равно 0, она берется без отрицания, а там, где это значение равно 1, – с отрицанием. Сравните первую и третью строки, в которых стоят выражения x y z и

x y z соответственно.

Выражение для СКНФ можно получить, перемножив все эти дизъюнк-

ции: СКНФ = x y z x y z x y z x y z .

23

Следующее важное действие – упростить СДНФ. Это можно сделать с помощью действий, аналогичных вынесению множителя за скобку.

x yz x yz xyz xyz x x yz xy z z yz xy .

Итак, упрощенная форма СДНФ в данном случае равна yz xy .

Но, как во многих задачах на упрощение, возникает вопрос: можно ли упростить выражение дальше? Точнее сказать – можно ли получить выражение, содержащее еще меньше букв и равное данному?

Ответ дает метод минимизирующих карт.

Для его применения составьте табл. 3.4, аналогичную табл. 3.3.

Таблица 3.4

f

Значения

 

x

 

y

 

 

z

 

xy

 

 

xz

 

yz

 

 

xyz

переменных

 

 

 

 

 

 

 

 

 

 

0

000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

y

 

 

z

 

x y

 

x z

 

y z

 

 

x y z

1

001

 

 

 

 

 

 

 

z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

y

 

 

 

x y

 

 

xz

 

yz

 

 

x yz

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

010

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

z

 

xy

 

x y

 

y z

 

 

xy z

0

011

 

 

 

 

y

 

 

z

 

 

 

 

 

 

 

 

 

 

 

 

yz

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xy

 

 

 

 

 

 

 

 

 

 

xyz

x

 

 

 

 

 

 

xz

 

 

 

0

100

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

x y

 

 

 

 

 

 

 

 

y z

 

 

x y z

 

 

 

z

 

 

x z

 

 

 

1

101

 

x

 

 

 

 

z

 

 

 

 

 

 

xz

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

x y

 

 

 

yz

 

 

x yz

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

110

 

x

 

y

 

 

 

 

 

xy

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z

 

 

x z

 

y z

 

 

xy z

1

111

 

x

 

y

 

 

z

 

xy

 

 

xz

 

yz

 

 

xyz

Каждую переменную (x, y и z) снабжаем или не снабжаем отрицанием в соответствии со значениями переменных. Например, если во втором столбце стоит 001, то x и y – с отрицанием, а z – без него.

В остальных столбцах переменные сопровождаются отрицаниями в соответствии с третьим, четвертым и пятым столбцами.

Теперь производим вычеркивание по следующему принципу.

Сначала вычеркиваем все строки, в которых значение функции равно нулю. В данном примере вычеркиваются строки с номерами 1, 3, 4 и 5.

Затем в каждом столбце, если элемент был один раз вычеркнут, он вычеркивается во всех оставшихся клетках столбца. Например, если во второй сверху

клетке шестого столбца элемент x y был вычеркнут, то в третьей сверху клетке его также вычеркнем.

Теперь из оставшихся элементов, взяв по одному элементу из строки, составим самое короткое выражение.

24

В данном примере из второй и шестой строк имеет смысл взять два одинаковых выражения yz , а из седьмой и восьмой строк – два одинаковых выражения xy, поскольку при вычислении дизъюнкции получим: yz yz xy xy yz xy .

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

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

Если они дали ответ длиннее, то, видимо, возможности упрощения не до конца использованы.

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

3.6. Композиция функции от трех переменных, дизъюнкции и конъюнкции

В качестве упражнения на булевы функции можно рассматривать вычисление функции f (x, x y, xy), где f – функция от трех переменных.

Задачу можно решать двумя способами.

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

Например: если x = y = 0, то f (x, x y, xy) f (0,0,0) 0 (по табл. 3.2).

Дополнительное условие для этой задачи: по таблице истинности необходимо определить формулу для полученной функции от двух переменных. Например, xy или x XOR y.

Второй способ: подставить в исходную формулу для функции (например, f (x, y, z) (y x) (y z) ) вместо переменной y выражение x y , а вместо переменной z – выражение x y , а затем упростить выражение.

3.7. Многочлен Жегалкина

Многочлен Жегалкина – это представление булевой функции в виде арифметического выражения, а точнее – в виде многочлена

a0 a1x a2 y a3z a12xy a23yz a13xz a123xyz ,

25

причем значения переменных x, y, z и полученных выражений рассматриваются в кольце вычетов по модулю 2. При этом каждое четное число заменяют на 0, а каждое нечетное – на 1.

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

Первый способ: метод неопределенных коэффициентов.

Подставим в многочлен все возможные наборы x, y, z и получим 8 условий на 8 коэффициентов. При этом матрица системы будет содержать много нулей.

Например, f (0, 0, 0) = a0 = 0 (значение берем из табл. 3.2).

Затем, f (0, 0, 1) = a0 a3 = 1, поэтому a3 = 1. И так далее, на каждом уравнении будем получать новый коэффициент.

В итоге получим: a3 = 1, a12 = 1, a23 = 1.

Тогда многочлен Жегалкина имеет вид: z + xy + yz.

Второй способ: использование СДНФ:

f (x, y, z) x yz x yz xyz xyz (1 x)(1 y)z x(1 y)z xy(1 z) xyzz zx zy xyz zx xyz xy xyz xyz z zy xy .

Как и следовало ожидать, ответ для второго способа вычисления многочлена Жегалкина совпал с ответом для первого способа.

Если эти ответы различаются, необходимо проверить выкладки.

В ответе с многочленом Жегалкина принято записывать слагаемые в лексикографическом порядке.

3.8. Двойственная функция

Определение. Пусть f – некоторая булева функция. Тогда двойственной к f (обозначается f*) называют функцию, таблица истинности которой получается из таблицы истинности f заменой всех 0 на 1, а всех 1 на 0.

Такую операцию называют инвертированием таблицы истинности. Примечание. Инвертирование происходит не только со значениями

функции, но и со значениями x и y. Поэтому после построения таблицы ее нужно будет «перевернуть», то есть переставить все строки в обратном порядке.

Посмотрим, например, что произойдет с дизъюнкцией при такой замене (табл. 3.4). После инвертирования получается табл. 3.5.

26

 

Таблица 3.4

 

 

 

Таблица 3.5

 

 

 

Таблица 3.6

 

 

 

 

 

 

 

 

 

 

 

 

 

x

x

x

 

x

y

 

(x y) *

 

x

y

 

(x y) *

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

1

1

 

1

0

0

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

1

0

 

1

0

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

1

0

1

 

1

1

0

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

1

0

0

 

0

1

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Из табл. 3.6 видно, что значения функции, двойственной к конъюнкции, совпали со значениями дизъюнкции.

Следовательно, x y * x y .

Аналогично можно обосновать такие равенства:

x y * x y;

x y * xXORy;

xXORy * x y;

(x)* x.

3.9.Нахождение таблицы значений функции, двойственной к данной булевой функции

Это действие сводится к композиции инвертирования и переворота. Например, для функции со значениями (0, 1, 0, 0, 0, 1, 1, 1) значения

двойственной функции можно получить следующим образом:

инвертирование: (1, 0, 1, 1, 1, 0, 0, 0); переворот: (0, 0, 0, 1, 1, 1, 0, 1),

т. е. значения двойственной функции будут такими: (0, 0, 0, 1, 1, 1, 0, 1). Гораздо более творческое задание – получить формулу для функции,

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

При этом используется следующая идея.

Если α и β – две булевы функции, то, например, * * *. Ана-

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

f (x, y, z) (y x) (y z) ,

27

то f *(x, y, z) (y x)*XOR(y z)* y x *XOR(y z)* yx XOR yz .

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

3.10.Исследование булевой функции на принадлежность

косновным классам замкнутости

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

Множество функций, сохраняющих 0. Определяется условием f (0, 0, 0) = 0. (Определение приведено для булевых функций от трех переменных, но его легко обобщить на случай произвольного количества переменных.)

Множество функций, сохраняющих 1. Определяется условием f (1, 1, 1) = 1.

Линейные. Множество функций, многочлен Жегалкина которых не содержит произведений.

Монотонные. Выполнено условие: если набор α меньше набора β, то f (α) ≤ f (β).

Уточнение: для сравнения наборов используется правило – набор α меньше набора β тогда и только тогда, когда каждый элемент α не больше соответствующего элемента β и хотя бы один элемент α меньше соответствующего элемента β.

Например, набор (0, 1, 0) меньше набора (1, 1, 1). А про наборы (1, 1, 0) и (1, 0, 1) нельзя сказать, что один меньше другого.

Для проверки функции на монотонность используют рисунок, называе-

мый диаграммой Хассе.

Рис. 3.1

28

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

При этом если будет нарушение монотонности, оно обнаружится на диа-

грамме.

 

 

 

 

 

 

 

 

 

 

Например, для функции

f (x, y, z) (y x) (y z)

нарушение моно-

тонности происходит следующим образом:

 

 

 

 

 

 

(0, 0, 1) < (0, 1, 1),

 

 

 

 

 

 

 

Таблица 3.7

но

 

 

 

 

 

 

 

 

 

 

 

Выполнение

T0

T1

L

 

M

S

f (0, 0, 1) > f (0, 1, 1),

 

свойства

 

 

 

f

+

+

 

поскольку

 

 

 

 

 

 

 

 

 

 

f

 

f (0, 0, 1) =1, f (0, 1, 1) = 0.

 

 

 

 

 

 

 

 

 

 

 

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

Ответ на задачу о проверке принадлежности булевой функции к классам замкнутости записывают таблицей (табл. 3.7).

Здесь T0 означает функции, сохраняющие 0; T1 – функции, сохраняю-

щие 1; L – линейные; M – монотонные; S – самодвойственные.

Ответ в таблице приведен, разумеется, для функции f (x, y, z)

(y x) (y z).

29

Список рекомендуемой литературы

Виноградов И. М. Основы теории чисел. М.: Наука, 1972.

Кемени Дж., Снелл Дж., Томпсон Дж. Введение в конечную математику. М.: Изд-во. иностр. лит., 1963.

Поздняков С. Н., Рыбин С. В. Дискретная математика. М.: Академия, 2008.

Фудзисава Т. Математика для радиоинженеров. Теория дискретных структур. М.: Радио и связь, 1984.

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]