- •Раздел II. Математическая логика
- •Глава 1. Алгебра логики
- •1.1. Объекты изучения алгебры логики. Булевы константы, переменные и векторы
- •1.2. Булевы функции, способы их задания. Элементарные функции. Алгебра логики, ее формулы
- •Задание функции при помощи вектора истинности
- •Матричный способ
- •Задание с помощью полного бинарного дерева
- •Формульное задание
- •1.3. Моделирование составных высказываний при помощи формул алгебры логики
- •1.4. Эквивалентность формул. Тавтологии. Законы логики. Двойственность
- •1.5. Специальные формульные представления булевых функций
- •1.5.1. Конъюнкции и дизъюнкции над множеством переменных. Нормальные формы
- •1.5.2. Конституенты единицы. Совершенные дизъюнктивные и веббовы нормальные формы
- •1.5.3. Конституенты нуля. Совершенные конъюнктивные и шефферовы нормальные формы
- •1.5.4. Полиномы Жегалкина
- •1.6. Минимизация нормальных форм булевых функций
- •1.5.1. Метод покрытий
- •1.6.2. Метод минимизирующих карт
- •1.7. Частично определенные функции. Их минимальное доопределение
- •Контрольные задания по теме функции алгебры логики. Нормальные формы. Полином жегалкина
1.5.4. Полиномы Жегалкина
Помимо представлений с помощью базисных наборов, состоящих из пороговых функций, при решении практических задач необходимо также использовать формулы стандартного вида на основе наборов, содержащих наряду с пороговыми и симметричные функции. Такими формулами являются полиномы Жегалкина.
Определение. Произведением над множеством переменных Х=(х1 , ... , хn ) называют выражение вида:
P = хi1 . . . хis,
где (хi1, ... , хis ) Х .
Определение. Полиномом Жегалкина булевой функции f(хn) называют выражение вида :
f =0 1 P1 ... k Pk,
где (P1, ..., Pk) – все возможные произведения над множеством переменных Х=(х1, ... , хn), 0 , 1 , ... , k - булевы константы (0 или 1), знак означает сумму по модулю 2.
Произведения, входящие в полином с нулевыми коэффициентами, обычно просто опускают.
Полиномы Жегалкина задают разложение функций в базисном наборе {0, 1, , }. Функция — пороговая, функции (0, 1, ) - симметричные. В виде полинома Жегалкина может быть представлена любая булева функция. Рассмотрим первый метод определения полинома по таблице истинности функции.
Метод неопределенных коэффициентов
Допустим, необходимо найти полином для некоторой булевой функции f(хn ). Для этого выполняем следующие действия.
1. Представляем полином в общем виде: f = 0 1 P1 ... k Pk, где (P1 ,..., Pk ) — все возможные (с точностью до перестановок) произведения над множеством переменных функции Х = (х1, ... , хn), 0, 1, ...,k —неопределенные коэффициенты.
2. Рассматриваем таблицу истинности функции. Поочередно подставляем в формулу полинома значения переменных. При этом получаем уравнения относительно неопределенных коэффициентов. Решая их поочередно, находим все значения коэффициентов.
Пример 5. Найти коэффициенты полинома Жегалкина функции f = (01101111).
х |
у |
z |
f |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
В общем виде полином имеет вид:
f =0 1 х 2 у 3 z 4 ху 5хz 6уz 7хуz.
Поочередно подставляя наборы значений переменных в формулу полинома, получаем уравнения относительно его коэффициентов. Решаем их и найденные числовые значения для упрощения решения последующих уравнений сразу подставляем в них. Номер шага равен лексикографическому номеру рассматриваемого набора.
ШАГ 0. (х,у,z) = (0,0,0). f (0,0,0)=0 1·0 2·0 3·0 4· 0·0 5·0·0 6·0·0 7·0·0·0= 0. Отсюда следует: 0 =0.
ШАГ 1. (х,у,z) = (0,0,1). f (0,0,1)=1·0 2·0 3 ·1 4·0·0 5·0·1 6·0·1 7·0·0·1=1. Отсюда: 3 = 1.
ШАГ 2. (х,у,z) = (0,1,0). f(0,1,0)=1·0 2·1 1·0 4·0·1 5·0·0 6 ·1·0 7·0·1·0 =1. Получим: 2= 1.
ШАГ 3. (х,у,z) = (0,1,1). f (0,1,1) = 1·0 1·1 1·1 4 ·0·1 5·0·1 6 ·1·1 7·1·1 = 0. Получим: 6 = 0.
ШАГ 4. (х,у,z) = (1,0,0). f(1,0,0)=1·1 1·0 1·0 4·1·0 5·1·0 6 ·0·0 7·1·0·0 =1. Получим: 1 = 1.
ШАГ 5. (х,у,z) = (1,0,1). f (1,0,1) =1·1 1·0 1·1 4·1·0 5·1·1 0·0·1 7·1·0·1=1. Получим: 5 = 1.
ШАГ 6. (х,у,z) = (1,1,0). f (1,1,0) =1·1 1·1 1·0 4·1·1 1·1·0 1·1·0 7·1·1·0 =1. Получим: 4 = 1.
ШАГ 7. (х,у,z) = (1,1,1). f (1,1,1) =1·1 1·1 1·1 1·1·1 1·1·1 1·1·1 7·1·1·1 =1. Получим: 7 = 1.
Подставляя поочередно найденные значения коэффициентов 0, 3, 2, 6, 1, 5, 4, 7 в первоначальную формулу, получим искомое представление функции в виде полинома Жегалкина: f = х у z ху хz хуz.
В методе неопределенных коэффициентов используется прямое вычисление значений коэффициентов из уравнений. Для булевых функций c малым числом единиц в векторе значений проще использовать СДНФ либо СВНФ.
Метод построения полинома Жегалкина по СДНФ (СВНФ)
Для построения полинома для заданной булевой функции f(хn). выполняют следующие действия.
1. Вначале строят СДНФ (СВНФ) функции f(хn), в которых используется базисный набор {,,} ({ , }).
2. Преобразуются внутренние функции построенной формы. С использованием эквивалентных преобразований
а) х = х 1,
б) х у = 1 х у ху,
осуществляется переход к базису {0, 1, , } во всех внутренних функциях формы.
3. Заменяется внешняя функция формы. СДНФ и СВНФ представляют собой суммы конституент единицы, которые никогда не принимают значение 1 на одинаковых наборах. Поэтому для соединения данных конституент вместо эквивалентного правила x y = х у ху и вышеприведенной для функции Вебба формулы б) можно использовать неэквивалентные в общем случае правила замены:
(К1 , ... , Кр ) = К1 ... Кр ,
( К1 , ... , Кр ) = К1 ... Кр .
4. После раскрытия скобок в произведениях, получаемых во внутренних функциях, их общая сумма упрощается путем устранения из нее парных слагаемых. При этом используется эквивалентное преобразование:
а) х х = 0.
5. Полученная в итоге сумма произведений над множеством переменных Х=(х1, ... , хn) является искомым полиномом Жегалкина функции f(хn).
Пример 6. Построить полином Жегалкина для функции f = (01010010) из Примера 1 с использованием ее СДНФ.
Решение. Внутренние конъюнкции элементарных наборов и СДНФ будут следующие:
К 1 = x y z, К 2 = x y z , К 3 = x yz.
СДНФ имеет вид:
f =x y z x y z x yz = (x y z , x y z, x yz).
Преобразуем внутренние конъюнкции, выполняя замену х = х 1 и раскрывая скобки в произведениях:
К1 = (x 1) (y 1) z = (ху х у 1) z = х у z х z у z z,
К2 = (x 1) y z = х у z у z ,
К3 = x y (z 1) = х у z х у .
Заменяя внешнюю функцию логического сложения конституент единицы сложением по модулю 2, получим сумму произведений следующего вида:
f = х у z х z у z z х у z у z х у z х у .
Устраняя из нее парные слагаемые по правилу х х = 0, получим в итоге искомый полином Жегалкина:
f = z х у х z х у z.
Замечание. Булевы функции могут быть разложены в полином Жегалкина, в отличие от нормальных форм, единственным способом. Это несложно доказать от противного.
ЗАДАЧИ
1. Привести пример задания одной и той же булевой функции при помощи двух различных ДНФ.
2. Построить СДНФ и СВНФ следующих функций:
а) ((х у) z)х; б) (х у) z; в) (ху уz); г) (01101000); д) (1001101000001001); е) (0001001001010001) ; ж) (0100101000101001).
3. Построить СКНФ и СШНФ следующих функций:
а) ((х у) z); б) (ху) z; в) (ху уz); г) (11101001); д) (0111101011101101) ; е) (1011001101110111) ; ж) (1100110001011111).
4. Доказать эквивалентность в общем случае правил:
а) х = х 1;
б) х у = 1 х у х у;
в) x y = х у х у;
г) x х = 0.
5. Доказать справедливость для конституент К1 , ... , Кр СДНФ и СВНФ правил замены:
а) (К1 , ... , Кр ) = К1 ... Кр ;
б) ( К1 , ... , Кр ) = К1 ... Кр .
6. Построить методом неопределенных коэффициентов полиномы Жегалкина следующих функций: а)ху z; б) ( х у ) (у х); в) (х у) (х у); г) (ху х) х у ; д) х (у z) ; е) (ху) (х z); ж) (х у) (х z).
7. Построить при помощи СДНФ полиномы Жегалкина функций 6а) — ж).
8. Построить при помощи СВНФ полином Жегалкина функций 6 а) —ж).
9. Доказать единственность разложения булевых функций в полином Жегалкина.