- •Глава 2. Булевы функции
- •Часть 1
- •§ 2.1. Булевы функции и способы их задания
- •2.1.1. Понятие булевой функции.
- •Примеры булевых функций
- •2.1.2. Реализация булевых функций формулами
- •§ 2.2. Нормальные формы
- •2.2.1. Принцип двойственности
- •2.2.2. Реализация булевых функций в виде сднф и скнф.
- •§ 2.3. Минимизация булевых функций в классе днф
- •§ 2.4. Классы Поста и полнота
- •2.4.1. Понятие о полноте системы булевых функций
- •2.4.2. Реализация булевых функций полиномом Жегалкина
- •2.4.3 Классы Поста
- •2.4.4. Критерий полноты
- •Проверочный тест
- •Ключи теста
- •Глава 2. Часть 2
§ 2.4. Классы Поста и полнота
2.4.1. Понятие о полноте системы булевых функций
Определение. Множество булевых функций называется полной системой, если любая булева функция из может быть реализована формулой над .
Упражнение 2.25. Доказать, что - полная система.
◄ Возможны два случая:
1. . Тогда и может быть реализована в виде СКНФ.
2. . Тогда может быть реализована в виде СДНФ.
Таким образом, любая булева функция может быть реализована формулой над множеством , что и означает полноту этой системы функций. ►
Теорема (о полноте двух систем). Пусть заданы две системы функций из : и . Тогда, если система - полная и каждая ее функция может быть реализована формулой над , то система тоже полная.
Докажем это утверждение. Пусть - произвольная функция из . Надо показать, что ее можно реализовать формулой над . Рассуждаем так. В силу полноты реализуется формулой над , т.е. . В свою очередь, по условию реализуются формулами над , т.е. . Следовательно, в формуле мы можем исключить вхождение символов функций , заменив их соответствующими формулами: . Полученное выражение определяет формулу над , реализующую .
Упражнение 2.26. Используя теорему о полноте двух систем, доказать полноту системы булевых функций:
а) ; б) ; в) ; г) .
◄ а) Докажем, что - полная система. Действительно, пусть и . Система - полная и, поскольку , то каждая функция этой системы выражается формулой над . Таким образом, условия теоремы о полноте двух систем выполнены и, значит, система - полная система.
б) Докажем, что полная система. Действительно, пусть и . Имеем: или . Следовательно, и . Таким образом, каждая функция полной системы реализуется формулой над . Следовательно, условия теоремы о полноте двух систем выполнены и, значит, - полная система.
в) и г) докажите самостоятельно. ►
2.4.2. Реализация булевых функций полиномом Жегалкина
Возьмем произвольную функцию . Поставим цель – реализовать ее в виде суммы (по модулю два) слагаемых, каждое из которых представляет собой конъюнкцию нескольких переменных.
Вначале рассмотрим эту задачу на конкретном примере. Для функции имеем:
.
В ходе преобразований мы воспользовались несколькими доказанными ранее (упр. 2.12) равносильностями: , , , , , .
Аналогичным образом можно поступать с произвольной функцией: сначала реализовать ее в виде СДНФ или СКНФ; затем, воспользовавшись законом де Моргана, избавиться от дизъюнкции; раскрыть скобки, воспользовавшись дистрибутивностью операций сложения по модулю два и конъюнкции; после этого полученное выражение упростить, используя тождества , , , , . В результате функция окажется реализована формулой, представляющей собой сумму (по модулю два) конъюнкций переменных. Формулы такого вида называют полиномами Жегалкина.
Дадим строгое определение полинома Жегалкина. Пусть M – произвольное подмножество булевого куба , , - номер вектора , - его вес, - номера отличных от нуля координат вектора .
Определение. Формула вида
, (***)
где суммирование ведется по модулю два, а коэффициенты равны либо 0, либо 1, называется полиномом Жегалкина от переменных.
Если суммирование в формуле (***), ведется по всем булевым векторам длины n, слагаемые идут в порядке возрастания номеров булевых векторов и , то говорят, что полином Жегалкина записан в канонической форме.
Наибольший из рангов элементарных конъюнкций, входящих в полином с единичными коэффициентами, называется степенью полинома.
Возможно, строгое определение канонического полинома Жегалкина показалось Вам неясным. Лучший способ его осознать – переформировать применительно к какому-нибудь частному случаю, например, случаю 2-х переменных.
Рассуждаем так. Согласно определению в формуле (***) слагаемых столько, сколько булевых векторов в множестве , т.е. 4; слагаемые идут в порядке возрастания номеров булевых векторов, т.е. первое слагаемое соответствует булевому вектору (0,0), второе - (0,1), третье - (1,0), четвертое - (1,1). Слагаемые представляют собой конъюнкции, в которые входят только те переменные, значения которых в соответствующем булевом векторе равны 1, конъюнкции помножены на числовой коэффициент. Таким образом, слагаемое, соответствующее булевому вектору (0,0) (его номер 0), имеет вид ; слагаемое, соответствующее булевому вектору (0,1) (его номер 1), имеет вид ; слагаемое, соответствующее булевому вектору (1,0) (его номер 2), имеет вид ; слагаемое, соответствующее булевому вектору (1,1) (его номер 3), имеет вид . Итак, канонический полином Жегалкина от 2-х переменных - это формула вида .
Рассуждая аналогично, выпишем в общем виде канонический полином Жегалкина от 3-х переменных - (Это удобно делать, имея перед глазами таблицу истинности функции трех переменных, поскольку в этой таблице булевы вектора перечисляются в нужном нам порядке).
Упражнение 2.27. Найти число канонических полиномов Жегалкина от переменных.
◄ Каждый канонический полином Жегалкина от переменных однозначно определяется набором своих коэффициентов . Каждый такой набор можно рассматривать как булев вектор длины . Следовательно, канонических полиномов Жегалкина от переменных столько же, сколько булевых векторов длины , т.е. . ►
Заметим, что каждый полином Жегалкина от n переменных можно записать в канонической форме. Например, полином Жегалкина от двух переменных в канонической форме запишется так: .
Выше на примере функции мы показали, как можно реализовать функцию в виде полинома Жегалкина. Полученный полином можно переписать в канонической форме . В связи с этим естественно задаться вопросом: каждую ли булеву функцию можно реализовать в виде канонического полинома Жегалкина? Оказывается, да. Действительно, с произвольной функцией можно действовать так же как с функцией : сначала реализовать ее в виде СДНФ или СКНФ; затем, воспользовавшись законом де Моргана, избавиться от дизъюнкции; раскрыть скобки, воспользовавшись дистрибутивностью операций сложения по модулю два и конъюнкции; после этого полученное выражение упростить, используя тождества , , , , . В результате функция окажется реализованной в виде полинома Жегалкина, который легко переписать в канонической форме.
Положим, мы построили для функции канонический полином Жегалкина. Естественно поинтересоваться: нельзя ли, действуя иначе, получить для той же функции другой канонический полином Жегалкина. Оказывается, нельзя.
Действительно, число канонических полиномов Жегалкина от переменных равно и число функций от переменных равно . Предположим, что найдется функция, представление которой в виде канонического полинома Жегалкина не единственно. Поскольку число булевых функций переменных и число канонических полиномов Жегалкина от переменных одинаково, то из неоднозначности представления следует, что найдется канонический полином Жегалкина, реализующий не менее двух функций, что невозможно. Пришли к противоречию, следовательно, наше предположение о неоднозначности представления было неверным.
Мы доказали теорему: каждая булева функция от переменных может быть реализована в виде канонического полинома Жегалкина от переменных, причем единственным образом.
Для нахождения полинома Жегалкина, реализующего функцию , применяют два способа: метод равносильных преобразований и метод неопределенных коэффициентов.
Методом равносильных преобразований мы уже пользовались, когда искали полином Жегалкина функции .
Упражнение 2.28. Используя метод равносильных преобразований, найти полином Жегалкина, реализующий функцию:
а) ; б) ;
в) ; г) .
◄ а) .
б) .
в) и г) решите самостоятельно. ►
Метод неопределенных коэффициентов состоит в следующем. Пусть функция зависит от переменных. В общем виде записывают канонический полином Жегалкина от переменных. Для каждого набора значений переменных составляют уравнение . В результате получают систему из уравнений, которая однозначно определяет коэффициенты полинома.
Упражнение 2.29. Используя метод неопределенных коэффициентов, найти полином Жегалкина, реализующий функцию:
а) ; б) ;
в) ; г) .
◄ а) Зададим функцию таблично:
|
|
|
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
Канонический полином Жегалкина от двух переменных имеет вид: . Поэтому должны выполняться равенства:
;
;
;
.
Откуда последовательно находим , , , . Таким образом, .
б)
|
|
|
|
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
Запишем в общем виде канонический полином Жегалкина от трех переменных:
.
Нам нужно подобрать такие коэффициенты , чтобы на каждом наборе значений переменных выполнялось равенство: :
; ;
;
;
;
;
;
.
Коэффициенты найдены и можно записать канонический полином Жегалкина: .
Каноническая форма полинома Жегалкина довольно громоздкая и в практическом плане не имеет каких-либо преимуществ перед любой другой формой. Поэтому имеет смысл упростить полученное выражение, опустив нулевые члены и единичные сомножители: .
в) и г) решите самостоятельно. ►