Полином Жегалкина. Методы построения.
Полином (многочлен) Жегалкина представляет собой полином, коэффициентами которого являются числа $0$ или $1$, причем в качестве операций умножения и сложения выступают соответственно конъюнкция и сумма по модулю $2$. Например, для булевой функции $f\left(x_1,\ x_2,\ x_3\right)$ от трех переменных $x_1,\ x_2,\ x_3$ полином Жегалкина будет иметь следующий вид:
$$f\left(x_1,\ x_2,\ x_3\right)=a_0\bigoplus a_1x_1\bigoplus a_2x_2\bigoplus a_3x_3\bigoplus a_<12>x_1x_2\bigoplus a_<13>x_1x_3\bigoplus a_<23>x_2x_3\bigoplus a_<123>x_1x_2x_3.$$
Коэффициенты $a_0,\ a_1,\ \dots ,\ a_<123>\in \left\<0,\ 1\right\>$, то есть могут принимать значения либо $0$, либо $1$ в зависимости от того, какое значение принимает булева функция $f\left(x_1,\ x_2,\ x_3\right)$ на том или ином наборе значений переменных.
С помощью полинома Жегалкина можно представить любую булеву функцию, причем единственных образом. Поэтому можно сказать, что полином Жегалкина является еще одним способом представления булевых функций в алгебре операций $\bigoplus $ — суммы по модулю $2$, $\cdot $ — конъюнкции и константы $1$.
Операция $\bigoplus $ имеет и другие названия: сумма Жегалкина, неравнозначность, исключающее ИЛИ-НЕ. Иногда, для удобства ее обозначения используют привычную запись сложения $+$, но не стоит путать с дизъюнкцией и, тем более, с обычной арифметической операцией сложения. Таблица истинности данной операции имеет вид:
$$\begin
\hline
x & y & x\bigoplus y \\
\hline
0 & 0 & 0 \\
\hline
0 & 1 & 1 \\
\hline
1 & 0 & 1 \\
\hline
1 & 1 & 0 \\
\hline
\end
Сумма $x\bigoplus y$ принимает истинное значение тогда и только тогда, когда истинно одно и только одно составляющее высказывание. Если сравнить таблицы истинности основных логических операций, то можно заметить, что $x\bigoplus y=\overline
Для двух введенных операций $\bigoplus ,\ \cdot $ (суммы по модулю 2 и конъюнкции) выполняются все логические законы:
- Коммутативность: $x\bigoplus y=y\bigoplus x$;
- Ассоциативность: $\left(x\bigoplus y\right)\bigoplus z=x\bigoplus \left(y\bigoplus z\right)$, то есть результат $x\bigoplus y\bigoplus z$ не зависит от расстановки скобок;
- Дистрибутивность: $x\left(y\bigoplus z\right)=xy\bigoplus xz$;
- $x\bigoplus x=0$;
- $0\bigoplus x=x$;
- $\overline
=x\bigoplus 1$.
Для построения полинома Жегалкина можно использовать различные методы:
- Метод неопределенных коэффициентов;
- Метод треугольника Паскаля;
- Преобразование ДНФ;
- Преобразование СДНФ.
Метод неопределенных коэффициентов
Найдем полином Жегалкина для функции $f\left(x_1,\ x_2,\ x_3\right)=\left(x_1x_2\vee x_3\right)\to <\overline
$\begin
\hline
x_1 & x_2 & x_3 & x_1x_2 & x_1x_2\vee x_3 & f\left(x_1,\ x_2,\ x_3\right)=\left(x_1x_2\vee x_3\right)\to <\overline
0 & 0 & 0 & 0 & 0 & 1 \\
\hline
0 & 0 & 1 & 0 & 1 & 1 \\
\hline
0 & 1 & 0 & 0 & 0 & 1 \\
\hline
0 & 1 & 1 & 0 & 1 & 0 \\
\hline
1 & 0 & 0 & 0 & 0 & 1 \\
\hline
1 & 0 & 1 & 0 & 1 & 1 \\
\hline
1 & 1 & 0 & 1 & 1 & 0 \\
\hline
1 & 1 & 1 & 1 & 1 & 0 \\
\hline
\end
Общий вид полинома Жегалкина для функции $f\left(x_1,\ x_2,\ x_3\right)$ трех переменных $x_1,\ x_2,\ x_3$:
$$f\left(x_1,\ x_2,\ x_3\right)=a_0\bigoplus a_1x_1\bigoplus a_2x_2\bigoplus a_3x_3\bigoplus a_<12>x_1x_2\bigoplus a_<13>x_1x_3\bigoplus a_<23>x_2x_3\bigoplus a_<123>x_1x_2x_3.$$
Последовательно подставляем наборы значений переменных и находим коэффициенты $a_0,\ a_1,\ \dots ,\ a_<123>$.
$f\left(0,\ 0,\ 0\right)=a_0=1;$
$f\left(0,\ 0,\ 1\right)=a_0\bigoplus a_3=1\Rightarrow 1\bigoplus a_3=1\Rightarrow a_3=0;$
$f\left(0,\ 1,\ 0\right)=a_0\bigoplus a_2=1\Rightarrow 1\bigoplus a_2=1\Rightarrow a_2=0;$
$f\left(0,\ 1,\ 1\right)=a_0\bigoplus a_2\bigoplus a_3\bigoplus a_<23>=0\Rightarrow 1\bigoplus 0\bigoplus 0\bigoplus a_<23>=0\Rightarrow 1\bigoplus a_<23>=0\Rightarrow a_<23>=1;$
$f\left(1,\ 0,\ 0\right)=a_0\bigoplus a_1=1\Rightarrow 1\bigoplus a_1=1\Rightarrow a_1=0.$
$f\left(1,\ 0,\ 1\right)=a_0\bigoplus a_1\bigoplus a_3\bigoplus a_<13>=1\Rightarrow 1\bigoplus 0\bigoplus 0\bigoplus a_<13>=1\Rightarrow 1\bigoplus a_<13>=1\Rightarrow a_<13>=0;$
$f\left(1,\ 1,\ 0\right)=a_0\bigoplus a_1\bigoplus a_2\bigoplus a_<12>=0\Rightarrow 1\bigoplus 0\bigoplus 0\bigoplus a_<12>=0\Rightarrow 1\bigoplus a_<12>=0\Rightarrow a_<12>=1;$
$f\left(1,\ 1,\ 1\right)=a_0\bigoplus a_1\bigoplus a_2\bigoplus a_3\bigoplus a_<12>\bigoplus a_<13>\bigoplus a_<23>\bigoplus a_<123>=0\Rightarrow 1\bigoplus 0\bigoplus 0\bigoplus 0\bigoplus 1\bigoplus 0\bigoplus 1\bigoplus a_<123>=0\Rightarrow 1\bigoplus a_<123>=0\Rightarrow a_<123>=1;$
Подставляя найденные коэффициенты, получаем полином Жегалкина:
$$f\left(x_1,\ x_2,\ x_3\right)=1\bigoplus x_1x_2\bigoplus x_2x_3\bigoplus x_1x_2x_3.$$
Метод треугольника Паскаля
Построим полином Жегалкина для функции из предыдущего метода, используя треугольник Паскаля.
Поясним, как заполняется треугольник Паскаля. Верхняя строка треугольника задает вектор значений булевой функции $f=\left(11101100\right)$. В каждой строке, начиная со второй, любой элемент такого треугольника вычисляется как сумма по модулю $2$ двух соседних элементов предыдущей строки. Так, элементы второй строки: $1\bigoplus 1=0,\ 1\bigoplus 1=0,\ 1\bigoplus 0=1,\ 0\bigoplus 1=1,\ 1\bigoplus 1=0,\ 1\bigoplus 0=1,\ 0\bigoplus 0=0$. Аналогично вычисляются элементы других строк.
Левой стороне треугольника Паскаля соответствуют наборы значений переменных исходной функции $f\left(x_1,\ x_2,\ x_3\right)$. Соединяя знаком конъюнкции переменные, значения которых в наборе равны $1$, мы получим слагаемое в полиноме Жегалкина. Набору $\left(000\right)$ соответствует $1$, набору $\left(001\right)$ соответствует $x_3$, и т.д.
Поскольку единицам левой стороны треугольника соответствуют слагаемые $1,\ x_2x_3,\ x_1x_2,\ x_1x_2x_3$, то полином Жегалкина:
$$f\left(x_1,\ x_2,\ x_3\right)=1\bigoplus x_2x_3\bigoplus x_1x_2\bigoplus x_1x_2x_3.$$
Преобразование ДНФ
Используя основные законы алгебры логики, приведем сначала данную функцию к ДНФ.
Далее в полученной ДНФ необходимо «избавиться» от дизъюнкции, используя законы де Моргана:
Заменяем каждое отрицание $\overline
$\overline<<\overline<<\overline
Преобразование СДНФ
$\begin
\hline
x_1 & x_2 & x_3 & f\left(x_1,\ x_2,\ x_3\right) \\
\hline
0 & 0 & 0 & 1 \\
\hline
0 & 0 & 1 & 1 \\
\hline
0 & 1 & 0 & 1 \\
\hline
0 & 1 & 1 & 0 \\
\hline
1 & 0 & 0 & 1 \\
\hline
1 & 0 & 1 & 1 \\
\hline
1 & 1 & 0 & 0 \\
\hline
1 & 1 & 1 & 0 \\
\hline
\end
Для построения СДНФ по таблице истинности выбираем наборы, на которых функция $f$ принимает значение, равное 1. Если значение переменной в этом наборе равно 0, то она берется с отрицанием, если значение переменной равно 1, то переменная берется без отрицание. Соединив знаком конъюнкции переменные соответствующего набора, получим элементарную конъюнкцию. Тогда дизъюнкция всех таких элементарных конъюнкций есть СДНФ.
Чтобы построить полином Жегалкина через СДНФ, необходимо исключить операции дизъюнкции и отрицания, затем раскрыть скобки.
$f\left(x_1,\ x_2,\ x_3\right)=<\overline
Источник
Постройте многочлен жегалкина двумя способами
Рассмотрим алгоритмы построения полинома Жегалкина булевой функции, заданной различными способами, а именно: совершенной ДНФ, произвольной ДНФ, формулой и таблицей истинности.
Алгоритм построения полинома Жегалкина по СовДНФ (основан на доказательстве теоремы о существовании полинома Жегалкина).
Начало. Задана совершенная ДНФ функции f(x1, …, xn).
Шаг 1. Заменяем каждый символ дизъюнкции на символ дизюнкции с исключением.
Шаг 2. Заменяем каждую переменную с инверсией x равносильной формулой x 1.
Шаг 3. Раскрываем скобки.
Шаг 4. Вычеркиваем из формулы пары одинаковых слагаемых.
Конец. Получен полином Жегалкина функции f(x1, …, xn).
Пример. Найдем полином Жегалкина мажоритарной булевой функции по ее совершенной ДНФ.
Алгоритм построения полинома Жегалкина по ДНФ (основан на равносильности K1 K2= K1
K2
K1K2).
Начало. Задана произвольная ДНФ функции f(x1, …, xn).
Шаг 1. Разбиваем ДНФ на пары конъюнкций, предпочтительно ортогональных (если число конъюнкций нечетно, одна из них остается без пары).
Шаг 2. Заменяем дизъюнкцию каждой пары конъюнкций K1 K2 формулой K1
K2
K1K2 или формулой K1
K2, если K1 и K2 ортогональны.
Шаг 3. В полученной формуле находим очередную дизъюнкцию A1 A2и заменяем ее формулой A1
A2
A1A2. Повторяем шаг 3 до тех пор, пока это возможно.
Шаг 4. Заменяем каждую переменную с инверсией x равносильной формулой x 1.
Шаг 5. Раскрываем скобки.
Шаг 6. Вычеркиваем из формулы пары одинаковых слагаемых.
Конец. Получен полином Жегалкина функции f(x1, …, xn).
Пример. Найдем полином Жегалкина мажоритарной функции по ДНФ.
Отметим, что полиномы мажоритарной функции, полученные в двух последних примерах, совпадают с точностью до порядка конъюнкций, и это естественно (по теореме о единственности полинома Жегалкина).
Способ 1 основан на предварительном преобразовании формулы в ДНФ (любым известным нам способом). Затем ДНФ преобразуется в полином Жегалкина по только что изученному алгоритму.
Примеры. Получим полиномы Жегалкина двух элементарных булевых функций: импликации и эквивалентности, представив их предварительно кратчайшими ДНФ.
Аналогично можно получить полиномы Жегалкина всех элементарных булевых функций (оставим читателю их вывод).
Константы 0 и 1, тождественная функция, а также конъюнкция ab и дизъюнкция с исключением ab уже являются полиномами Жегалкина. Полином Жегалкина инверсии a =1
a.
Заметим, что некоторые из приведенных полиномов могут быть получены гораздо проще, в частности,
Способ 2. Если булева функций задана произвольной формулой, то ее полином Жегалкина можно получить подстановкой в формулу вместо элементарных булевых функций их полиномов.
Пример. Найдем полином Жегалкина мажоритарной функции, заданной формулой:
[ подставим в формулу полином Жегалкина штриха Шеффера 1 ab при a=(x
y)
z, b=x
y ]
[ подставим полиномы Жегалкина обратной импликации 1 b
ab при a=x
y, b=z и импликации 1
a
ab при a=x, b= y ]
[ подставим полином Жегалкина эквивалентности 1 x
y, раскроем скобки, и вычеркнем появившиеся при этом пары одинаковых слагаемых ]
[заменим инверсию ее полиномом Жегалкина, раскроем скобки и вычеркнем пары одинаковых слагаемых ]
Полином, естественно, совпадает с полученными ранее по совершенной и произвольной ДНФ.
Способ 3. Если булева функций задана произвольной формулой, то ее полином Жегалкина можно получить, используя специальное разложение функции.
Определение. Разложением Дэвио называется следующее разложение булевой функции f(x1, …, xn по переменной xi:
Разложение Дэвио непосредственно следует из разложения Шеннона, если учесть, что слагаемые в последнем ортогональны, и что x i=xi 1.
Пример. Найдем разложение Дэвио по переменной x мажоритарной булевой функции, заданной формулой.
Для получения полинома Жегалкина необходимо продолжить разложение подформул, не являющихся дизъюнкцией с исключением элементарных конъюнкций, пока не получится формула над <,
, – >. Если в такой формуле заменить инверсии x на x
1, раскрыть скобки и вычеркнуть пары одинаковых слагаемых, то получится полином Жегалкина.
Пример. Продолжив предыдущий пример, получим полином Жегалкина мажоритарной функции. Для этого разложим подформулы (y z) / y и y
z по переменной y:
Полином Жегалкина, естественно, совпадает с полученными ранее.
Алгоритм построения полинома Жегалкина по таблице истинности (основан на методе неопределенных коэффициентов).
Продемонстрируем идею метода на примере произвольной булевой функции двух аргументов f(x,y). Представим ее полиномом Жегалкина в форме с коэффициентами
Подставив в данное равенство наборы значений аргументов, получим систему из четырех линейных уравнений с четырьмя неизвестными коэффициентами: c0, c1 c2, c3.
f(0,0) = c0 c10
c20
c30 0 = c0
f(0,1) = c0 c11
c20
c30 1 = c0
c1
f(1,0) = c0 c10
c21
c31 0 = c0
c2
f(1,1) = c0 c11
c21
c31 1 = c0
c1
c2
c3
Заметим, что наборы подставлены в равенство в естественном порядке, и система имеет треугольный вид: в первом уравнении обратились в ноль все слагаемые, следующие за c0, во втором – следующие за c1 и так далее. Значит, коэффициент c0 можно получить из первого уравнения и подставить его в остальные. Тогда c1 можно получить из второго уравнения, и так далее.
В общем случае для функции n аргументов получается система треугольного вида из 2 n линейных уравнений с 2 n неизвестными – коэффициентами полинома Жегалкина.
Пример. Найдем полином Жегалкина мажоритарной булевой функции, заданной таблицей истинности, последовательно вычисляя коэффициенты полинома и подставляя их в остальные уравнения.
Из первого уравнения следует, что c0=0. Из второго и третьего уравнений следует, что c1=0 и c2=0, значит, c1z и c2y тождественно равны нулю. Из четвертого уравнения получаем c3=1, значит, надо вычислять значения конъюнкции c3yz в остальных уравнениях. Аналогично получаем c4=0, c5=1, c6=1 и c7=0. Найден вектор коэффициентов полинома Жегалкина мажоритарной функции π=00010110, и сам полином P=yz xz
xy, который, естественно, совпадает с полученными ранее. •
Источник