§ 2.4. Полнота. Построение суперпозиций булевых функций 109
Выразим дизъюнкцию и отрицание через П(а, Ь, с, d); тогда
согласно разложению Шеннона и закону де Моргана любую булеву
функцию f(x\, х2, ..., хп) можно выразить через S = {□}:
а = □(«, а, а, а);
а V /3 = cm V /3/3 = □(«, /3, /3, а) =
= □ (□(<*, а, а, а), /3, □(/?, /3, /3, /3), Ш(а, а, а, а)).
В общем случае для установления полноты системы S буле
вых функций /, (S в Р2) используют критерий полноты Поста-
Яблонского.
Определим предварительно пять классов булевых функций.
Классом Ко булевых функций fi(xi, х2, ..., хп), сохраняющих
константу 0, называется множество функций вида
{/»'(* 1) х2) ■ • •) хп)/ /«(0) 0, ..., 0) = 0}.
Классом К \ булевых функций х2, хп), сохраняющих
константу 1, называется множество функций вида
Ш * 1- х2, • ■ •, хп)/ fi(l, 1, . . 1) = 1 }.
На примере системы S — {□ } рассмотрим тесты распознавания функций,
обладающих этими свойствами:
□(а, Ь, с, tf) = а5 V Ьс,
□(О, 0, 0, 0) = Об V00 = 1 V0 = 1, D(o, Ь, с, d) i Ко,
□(1, 1, 1, 1) = I! V II = О V 0 = 0, 0(0 , Ь, с, d) i Ki.
Классом К л линейных булевых функций /,-(*!, х2, ..., хп) на
зывается множество функций вида
) х 2) • • ч хп)/ ft(x 1) х 2) • • •) хп) = с0 Ф ^ ] cixi J )
i
где ® — знак операции сложения по модулю 2: 000 = 0, 0® 1 = 1,
1Ф 0 = 1, 1® 1 = 0.
Установим, является ли булева функция D (a, Ь, с, d) линейной. Предполо
жим, что она линейная и, следовательно, представима в виде
□ (о, Ь, с, d) = Со 0 саа 0 о,Ь © ссс 0 cjd.
Определим коэффициент со: 0 (0 , 0, 0, 0) = 1, но по предположению 0 (0 , О,
О, 0) = со. Следовательно, со = 1.
Аналогично определим коэффициенты са, сь, сс, сл, фиксируя соответствен
но наборы 1000, 0100, 0010, 0001. Имеем:
□(1, О, О, 0)=T -0V 0-0 = 0V0 = 0,
1 0 Са ■ 1 0 СЬ ■ 0 0 Сс • 0 0 Cd ■ 0 = 1 0 Са, 1 0 Со = 0 , Са — 1’,
□(о, 1, о, o)=oovi-o = ivi = i,
101-00 сь -10 сс -00 Cd -0=10 сь, 10сь = 1, сь = 0;