Основы алгебры логики

Полином Жегалкина. Теорема о представлении в виде полинома Жегалкина

Полином Жегалкина позволяет представлять функции без использования операции отрицания, что делает его удобным инструментом в задачах математической логики и криптографии. Приводятся примеры построения полинома и его применения в анализе логических схем и алгоритмов.

**Полином Жегалкина ** — многочлен над кольцом Z_2\mathbb { Z } \_2, то есть полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения — исключающее или. Полином был предложен в 1927 году Иваном Жегалкиным в качестве удобного средства для представления функций булевой логики. В зарубежной литературе представление в виде полинома Жегалкина обычно называется алгебраической нормальной формой { АНФ } .

**Теорема Жегалкина ** — утверждение о существовании и единственности представления всякой булевой функции в виде полинома Жегалкина.

Полином Жегалкина представляет собой сумму по модулю два произведений неинвертированных переменных, а также { если необходимо } константы

Формально полином Жегалкина можно представить в виде

P(X_1...X_n)=a ⊕ a_1X_1 ⊕ a_2X_2 ⊕ ... ⊕ a_nX_n ⊕ a_12X_1X_2 ⊕ a_13X_1X_3 ⊕ ... ⊕ a_1...nX_1...X_n,a…a_1…n∈ 0,1 .P(X\_1 ... X\_n) = a ~\oplus~ a\_1 X\_1 ~\oplus~ a\_2 X\_2 ~\oplus~ ... ~\oplus~ a\_n X\_n ~\oplus~ a\_ { 12 } X\_1 X\_2 ~\oplus~ a\_ { 13 } X\_1 X\_3 ~\oplus~ ... ~\oplus~ a\_ { 1 ... n } X\_1 ... X\_n, a \ldots a\_ { 1 \ldots n } \in \ { 0,1\ } .

или в более формализованном виде как:

P=a⊕⨁_1⩽i_1<…<i_k⩽nk∈1,n‾a_i_1,…,i_k∧x_i_1∧…∧x_i_k,a,a_i_1,…,i_k∈0,1.{\displaystyle P=a\oplus \bigoplus \_{\begin{array}{c}1\leqslant i\_{1}<\ldots <i\_{k}\leqslant n\\k\in {\overline {1,n}}\end{array}}a\_{i\_{1},\ldots ,i\_{k}}\wedge x\_{i\_{1}}\wedge \ldots \wedge x\_{i\_{k}},\quad a,a\_{i\_{1},\ldots ,i\_{k}}\in {0,1}.}

Примеры полиномов Жегалкина:

  • P=B⊕AB;P = B \oplus AB;

  • P=X⊕YZ⊕ABX⊕ABDYZ;P = X \oplus YZ \oplus ABX \oplus ABDYZ;

  • P=1⊕A⊕ABD.P = 1 \oplus A \oplus ABD.

Полнота

По теореме Поста, чтобы система булевых функций была полной, надо, чтобы в ней существовали

  1. Хотя бы одна функция, не сохраняющая 00;

  2. Хотя бы одна функция, не сохраняющая 11;

  3. Хотя бы одна нелинейная функция;

  4. Хотя бы одна немонотонная функция;

  5. Хотя бы одна несамодвойственная функция.

Исходя из этого, система функций ⟨∧,⊕,1⟩\bigl\langle \wedge, \oplus, 1 \bigr\rangle является полной:

x0x_0 x1x_1 …\dots xnx_n 11 ∧\land ⊕\oplus
00 00 …\dots 00 11 00 00
11 00 …\dots 00 11 00 11
⋮\vdots ⋮\vdots ⋮\vdots ⋮\vdots ⋮\vdots ⋮\vdots ⋮\vdots
11 11 …\dots 11 11 11 00
::: ::: ::: сохраняет 0 00 11 11
::: ::: ::: сохраняет 1 11 11 00
::: ::: ::: самодвойственная 00 00 00
::: ::: ::: монотонная 11 11 00
::: ::: ::: линейная 11 00 11

На основе этой системы и строятся полиномы Жегалкина.

Существование и единственность представления { теорема Жегалкина }

**Теорема Жегалкина:**Каждая булева функция единственным образом представляется в виде полинома Жегалкина.

Заметим, что различных булевых функций от nn переменных 22n2^ { 2^n } штук. При этом конъюнкций вида x_i_1…x_i_kx\_ { i\_1 } \ldots x\_ { i\_k } существует ровно 2n2^n, так как из nn возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 00 или 11, то есть существует 22n2^ { 2^n } различных полиномов Жегалкина от nn переменных.

Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него { любой один, если таких несколько } . Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.

Построение полинома Жегалкина

Существует несколько способов построения полинома Жегалкина.

По таблице истинности

Пусть для функции f(x_1,x_2,…,x_n)f(x\_1,x\_2,\dots,x\_n) задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты с учётом того, что a⊕1=aˉa \oplus 1 = \bar { a }, а a⊕0=aa \oplus 0 = a. За каждую подстановку находим только один коэффициент.

**Пример:**Дана функция f(x_1,x_2,x_3,x_4)f(x\_1,x\_2,x\_3,x\_4) и её таблица истинности:

x1x_1 x2x_2 x3x_3 x4x_4 f(x1,x2,x3,x4)f(x_1,x_2,x_3,x_4)
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 0
0 1 1 0 1
0 1 1 1 0
1 0 0 0 1
1 0 0 1 0
1 0 1 0 0
1 0 1 1 1
1 1 0 0 1
1 1 0 1 0
1 1 1 0 1
1 1 1 1 0

Построим для неё полином Жегалкина:

f(x_1,x_2,x_3,x_4)=a_0000⊕a_1000x_1⊕a_0100x_2⊕a_0010x_3⊕a_0001x_4⊕a_1100x_1x_2⊕a_1010x_1x_3⊕a_1001x_1x_4⊕⊕a_0110x_2x_3⊕a_0101x_2x_4⊕a_0011x_3x_4⊕a_1110x_1x_2x_3⊕a_1101x_1x_2x_4⊕⊕a_1011x_1x_3x_4⊕a_0111x_2x_3x_4⊕a_1111x_1x_2x_3x_4f(x\_1,x\_2,x\_3,x\_4) = a\_ { 0000 } \oplus a\_ { 1000 } x\_1 \oplus a\_ { 0100 } x\_2 \oplus a\_ { 0010 } x\_3 \oplus a\_ { 0001 } x\_4 \oplus a\_ { 1100 } x\_1 x\_2 \oplus a\_ { 1010 } x\_1 x\_3 \oplus a\_ { 1001 } x\_1 x\_4 \oplus \\ \oplus a\_ { 0110 } x\_2 x\_3 \oplus a\_ { 0101 } x\_2 x\_4 \oplus a\_ { 0011 } x\_3 x\_4 \oplus a\_ { 1110 } x\_1 x\_2 x\_3 \oplus a\_ { 1101 } x\_1 x\_2 x\_4 \oplus \\ \oplus a\_ { 1011 } x\_1 x\_3 x\_4 \oplus a\_ { 0111 } x\_2 x\_3 x\_4 \oplus a\_ { 1111 } x\_1 x\_2 x\_3 x\_4

Так как f(0,0,0,0)=0f(0,0,0,0) = 0, то a_0000=0a\_ { 0000 } = 0.

Далее подставляем все остальные наборы в порядке возрастания числа единиц, подставляя вновь полученные значения в следующие формулы:

f(1,0,0,0)=a_0000⊕a_1000=1⇒a_1000=1f(1,0,0,0) = a\_ { 0000 } \oplus a\_ { 1000 } = 1 \Rightarrow a\_ { 1000 } = 1

f(0,1,0,0)=a_0000⊕a_0100=0⇒a_0100=0f(0,1,0,0) = a\_ { 0000 } \oplus a\_ { 0100 } = 0 \Rightarrow a\_ { 0100 } = 0

f(0,0,1,0)=a_0000⊕a_0010=0⇒a_0010=0f(0,0,1,0) = a\_ { 0000 } \oplus a\_ { 0010 } = 0 \Rightarrow a\_ { 0010 } = 0

f(0,0,0,1)=a_0000⊕a_0001=0⇒a_0001=0f(0,0,0,1) = a\_ { 0000 } \oplus a\_ { 0001 } = 0 \Rightarrow a\_ { 0001 } = 0

f(1,1,0,0)=a_0000⊕a_1000⊕a_0100⊕a_1100=1⇒a_1100=0f(1,1,0,0) = a\_ { 0000 } \oplus a\_ { 1000 } \oplus a\_ { 0100 } \oplus a\_ { 1100 } = 1 \Rightarrow a\_ { 1100 } = 0

f(1,0,1,0)=a_0000⊕a_1000⊕a_0100⊕a_1010=0⇒a_1010=1f(1,0,1,0) = a\_ { 0000 } \oplus a\_ { 1000 } \oplus a\_ { 0100 } \oplus a\_ { 1010 } = 0 \Rightarrow a\_ { 1010 } = 1

f(1,0,0,1)=a_0000⊕a_1000⊕a_0100⊕a_1001=0⇒a_1001=1f(1,0,0,1) = a\_ { 0000 } \oplus a\_ { 1000 } \oplus a\_ { 0100 } \oplus a\_ { 1001 } = 0 \Rightarrow a\_ { 1001 } = 1

f(0,1,1,0)=a_0000⊕a_0100⊕a_0010⊕a_0110=1⇒a_0110=1f(0,1,1,0) = a\_ { 0000 } \oplus a\_ { 0100 } \oplus a\_ { 0010 } \oplus a\_ { 0110 } = 1 \Rightarrow a\_ { 0110 } = 1

f(0,1,0,1)=a_0000⊕a_0100⊕a_0001⊕a_0101=0⇒a_0101=0f(0,1,0,1) = a\_ { 0000 } \oplus a\_ { 0100 } \oplus a\_ { 0001 } \oplus a\_ { 0101 } = 0 \Rightarrow a\_ { 0101 } = 0

f(0,0,1,1)=a_0000⊕a_0010⊕a_0001⊕a_0011=0⇒a_0011=0f(0,0,1,1) = a\_ { 0000 } \oplus a\_ { 0010 } \oplus a\_ { 0001 } \oplus a\_ { 0011 } = 0 \Rightarrow a\_ { 0011 } = 0

f(1,1,1,0)=a_0000⊕a_1000⊕a_0100⊕a_0010⊕a_1100⊕a_1010⊕a_0110⊕a_1110=1⇒a_1110=0f(1,1,1,0) = a\_ { 0000 } \oplus a\_ { 1000 } \oplus a\_ { 0100 } \oplus a\_ { 0010 } \oplus a\_ { 1100 } \oplus a\_ { 1010 } \oplus a\_ { 0110 } \oplus a\_ { 1110 } = 1 \Rightarrow a\_ { 1110 } = 0

f(1,1,0,1)=a_0000⊕a_1000⊕a_0100⊕a_0001⊕a_1100⊕a_1001⊕a_0101⊕a_1101=0⇒a_1101=0f(1,1,0,1) = a\_ { 0000 } \oplus a\_ { 1000 } \oplus a\_ { 0100 } \oplus a\_ { 0001 } \oplus a\_ { 1100 } \oplus a\_ { 1001 } \oplus a\_ { 0101 } \oplus a\_ { 1101 } = 0 \Rightarrow a\_ { 1101 } = 0

f(1,0,1,1)=a_0000⊕a_1000⊕a_0010⊕a_0001⊕a_1010⊕a_1001⊕a_0011⊕a_1011=1⇒a_1011=0f(1,0,1,1) = a\_ { 0000 } \oplus a\_ { 1000 } \oplus a\_ { 0010 } \oplus a\_ { 0001 } \oplus a\_ { 1010 } \oplus a\_ { 1001 } \oplus a\_ { 0011 } \oplus a\_ { 1011 } = 1 \Rightarrow a\_ { 1011 } = 0

f(0,1,1,1)=a_0000⊕a_0100⊕a_0010⊕a_0001⊕a_0110⊕a_0101⊕a_0011⊕a_0111=0⇒a_0111=1f(0,1,1,1) = a\_ { 0000 } \oplus a\_ { 0100 } \oplus a\_ { 0010 } \oplus a\_ { 0001 } \oplus a\_ { 0110 } \oplus a\_ { 0101 } \oplus a\_ { 0011 } \oplus a\_ { 0111 } = 0 \Rightarrow a\_ { 0111 } = 1

f(1,1,1,1)=a_0000⊕a_1000⊕a_0100⊕a_0010⊕a_0001⊕a_1100⊕a_1010⊕a_1001⊕a_0110⊕a_0101⊕a_0011⊕⊕a_1110⊕a_1101⊕a_1011⊕a_0111⊕a_1111=0⇒a_1111=1f(1,1,1,1) = a\_ { 0000 } \oplus a\_ { 1000 } \oplus a\_ { 0100 } \oplus a\_ { 0010 } \oplus a\_ { 0001 } \oplus a\_ { 1100 } \oplus a\_ { 1010 } \oplus a\_ { 1001 } \oplus a\_ { 0110 } \oplus a\_ { 0101 } \oplus a\_ { 0011 } \oplus \\ \oplus a\_ { 1110 } \oplus a\_ { 1101 } \oplus a\_ { 1011 } \oplus a\_ { 0111 } \oplus a\_ { 1111 } = 0 \Rightarrow a\_ { 1111 } = 1

Таким образом, полином Жегалкина выглядит так:

f(x_1,x_2,x_3,x_4)=x_1⊕x_1x_3⊕x_1x_4⊕x_2x_3⊕x_2x_3x_4⊕x_1x_2x_3x_4f(x\_1,x\_2,x\_3,x\_4) = x\_1 \oplus x\_1 x\_3 \oplus x\_1 x\_4 \oplus x\_2 x\_3 \oplus x\_2 x\_3 x\_4 \oplus x\_1 x\_2 x\_3 x\_4

Преобразование дизъюнктивной нормальной формы

Этот способ основан на том, что X⊕1=XˉX \oplus 1 = \bar { X }. Если функция задана в виде ДНФ, то можно сначала убрать дизъюнкцию, используя правило Де-Моргана, а все отрицания заменить прибавлением единицы по модулю два, после чего раскрыть скобки по обычным правилам, при этом учитывая, что четное число одинаковых слагаемых равно нулю { так как X⊕X=0X \oplus X = 0 } , а нечетное число одинаковых слагаемых равно одному такому слагаемому. Либо же можно заменить дизъюнкцию по следующему правилу:

A∨B=AB⊕A⊕BA \lor B = AB \oplus A \oplus B   (1)(1).

Если функция задана в СДНФ, то так как при любых значениях входных переменных в единицу обращается не более одного члена выражения, то достаточно просто заменить все дизъюнкции исключающим ИЛИ.

**Пример:**Дана функция в ДНФ f(x_1,x_2,x_3,x_4)=(x_1∧x_2∧¬x_3∧x_4)∨(¬x_1∧¬x_4)∨(x_1∧x_2)∨x_2f(x\_1,x\_2,x\_3,x\_4) = (x\_1 \land x\_2 \land \neg x\_3 \land x\_4) \lor (\neg x\_1 \land \neg x\_4) \lor (x\_1 \land x\_2) \lor x\_2, построим полином Жегалкина.

Запишем функцию так:

f(x_1,x_2,x_3,x_4)=x_1x_2¬x_3x_4+¬x_1¬x_4+x_1x_2+x_2f(x\_1,x\_2,x\_3,x\_4) = x\_1 x\_2 \neg x\_3 x\_4 + \neg x\_1 \neg x\_4 + x\_1 x\_2 + x\_2;

Сгруппируем слагаемые и воспользуемся преобразованием (1):

f(x_1,x_2,x_3,x_4)=(x_1x_2¬x_3x_4⊕¬x_1¬x_4⊕x_1x_2¬x_3x_4¬x_1¬x_4)+(x_1x_2⊕x_2⊕⊕x_1x_2x_2)f(x\_1,x\_2,x\_3,x\_4) = (x\_1 x\_2 \neg x\_3 x\_4 \oplus \neg x\_1 \neg x\_4 \oplus x\_1 x\_2 \neg x\_3 x\_4 \neg x\_1 \neg x\_4) + (x\_1 x\_2 \oplus x\_2 \oplus \oplus x\_1 x\_2 x\_2)

Воспользуемся свойствами конъюнкции A∧A=AA \land A = A и ¬A∧A=0\neg A \land A = 0, а также тем, что A⊕A=0A \oplus A = 0, и упростим выражение:

f(x_1,x_2,x_3,x_4)=(x_1x_2¬x_3x_4⊕¬x_1¬x_4)+x_2f(x\_1,x\_2,x\_3,x\_4) = (x\_1 x\_2 \neg x\_3 x\_4 \oplus \neg x\_1 \neg x\_4) + x\_2

Ещё раз воспользуемся преобразованием (1):

f(x_1,x_2,x_3,x_4)=x_1x_2¬x_3x_4⊕¬x_1¬x_4⊕x_2⊕(x_1x_2¬x_3x_4⊕¬x_1¬x_4)x_2f(x\_1,x\_2,x\_3,x\_4) = x\_1 x\_2 \neg x\_3 x\_4 \oplus \neg x\_1 \neg x\_4 \oplus x\_2 \oplus (x\_1 x\_2 \neg x\_3 x\_4 \oplus \neg x\_1 \neg x\_4) x\_2

Раскроем скобку по алгебраическим правилам:

f(x_1,x_2,x_3,x_4)=x_1x_2¬x_3x_4⊕¬x_1¬x_4⊕x_2⊕x_1x_2x_2¬x_3x_4⊕¬x_1x_2¬x_4f(x\_1,x\_2,x\_3,x\_4) = x\_1 x\_2 \neg x\_3 x\_4 \oplus \neg x\_1 \neg x\_4 \oplus x\_2 \oplus x\_1 x\_2 x\_2 \neg x\_3 x\_4 \oplus \neg x\_1 x\_2 \neg x\_4

Снова воспользуемся свойствами конъюнкции и исключающего ИЛИ:

f(x_1,x_2,x_3,x_4)=¬x_1¬x_4⊕x_2⊕¬x_1x_2¬x_4f(x\_1,x\_2,x\_3,x\_4) = \neg x\_1 \neg x\_4 \oplus x\_2 \oplus \neg x\_1 x\_2 \neg x\_4

Заменим отрицание на прибавление 11:

f(x_1,x_2,x_3,x_4)=(x_1⊕1)(x_4⊕1)⊕x_2⊕(x_1⊕1)x_2(x_4⊕1)f(x\_1,x\_2,x\_3,x\_4) = (x\_1 \oplus 1) (x\_4 \oplus 1) \oplus x\_2 \oplus (x\_1 \oplus 1) x\_2 (x\_4 \oplus 1)

Раскроем скобки:

f(x_1,x_2,x_3,x_4)=x_1x_4⊕x_1⊕x_4⊕1⊕x_2⊕x_1x_2x_4⊕x_1x_2⊕x_2x_4⊕x_2f(x\_1,x\_2,x\_3,x\_4) = x\_1 x\_4 \oplus x\_1 \oplus x\_4 \oplus 1 \oplus x\_2 \oplus x\_1 x\_2 x\_4 \oplus x\_1 x\_2 \oplus x\_2 x\_4 \oplus x\_2

Выкинем парные слагаемые и получим окончательную формулу:

f(x_1,x_2,x_3,x_4)=x_1x_2x_4⊕x_1x_2⊕x_1x_4⊕x_2x_4⊕x_1⊕x_4⊕1f(x\_1,x\_2,x\_3,x\_4) = x\_1 x\_2 x\_4 \oplus x\_1 x\_2 \oplus x\_1 x\_4 \oplus x\_2 x\_4 \oplus x\_1 \oplus x\_4 \oplus 1

Метод треугольника

Метод треугольника позволяет преобразовать таблицу истинности в полином Жегалкина путём построения вспомогательной треугольной таблицы в соответствии со следующими правилами:

  1. Строится полная таблица истинности, в которой строки идут в порядке возрастания двоичных кодов от 000…00000\dots00 до 111…11111\dots11.

  2. Строится вспомогательная треугольная таблица, в которой первый столбец совпадает со столбцом значений функции в таблице истинности.

  3. Ячейка в каждом последующем столбце получается путём сложения по модулю 2 двух ячеек предыдущего столбца — стоящей в той же строке и строкой ниже.

  4. Столбцы вспомогательной таблицы нумеруются двоичными кодами в том же порядке, что и строки таблицы истинности.

  5. Каждому двоичному коду ставится в соответствие один из членов полинома Жегалкина в зависимости от позиций кода, в которых стоят единицы. Например, ячейке 111111 соответствует член ABCABC, ячейке 101101 — член ACAC, ячейке 010010 — член BB, ячейке 000000 — член 11 и т.д.

  6. Если в верхней строке какого-либо столбца стоит единица, то соответствующий член присутствует в полиноме Жегалкина.

Фактически, этот метод является модификацией метода построения по таблице истинности, описанного выше. По сравнению с ним он удобнее тем, что расчёты занимают мало места и в них сложнее ошибиться, но метод треугольника требует бо́льшего количества операций.

Пример преобразования таблицы истинности в полином Жегалкина для функции трёх переменных P(A,B,C)P(A,B,C) показан на рисунке.

Чтобы получить формулу, по которой рассчитывается какой-либо коэффициент, нужно из клетки, в которой он записан, пройтись всеми возможными путями влево, до столбца ′′P′′''P'' таблицы истинности, делая ходы влево и влево-вниз, записать значения в конечных ячейках и сложить их все между собой по модулю 2.

Таким образом, в первом столбце сверху записан коэффициент a_0=P(0,0,0)a\_0 = P(0,0,0),

во втором — a_1=P(0,0,0)⊕P(0,0,1)a\_1 = P(0,0,0) \oplus P(0,0,1),

в третьем — a_2=P(0,0,0)⊕P(0,0,1)⊕P(0,0,1)⊕P(0,1,0)=P(0,0,0)⊕P(0,1,0)a\_2 = P(0,0,0) \oplus P(0,0,1) \oplus P(0,0,1) \oplus P(0,1,0) = P(0,0,0) \oplus P(0,1,0),

в четвёртом —

a_3=P(0,0,0)⊕P(0,0,1)⊕P(0,0,1)⊕P(0,0,1)⊕P(0,1,0)⊕P(0,1,0)⊕P(0,1,0)⊕P(0,1,1)==P(0,0,0)⊕P(0,1,0)⊕P(0,1,0)⊕P(0,1,1),a\_3 = P(0,0,0) \oplus P(0,0,1) \oplus P(0,0,1) \oplus P(0,0,1) \oplus P(0,1,0) \oplus P(0,1,0) \oplus P(0,1,0) \oplus P(0,1,1) = \\ = P(0,0,0) \oplus P(0,1,0) \oplus P(0,1,0) \oplus P(0,1,1),

и так далее, то есть при построении вспомогательной таблицы коэффициенты полинома просчитываются автоматически.

Преобразование Мёбиуса

Пусть задана булева функция f:Bn→B,;;B= 0;1 f: B^n \rightarrow B, ;; B=\ { 0; 1 \ }.

Любая булева функция представима в виде полинома Жегалкина, притом единственным образом.

Пусть i=(i_1,i_2,..i_n),;;i_k∈ 0;1 i = (i\_1, i\_2, .. i\_n), ;; i\_k \in \ { 0 ; 1\ }, и введем обозначение xik∼{x,if ik=11,if ik=0x^{i_k} \sim \begin{cases} x, & \text{if } i_k = 1 \\ 1, & \text{if } i_k = 0 \end{cases}

Тогда полином Жегалкина можно записать как:

f(x)=⨁_iα_i⋅x_1i_1⋅x_2i_2⋅f(x) = \bigoplus\limits\_i \alpha\_i \cdot x\_1^ { i\_1 } \cdot x\_2^ { i\_2 } \cdot…\dots⋅x_ni_n\cdot x\_n^ { i\_n }, где α_i∈ 0;1 \alpha\_i \in \ { 0; 1 \ }.

Множество коэффициентов  α_i \ { \alpha \_i\ } можно рассматривать как функцию α\alpha, заданной на множестве индексов i=(i_1,i_2,…i_n)i = (i\_1, i\_2, \dots i\_n), то есть α:i↦α_i\alpha: i \mapsto \alpha\_i.

Очевидно, функцию ff можно записать и следующим образом: f(x)=⨁_iα_i⋅[x_1,;f(x) = \bigoplus \limits\_i \alpha\_i \cdot [x\_1 , ; если ;;i_1]⋅[x_2,;;; i\_1] \cdot [x\_2 , ; если ;;i_2]⋅;; i\_2] \cdot…\dots⋅[x_n,;\cdot [x\_n , ; если ;;i_n];; i\_n].

Тут запись [x_k,;[x\_k , ; если ;i_k]; i\_k] означает, что элелемент x_kx\_k присутствует в соответствующем члене полинома только если i_k=1i\_k = 1.

Тогда если для какого-то xx, i≻xi \succ x* ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.

Отсюда ясно, что f(x)=⨁_i⪯xα_if(x) = \bigoplus \limits\_ { i \preceq x } \alpha\_i  (2)(2)

Найдем отображение f↦αf \mapsto \alpha { То есть такое, которое по заданной функции вычисляет значения всех коэффициентов } .

∗* i≻xi \succ x обозначает, что xx "меньше" ii как последовательность бит

**Теорема:**Пусть задана функция ff. Тогда функцию α_x\alpha\_x можно найти по формуле: α_x=⨁_j⪯xf(j)\alpha\_x = \bigoplus \limits\_ { j\preceq x } f(j) (3)

Докажем при помощи индукции по количеству единиц в векторе xx { иначе говоря, по сумме x_1+x_2+⋯+x_nx\_1+x\_2+\dots +x\_n } и для удобства обозначим это количество единиц { сумму } wt(x)wt(x).

1) База: если x=0x = 0, то, очевидно f(0)=α_0f(0) = \alpha\_0

2) Пускай теорема справедлива для всех сумм wt(x)<kwt(x) < k. Покажем, что в таком случае она верна и для wt(x)=kwt(x) = k. По (2)(2), а далее по предположению индукции видим: f(x)=⨁_i⪯xα_i=[⨁_i≺x⨁_j⪯if(j)]⊕α_xf(x) = \bigoplus \limits\_ { i \preceq x } \alpha\_i = \left[ \bigoplus \limits\_ { i \prec x } \bigoplus \limits\_ { j\preceq i } f(j) \right] \oplus \alpha\_x .

Рассмотрим сумму [⨁_i≺x⨁_j⪯if(j)]\left[ \bigoplus \limits\_ { i \prec x } \bigoplus \limits\_ { j\preceq i } f(j) \right]. Каждый элемент f(j)f(j) содержится в ней, только если j≺xj \prec x, и для фиксированных j,xj, x элемент f(j)f(j) встречается ровно столько раз, сколько существует ii , таких, что j≺i≺xj \prec i \prec x. Несложно увидеть, что таких ii существует ровно 2wt(x)−wt(j)−12^ { wt(x)-wt(j) } -1, то есть нечетное количество раз. Тогда [⨁_i≺x⨁_j⪯if(j)]=⨁_j≺xf(j)\left[ \bigoplus \limits\_ { i \prec x } \bigoplus \limits\_ { j\preceq i } f(j) \right] = \bigoplus \limits\_ { j\prec x } f(j).

Но тогда f(x)=[⨁_j≺xf(j)]⊕α_x⇔f(x)⊕⨁_j≺xf(j)=α_x⇔α_x=⨁_j⪯xf(j)f(x) = \left[ \bigoplus \limits\_ { j\prec x } f(j) \right] \oplus \alpha\_x \Leftrightarrow f(x) \oplus \bigoplus \limits\_ { j\prec x } f(j) = \alpha\_x \Leftrightarrow \alpha\_x = \bigoplus \limits\_ { j\preceq x } f(j).

То есть при wt(x)=kwt(x) = k формула также выполняется, значит при любых xx выполняется α_x=⨁_j⪯xf(j)\alpha\_x = \bigoplus \limits\_ { j\preceq x } f(j).

Отображение f→αf \rightarrow \alpha также называется преобразованием Мёбиуса.

Видно, что (2)(2) и (3)(3) — это одно и тоже преобразование. Значит, если применить преобразование Мёбиуса к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию ff. То есть преобразование Мёбиуса обратно самому себе, иными словами, является инволюцией.

Другие статьи из категории

Похожие статьи

Все статьи →

Основы алгебры логики

Теорема об аналоге СДНФ в Pk

Аналог СДНФ в Pk позволяет однозначно представлять любую функцию k-значной логики через комбинации значений переменных и их отрицаний.…

Основы алгебры логики

Теорема о заведомо полныx системаx

Заведомо полная система функций гарантирует возможность реализации всех возможных отображений в рамках k-значной логики. Для проверки…

Основы алгебры логики

Класс Te . Теорема о замкнутости Te

Класс Te включает все функции, для которых выполнено условие сохранения константы e. Замкнутость класса означает, что любая суперпозиция…

Основы алгебры логики

Лемма о построении множества F[x1,x2]

Множество F[x1,x2] представляет собой набор всех возможных отображений пар значений [x1,x2] в множество значений k-значной логики. Лемма…

Основы алгебры логики

Теорема об алгоритме распознавания полноты

Алгоритм распознавания полноты позволяет определить, можно ли с помощью заданной системы функций выразить любую функцию из Pk. Для этого…

Нужен расчёт?

Пришлите исходные данные — уточним состав работы и ответим по срокам.

Связаться