
- •Введение
- •Лекция 0 Кванторы и символы математической логики
- •Лекция 1 Множества
- •Способы задания множеств
- •Подмножества
- •Особые множества
- •Мощность множества
- •Лекция 2 Операции над множествами
- •Диаграммы Эйлера-Венна
- •Объединение множеств
- •Пересечение множеств
- •Разность множеств
- •Дополнение множества
- •Симметрическая разность
- •Основные законы алгебры множеств
- •Приоритеты операций над множествами
- •Покрытие и разбиение множества
- •Лекция 3 Кортеж
- •Декартово произведение множеств
- •Лекция 4. Соответствие. Отображение. Функция. Соответствие
- •Отображение
- •Функция
- •Лекция 5 Отношения
- •Одноместные отношения
- •Бинарные отношения
- •Лекция 6 Специальные типы отношений
- •Отношение эквивалентности
- •Отношение порядка
- •Отношение доминирования
- •Отношение толерантности
- •Функциональное отношение
- •Лекция 7 Системы счисления
- •Лекция 8 Основы знаковой арифметики
- •Лекция 9 Алгебра высказываний
- •Лекция 10 Булевы функции
- •Аксиомы и законы алгебры логики
- •Лекция 11 Аналитическое представление функций алгебры логики
- •Дизъюнктивная нормальная форма (днф)
- •Конъюнктивная нормальная форма (днф)
- •Лекция 12 Минимизация булевых функций с помощью аналитических преобразований
Лекция 10 Булевы функции
В курсе математического анализа изучаются функции, определенные на числовой прямой или ее отрезке, на плоскости, на гиперплоскости (поверхности) и т.п. Так или иначе, область определения таких функций – непрерывное множество. В курсе дискретной математики изучаются функции, область определения которых – дискретное множество. Простейшим таким множеством является множество, состоящее из двух элементов – единицы и нуля.
Если в алгебре высказываний отбросить смысловые значения анализируемых высказываний, оставив только их логические значения «истина» или «ложь», мы получим некоторые переменные, принимающие одно из двух значений: 0 или 1. Такие переменные, с учетом количества возможных их значений, называют двоичными переменными. А поскольку они используются лишь в алгебре логики, их называют также логическими или булевыми переменными.
Функция f(x1, x2, …, xn), принимающая одно из двух значений: 0 или 1 и зависящая от переменных, каждая из которых может принимать значения 0 или 1, называется булевой или переключательной. Также их называют функциями алгебры логики. С математической точки зрения булева функция от n аргументов представляет собой функциональное отображение из n-ой степени множества {0, 1} во множество {0, 1}.
Из определения следует, что область определения булевой функции – множество всевозможных n-мерных наборов из нулей и единиц, а для задания функции достаточно указать, какие значения функции соответствуют каждому из наборов:
x1 |
x2 |
… |
xn-1 |
xn |
f (x1, x2, …, xn-1, xn) |
0 |
0 |
… |
0 |
0 |
f (0, 0, …, 0, 0) |
0 |
0 |
… |
0 |
1 |
f (0, 0, …, 0, 1) |
… |
… |
… |
… |
… |
|
1 |
1 |
… |
1 |
0 |
f (1, 1, …, 1, 0) |
1 |
1 |
… |
1 |
1 |
f (1, 1, …, 1, 1) |
Порядок расположения наборов, принятый в таблице, называется стандартным или естественным. При этом каждому набору =(1, …, n), где i есть 0 или 1, ставится в соответствие число
N = 12n-1+22n-2+…+n-121+n20.
Таким образом, наборам (0, 0, …, 0, 0), (0, 0, …, 0, 1), …, (1, 1, …, 1, 1) будут соответствовать числа 0, 1, …, 2n-1. Например, набору 10100 будет соответствовать десятичное число 20, то есть это двадцатый набор.
Расположение наборов в порядке возрастания соответствующих им чисел называется расположением в естественном порядке. Десятичное число, соответствующее входному набору, называется его номером. Поэтому очевидно, что количество k входных наборов для булевой функции n переменных равно k=2n.
Количество же возможных различных
функций n переменных можно
определить из следующих соображений.
Каждая функция задается набором своих
k значений, которому можно
поставить в соответствие k-разрядное
двоичное число. Понятно, что количество
различных k-разрядных
двоичных чисел N = 2k
=
.
Рассмотрим для начала функции одной переменной. Поскольку n=1, то количество таких функций N1 = 22 = 4. Для каждой из четырех функций f1-f4 составим таблицу истинности:
x |
f1(x) |
|
x |
f2(x) |
|
x |
f3(x) |
|
x |
f4(x) |
0 |
0 |
|
0 |
0 |
|
0 |
1 |
|
0 |
1 |
1 |
0 |
|
1 |
1 |
|
1 |
0 |
|
1 |
1 |
Функция f1(x) не зависит от x и всегда равна нулю. Такая функция называется «константа 0».
Функция f2(x) всегда равна значению своего аргумента. Называется «повторение x».
Функция f3(x) равна противоположному значению своего аргумента и называется «инверсия x», функция отрицания или просто функция «не».
Функция f4(x) – функция «константа 1».
В более сжатом виде приведенные таблицы истинности можно представить следующим образом:
Таблица истинности функций одной переменной
x |
f1 |
f2 |
f3 |
f4 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
Функции одной переменной являются
самыми элементарными и практического
применения не имеют, за исключением,
пожалуй, инверсии. Наибольшее применение
в качестве базовых нашли булевы функции
двух переменных. Отметим, что количество
булевых функций двух переменных N2
=
=
=
24 = 16. Представим функции двух
переменных в виде обобщенной таблицы
истинности, после чего подробно рассмотрим
данные функции.
Таблица истинности функций двух переменных
x1 |
x2 |
f1 |
f2 |
f3 |
f4 |
f5 |
f6 |
f7 |
f8 |
f9 |
f10 |
f11 |
f12 |
f13 |
f14 |
f15 |
f16 |
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 |
Функции f1 и f16 – соответственно константы 0 и 1 (другие названия – «тождественный ноль» и «тождественная единица»). Они не зависят ни от одной переменной.
Функции f4 = x1,
f6 = x2,
f11 =
,
f11 =
.
Хотя данный функции фактически зависят
только от одной из двух переменных и не
зависят от другой, они все равно относятся
к функциям двух переменных. Если булева
функция не зависит от значения одной
из своих переменных, то такая переменная
является для данной функции несущественной
или фиктивной. В
противном случае переменная является
существенной. Например, для функций
f4 и f11
несущественной является переменная
x2, для функций f6
и f11 – переменная
x1. Для функций f1
и f16 оба аргумента
являются несущественными.
Функция f2 = x1&x2 – конъюнкция или логическое умножение. Ее результат похож на результат умножения в обычной алгебре: если хотя бы один из аргументов равен нулю, то результат равен нулю; результат равен единице только в том случае, когда все аргументы функции равны единице. Не следует забывать, что название «умножение» здесь является образным, поскольку никакие операции обычной алгебры (сложение, вычитание, умножение, деление и т.п.) не применимы к булевым переменным. К булевым переменным применимы лишь логические операции, которые мы как раз сейчас и рассматриваем. Поэтому в названии «логическое умножение» присутствует слово-поправка «логическое».
В повседневной речи конъюнкция для краткости называется «функция И» или «логическое И» (то есть равная единице тогда, когда и первый аргумент, и второй аргумент истинны).
Функция f8 = x1x2 – дизъюнкция или логическое сложение. Ее результат равен единице, если хотя бы один из аргументов равен единице. Схожесть с алгебраической операцией сложения заключается в первых трех строках таблицы: 0+0=0, 0+1=1, 1+0=1. Последняя строка (x1=1, x2=1) не увязывается с понятием алгебраического сложения, поскольку для f8 1+1=1. Но не будем забывать, что слово «сложение» в названии функции является образным, и более правильным является название «дизъюнкция».
В повседневной речи конъюнкция для краткости называется «функция ИЛИ» или «логическое ИЛИ» (то есть равная единице тогда, когда или первый аргумент, или второй аргумент, или оба аргумента истинны).
Функция f10 = x1~x2 – эквивалентность или однозначность. Результат функции равен единице лишь в тех случаях, когда ее аргументы равны друг другу (то есть эквивалентны, обозначаются одним значком – нулем или единицей).
Функция f7 = x1 x2 – сумма по модулю 2. Фактически является функцией, противоположной функции эквивалентности. Данная функция имеет огромное значение в информатике, вычислительной технике и программировании, поскольку является обратимой: если y=ab, то a=yb и b=ya. Функция имеет множество альтернативных названий: «исключающее ИЛИ» (поскольку как бы исключает последнюю строку таблицы истинности операции ИЛИ, делая ее равной нулю), «неоднозначность» (равна единице, когда аргументы не равны друг другу, т.е. обозначаются разными значками), «exclusive OR» (дословно – исключающее ИЛИ), «XOR» (сокращенная запись фразы exclusive OR, по-русски обычно читается «ксор»), «строгая дизъюнкция», «поразрядное дополнение», «побитовый комплемент».
Функции f12, f14 – импликация: f12 = x2→x1, f14 = x1 → x2.
Функция f15 = x1|x2 – так называемый штрих Шеффера. Фактически представляет собой функцию, обратную (инверсную) функции конъюнкции.
Функция f9 = x1x2 – так называемая стрелка Пирса или функция Вебба. По сути является функцией, обратной (инверсной) функции дизъюнкции.
Функции f3 и f5
– так называемые функции запрета
по x1 и x2
соответственно. Можно сказать, что f3
обратна функции f14,
f5 обратна функции
f12:
,
.
Что касается функций трех переменных,
то таких функций существует N3
=
=
=
28 = 256. Поскольку функций очень
много, для каждой из них отдельного
названия нет, однако некоторые из них,
аналогичные функциям двух переменных,
следует знать:
Таблицы истинности некоторых функций трех переменных
x1 |
x2 |
x3 |
Const 0 |
Const 1 |
& |
|
| |
|
f181 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
В данной таблице в последнем столбце приведена для примера некая произвольно взятая функция под номером 101101012=181, не имеющая собственного названия. Подобных «безымянных» функций среди 256 функций трех переменных – большинство.