Это в лекции 3. |
Эквивалентность формул и нормальные формы
Многочлены Жегалкина
Многочлены Жегалкина являются еще одним интересным подклассом формул, позволяющим однозначно представлять булевы функции.
Определение 4.4. Многочленами Жегалкина назваются формулы над множеством функций FJ={ 0, 1, *, +} (здесь * - это другое обозначение конъюнкции).
Таким образом, каждый многочлен Жегалкина (возможно, после раскрытия скобок и "приведения" подобных членов) представляет сумму (по модулю 2) положительных (монотонных) элементарных конъюнкций (т.е. элементарных конъюнкций без отрицаний). Поскольку для + и * справедливы законы ассоциативности, мы будем при записи многочлена Жегалкина опускать скобки, считая, что * связывает аргументы сильнее, чем +
Нетрудно проверить, что справедливы следующие эквивалентности:
![\begin{array}{lrcl}
(J1) & \neg X & \equiv & (X+ 1),\\
(J2) & (X_1 \wedge X_2)& \equiv & (X_1*X_2),\\
(J3) &(X_1 \vee X_2) &\equiv & (X_1*X_2 + X_1 +X_2),\\
(J4) &(X_1 + X_2)*(X_3 + X_4)& \equiv & (X_1*X_2 + X_1*X_3 + X_2*X_3 + X_2*X_4) .
\end{array}](/sites/default/files/tex_cache/539d2c22f44209f29d4aba94d63254c6.png)
Из этих эквивалентностей и теоремы 4.1 легко получить первую часть следующего утверждения.
Теорема 4.3. Для любой булевой функции существует задающий ее многочлен Жегалкина. Он единственен с точностью до перестановок слагаемых и порядка переменных в конъюнкциях.
Доказательство Существование такого многочлена следует из того,
что для любой ДНФ или КНФ можно с помощью указанных эквивалентностей
найти эквивалентный многочлен Жегалкина: (J1)-(J3) позволяют заменять все
вхождения и
на + и *, а (J4) - перемножать получившиеся после такой замены многочлены.
Для доказательства единственности представления подсчитаем
число различных многочленов Жегалкина от переменных.
Каждая положительная элементарная конъюнкция имеет вид Xi1 * ... * Xik
,
где 1 <= i1 < ... < ik <= n
.
Таких конъюнкций столько же, сколько подмножеств множества
, т.е. 2n
.
(Конъюнкция, соответствующая пустому подмножеству переменных равна 1).
Упорядочим их произвольным образом (например, лексикографически):
.
Tогда каждый многочлен Жегалкина единственным образом можно представить как сумму
![\alpha_1 * K_1 + \alpha_2 * K_2 +\ldots +\alpha_{2^n} *K_{2^n},](/sites/default/files/tex_cache/55db6a8df74c1e7e0c0286087987651e.png)
где каждый из коэффициентов равен 0 или 1. Следовательно,
число многочленов Жегалкина равно
, т.е. числу всех булевых
функций от n переменных. Поэтому каждая функция задается в
точности одним многочленом Жегалкина.
Пример 4.3. Пусть функция f(X1,X2,X3)
задается ДНФ .
Найдем полином Жегалкина, который также задает эту функцию.
Сначала заменяем на *, а затем,применяя
эквивалентность (J1), устраняем отрицания и получаем:
![\Phi \equiv X_1 * (X_2+1) \vee (X_1+1)* X_2 *(X_3+1).](/sites/default/files/tex_cache/ceb6d1b489207f2771d27ff25ffdb2f0.png)
Перемножив по правилам (J4), получим:
![\Phi \equiv (X_1*X_2+X_1) \vee (X_1* X_2 *X_3 + X_1*X_2 + X_2*X_3+
X_2)](/sites/default/files/tex_cache/e54ce2c14f9957bac7fc3bc3c7dea7b6.png)
Эквивалентность (J3) позволяет устранить
![\Phi \equiv (X_1*X_2+X_1) *(X_1* X_2 *X_3 + X_1*X_2 +\\+
X_2*X_3+X_2)+ (X_1*X_2+X_1) + \\+(X_1* X_2 *X_3 + X_1*X_2 + X_2*X_3+X_2).](/sites/default/files/tex_cache/d25df5197efbe2d72d90d451b26d7513.png)
Снова, используя (J4), перемножим первые две скобки и устраним повторения переменных в конъюнкциях:
![\Phi \equiv (X_1* X_2 *X_3 + X_1*X_2 +X_1*X_2*X_3+\\+X_1* X_2 *X_3 +X_1*X_2
+X_1* X_2 *X_3 +X_1*X_2 +X_1*X_2 )+\\+ (X_1*X_2+X_1) + (X_1* X_2 *X_3 + X_1*X_2 + X_2*X_3+X_2).](/sites/default/files/tex_cache/d85db8bc69d7ea3d1bf5b525189d855a.png)
Упростим эту сумму, используя эквивалентности: и
. В результате получим многочлен Жегалкина
![P(X_1,X_2,X_3)= X_1 +X_2+ X_2*X_3 + X_1*X_2*X_3](/sites/default/files/tex_cache/f852c2588b92827f41ef7b71e3a4fa08.png)
Если функция f(X1, ..., Xn)
задана таблично, то для построения реализующего ее многочлена Жегалкина можно применить метод
неопределенных коэфициентов. Сопоставим i -ому набору значений переменных в таблице
положительную конъюнкцию
переменных, равных 1 в этом
наборе.
В частности, K1 - пустая конъюнкция, K2 = Xn,
K3 = Xn-1,
K4 = (Xn * Xn-1).
и т.д. Тогда для получения нужного многочлена Жегалкина достаточно
определить все коэффициенты
, в
выражении
![f(X_1, \ldots, X_n)=\alpha_1 * K_1 + \alpha_2 * K_2 +\ldots
+\alpha_{2^n} *K_{2^n},](/sites/default/files/tex_cache/1d591b14fcf2b0d4a4defd153260ebc7.png)
Подставляя в это равенство значения переменных из набора ,
мы получим 2n линейных уравнений относительно 2n
неизвестных коэффициентов
. Решив эту систему, получим требуемый многочлен
Жегалкина. Эта система треугольная и легко решается "сверху-вниз":
каждое
определяется по значениям
из уравнения, соответствующего
набору
.
Пример 4.4. Рассмотрим в качестве примера функцию f(X1, ..., Xn), заданную следующей таблицей.
X1 | X2 | X3 | f(X1, X2, X3) |
---|---|---|---|
0 | 0 | 0 | 1 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 |
1 | 1. | 1 | 1 |
Многочлен Жегалкина для нее (как и для любой функции от 3-х переменных) представляется в виде
![p(X_1, X_2, X_3)=\alpha_0 + \alpha_1 * X_1 +\alpha_2*X_2 +\alpha_3 *
X_3 + \alpha_{12} *X_1*X_2 +\\+ \alpha_{13}*X_1*X_3 +\alpha_{23}*X_2*X_3 + \alpha_{123}*X_1*X_2*X_3](/sites/default/files/tex_cache/c68abe65184acb59bfd6d48e9b75f898.png)
В этом представлении в индексах у коэффициентов
перечислены переменные, входящие в соответствующие конъюнкции.
Последовательно подставляя значения переменных и f из таблицы, получаем:
![\begin{array}{l}
p(0,0,0)=\alpha_0=1;\\
p(0,0,1)=\alpha_0 + \alpha_3=0\ \Rightarrow \alpha_3 = 1;\\
p(0,1,0)=\alpha_0 +\alpha_2=0 \ \Rightarrow \alpha_2 = 1;\\
p(0,1,1)=\alpha_0 +\alpha_2 + \alpha_3+ \alpha_{23}=0 \ \Rightarrow \alpha_{23} = 1;\\
p(1,0,0)=\alpha_0 +\alpha_1=1 \ \Rightarrow \alpha_1 = 0;\\
p(1,0,1)=\alpha_0 +\alpha_1 + \alpha_3+ \alpha_{13}=0 \ \Rightarrow \alpha_{13} = 0;\\
p(1,1,0)=\alpha_0 +\alpha_1 + \alpha_2+ \alpha_{12}=0 \ \Rightarrow \alpha_{12} = 0;\\
p(1,1,1)=\alpha_0 +\alpha_1 + \alpha_2+ \alpha_3+\alpha_{12}+\alpha_{13}+\alpha_{23} +\alpha_{123}=1 \ \Rightarrow \alpha_{123} = 1.\\
\end{array}](/sites/default/files/tex_cache/19f5db4a00bf0491fe0051c2107cc263.png)
Следовательно, функция f(X1, X2, X3) представляется многочленом Жегалкина
![p_f(X_1, X_2, X_3)=1 + X_3 +X_2 +X_2*X_3
+X_1*X_2*X_3.](/sites/default/files/tex_cache/09ef2361dcfd0c18213e6347b3e08eb2.png)
Задачи
Задача 4.1. Проверьте все приведенные в "лекции 4" эквивалентности (1) - (8), непосредственно вычисляя функции, представляемые их левыми и правыми частями.
Задача 4.2. Назовем логическим произведением формулу вида (в этом выражении
использованы соглашения о сокращении записи!). Ее подформулы
, , будем называть сомножителями.
Аналогично, логической суммой назовем формулу вида
Ее подформулы
,, будем называть слагаемыми.
Покажите, что из основных тождеств можно вывести следующие правила преобразования логических произведений и сумм.
- Если в логическом произведении один из сомножителей равен 0, то и все произведение равно 0.
- Если в логической сумме одно из слагаемых равно 1, то и вся сумма равна 1.
- Если в логическом произведении n >= 2 и есть сомножитель, равный 1, то его можно вычеркнуть.
- Если в логической сумме n >= 2 и есть слагаемое, равное 0, то его можно вычеркнуть.
Задача 4.3. Используя основные тождества, доказать эквивалентность следующих пар формул.
-
и
-
и
;
-
и
.
Задача 4.4. Докажите теорему 4.1, проверив, что
для любого набора значений аргументов выполнены равенства
и
.
Задача 4.5.
- Предложите процедуру, которая по произвольной элементарной конъюнкции строит эквивалентную ей совершенную ДНФ.
- Предложите процедуру, которая по произвольной элементарной дизъюнкции строит эквивалентную ей совершенную КНФ.
Задача 4.6.
Докажите, что для любого k <= n каждую булеву функцию можно представить в виде
![f(X_1, \ldots, X_k, X_{k+1}, \ldots , X_n) = \\ \bigvee_{(\sigma_1, \ldots, \sigma_k)\in B^k} X_1^{\sigma_1} \wedge \ldots X_k^{\sigma_k} \wedge f(\sigma_1, \ldots, \sigma_k, X_{k+1}, \ldots , X_n)](/sites/default/files/tex_cache/b1d6188c03848ca2dd999514389c4177.png)
Такое представление называется разложением по
.
При k=n из него получается совершенная ДНФ из теоремы
Задача 4.7. Докажите предложение 4.1, используя индукцию по общему количеству функций и + в формуле.
Задача 4.8. Как изменить (3)-ий, (4)-ый и (5)-ый этапы процедуры "Приведение к совершенной ДНФ ", чтобы в результате получить процедуру "Приведение к совершенной КНФ ", которая по произвольной формуле строит эквивалентную совершенную КНФ.
Задача 4.9. Найти эквивалентные сокращенные ДНФ и доказать эквивалентность следующих пар формул:
-
.
-
.
-
.
Задача 4.10. Используя основные эквивалентности, найти эквивалентные многочлены Жегалкина и доказать эквивалентность следующих формул:
![\Phi= ( ( Z \wedge(X \rightarrow Y) )\vee \neg (\neg X \rightarrow Z)),\ \ \ \Psi = (X \rightarrow ( Y\wedge Z ))](/sites/default/files/tex_cache/6ea4a5d43b1a3a6ff407decb3bcc602c.png)
Задача 4.11. Найти сокращенную дизъюнктивную нормальную форму и многочлен Жегалкина (методом неопределенных коэффициентов) для следующих функций от трех аргументов. Считаем, что наборы их аргументов упорядочены лексикографически и значения на них задаются последовательностью 8 нулей и единиц.
- f=(0010 1100)
- f=(1110 1100)
- f=(1100 0011)
- f=(0110 1011)