Самодвойственные функции

Материал из Викиконспекты ПМ-ПУ
Версия от 16:25, 4 ноября 2021; СВ (обсуждение | вклад) (Новая страница: «{{Определение |definition= Функция <math>f(x_1, ..., x_n)\in P_2</math> {{---}} самодвойственная, если <math>f^*(x_1, ..., x...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)


Определение:
Функция [math]\displaystyle{ f(x_1, ..., x_n)\in P_2 }[/math] — самодвойственная, если [math]\displaystyle{ f^*(x_1, ..., x_n) = f(x_1, ..., x_n) }[/math].

Множество всех самодвойственных функций обозначим за [math]\displaystyle{ S }[/math]: [math]\displaystyle{ S = \{ f | f(x_1, ..., x_n) \in P_2, f^*(x_1, ..., x_n) = f(x_1, ..., x_n) \} }[/math].


Пример 1
Пусть [math]\displaystyle{ f = x\vee y }[/math], [math]\displaystyle{ f^* = \overline{\overline x \vee \overline y} = xy }[/math]. [math]\displaystyle{ f\neq f^* }[/math] и, следовательно, [math]\displaystyle{ f^* }[/math] не является самодвойственной.


Пример 2
Пусть [math]\displaystyle{ f }[/math] — функция голосования: [math]\displaystyle{ f(x,y,z) = xy\vee xz\vee yz }[/math].

[math]\displaystyle{ f^*(x,y,z) = \overline{\overline x\cdot \overline y \vee \overline x\cdot \overline z \vee \overline y\cdot \overline z} }[/math] [math]\displaystyle{ = \overline{\overline x\cdot \overline y} \cdot \overline{\overline x\cdot \overline z} \cdot \overline{\overline y\cdot \overline z} }[/math] [math]\displaystyle{ = (x\vee y)(x\vee z)(y\vee z) }[/math] [math]\displaystyle{ = (x\vee xz\vee xy\vee yz)(y\vee z) }[/math] [math]\displaystyle{ = xy\vee xz \vee xyz \vee xz \vee xy\vee xyz \vee yz \vee yz }[/math] [math]\displaystyle{ = xy \vee xz \vee yz \vee xyz }[/math] [math]\displaystyle{ = xy \vee xz \vee yz = f(x,y,z). }[/math]

Функция голосования — самодвойственная.

Табличный вид функции голосования:

x y z f(x,y,z)
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1

Нижняя половина столбца значений повторяет перевернутую и инвертированную верхнюю. Это верно для любой самодвойственной функции.

Принцип двойственности

Утверждение (Принцип двойственности):
Пусть формула [math]\displaystyle{ \mathcal U = f(\mathcal U_1,...,\mathcal U_n) }[/math] реализует функцию [math]\displaystyle{ F (x_1,...,x_m) }[/math],

где [math]\displaystyle{ \mathcal U_i }[/math] — формулы, реализующие [math]\displaystyle{ f_{i}(x_{j_1},...,x_{j_{k_i}}) }[/math], [math]\displaystyle{ i=\overline{1,n} }[/math].

Пусть [math]\displaystyle{ \mathcal U_i^* }[/math] — формулы реализующие [math]\displaystyle{ f_{i}^* }[/math], [math]\displaystyle{ i=\overline{1,n} }[/math].

Тогда формула [math]\displaystyle{ \mathcal U^* = f^*(\mathcal U^*_1,...,\mathcal U^*_n) }[/math] реализует функцию [math]\displaystyle{ F^*(x_1,...,x_m) }[/math].
Доказательство:

[math]\displaystyle{ F(x_1,...,x_m) = f(f_{1}(x_{i_1}, ..., x_{i_{k_1}}), ..., f_{n}(x_{j_1}, ..., x_{j_{k_n}})). }[/math]

Тогда, по определению двойственной функции
[math]\displaystyle{ F^*(x_1,...,x_m) = \overline f(f_{1}(\overline x_{i_1},...,\overline x_{i_{k_1}}), ..., f_{n}(\overline x_{j_1}, ..., \overline x_{j_{k_n}})) }[/math] [math]\displaystyle{ = \overline f(\overline {\overline f}_{1}(\overline x_{i_1},...,\overline x_{i_{k_1}}), ..., \overline {\overline f}_{n}(\overline x_{j_1},...,\overline x_{j_{k_n}})) }[/math] [math]\displaystyle{ = \overline f(\overline {f^*}_{1}(x_{i_1},..., x_{i_{k_1}}),...,\overline {f^*}_{n}(x_{j_1},...,x_{j_{k_n}})) }[/math] [math]\displaystyle{ = f^*({f^*}_{1}(x_{i_1},..., x_{i_{k_1}}), ..., {f^*}_{n}(x_{j_1},...,x_{j_{k_n}})). }[/math]

С другой стороны, формула $f^*(\mathcal U_1^*,...,\mathcal U_n^*)$ реализует функцию [math]\displaystyle{ f^*(f_{\mathcal U_1^*}(x_{i_1},..., x_{i_{k_1}}), ..., f_{\mathcal U_n^*} (x_{j_1},...,x_{j_{k_n}})) }[/math] [math]\displaystyle{ = f^*({f^*}_{1}(x_{i_1},..., x_{i_{k_1}}), ..., {f^*}_{n}(x_{j_1},...,x_{j_{k_n}})). }[/math]

Таким образом, один из способов задать функцию [math]\displaystyle{ F^*(x_1, ...,x_m) }[/math] формулой имеет вид [math]\displaystyle{ \mathcal U^* = f^*(\mathcal U_1^*, ..., \mathcal U_n^*) }[/math].

[math]\displaystyle{ \blacksquare }[/math]


Пример 3
Пусть [math]\displaystyle{ F(x,y,z) = (x\equiv y)\supset(y~|~z)= f(f_1(x,y),f_2(y,z)) }[/math],

[math]\displaystyle{ f^*(x,y) = (x\supset y)^* = \overline{\overline x\supset\overline y}= \overline{x\vee \overline y} = \overline x y }[/math],
[math]\displaystyle{ f_1^*(x,y) = (x\equiv y)^* = \overline{\overline x\equiv \overline y} = \overline{x\equiv y} = x\oplus y }[/math],
[math]\displaystyle{ f_2^*(x,y) = (x~|~ y)^* = \overline{\overline x~|~\overline y} = \overline{x\vee y} = \overline x\wedge \overline y = x\downarrow y }[/math].

Тогда по принципу двойственности [math]\displaystyle{ F^*(x,y,z) }[/math] будет иметь вид [math]\displaystyle{ F^*(x,y,z) = f^*(f_1^*(x,y),f_2^*(y,z)) = \overline{(x\oplus y)}\wedge (y\downarrow z) }[/math].

Действительно, [math]\displaystyle{ F^*(x,y,z) = \neg {((\overline x\equiv \overline y)\supset(\overline y~|~\overline z))} }[/math] [math]\displaystyle{ = \neg (\overline{(x\equiv y)}\vee(y\vee z)) }[/math] [math]\displaystyle{ = \overline{\overline{(x\equiv y)}}\wedge\overline{(y\vee z)} }[/math]

[math]\displaystyle{ = \overline{(x\oplus y)}\wedge (y\downarrow z) }[/math].


Следствие:
Пусть [math]\displaystyle{ f(x_1,...,x_n) }[/math] задана формулой [math]\displaystyle{ \mathcal U }[/math] над множеством функций [math]\displaystyle{ \{0,1, \neg, \vee,\wedge\} }[/math]. Тогда [math]\displaystyle{ f^*(x_1,...,x_n) }[/math] задается формулой, полученной из [math]\displaystyle{ \mathcal U }[/math] заменой: нулей на единицы, единиц на нули, конъюнкций на дизъюнкции, дизъюнкций на конъюнкции.
Доказательство:

Пусть [math]\displaystyle{ f=\neg f_1 }[/math]. Это значит, что [math]\displaystyle{ f = f_0(f_1) }[/math], где [math]\displaystyle{ f_0(x) = \overline x }[/math].

Тогда [math]\displaystyle{ f_0^* = \overline{\overline{\overline x}} = \overline x = f_0 }[/math].

Следовательно, [math]\displaystyle{ f^* = f_0^*(f_1^*) = f_0(f_1^*) = \neg f_1^* }[/math].

Пусть [math]\displaystyle{ f = f_1\vee f_2 }[/math]. Другими словами, [math]\displaystyle{ f = f_0(f_1,f_2) }[/math], [math]\displaystyle{ f_0(x,y) = x\vee y }[/math].

Тогда [math]\displaystyle{ f_0^* = \overline{\overline x \vee \overline y} = x\wedge y }[/math] и [math]\displaystyle{ f^* = f_0^*(f_1^*, f_2^*) = f_1^*\wedge f_2^* }[/math].

Пусть [math]\displaystyle{ f = f_1\wedge f_2 }[/math]. Другими словами, [math]\displaystyle{ f = f_0(f_1,f_2) }[/math], [math]\displaystyle{ f_0(x,y) = x\wedge y }[/math].

Тогда [math]\displaystyle{ f_0^* = \overline{\overline x \wedge \overline y} = x\vee y }[/math] и [math]\displaystyle{ f^* = f_0^*(f_1^*, f_2^*) = f_1^*\vee f_2^* }[/math].

Пусть [math]\displaystyle{ f = 0 }[/math]. Тогда [math]\displaystyle{ f^* = 1 }[/math].

Пусть [math]\displaystyle{ f=1 }[/math]. Тогда [math]\displaystyle{ f^* = 0 }[/math].

Пусть [math]\displaystyle{ f = x }[/math]. Тогда [math]\displaystyle{ f^* = \overline{\overline x}=x = f }[/math].

[math]\displaystyle{ \blacksquare }[/math]


Пример 4
Пусть, [math]\displaystyle{ f(x,y,z) = 0\wedge x\wedge \overline y\vee 1\wedge y\wedge \overline z }[/math].

Тогда, [math]\displaystyle{ f^*(x,y,z) = \overline f(\overline x, \overline y, \overline z) }[/math] [math]\displaystyle{ =\neg(0\wedge \overline x\wedge\overline{\overline y} \vee 1 \wedge \overline y\wedge \overline{ \overline z}) }[/math] [math]\displaystyle{ = \overline{(0\wedge \overline x\wedge y)} \wedge\overline{(1 \wedge \overline y\wedge z)} }[/math]

[math]\displaystyle{ = (1 \vee x \vee \overline y)\wedge (0\vee y \vee \overline z) }[/math].


Пример 5
Пусть [math]\displaystyle{ f(x,y,z) = (\overline{0\vee x})(y\vee \overline x z) }[/math].

Тогда [math]\displaystyle{ f^*(x,y,z) = \neg((\overline{0\vee \overline x})(\overline y\vee \overline{\overline x}\wedge \overline z)) }[/math] [math]\displaystyle{ =\neg(1\wedge x)(\overline y\vee x\wedge \overline z)) }[/math] [math]\displaystyle{ =(\overline{1\wedge x})\vee(\overline{\overline y\vee x\wedge \overline z})) }[/math]

[math]\displaystyle{ =(\overline{1\wedge x})\vee(y\wedge ( \overline x\vee z))) }[/math].


Замкнутость класса

Утверждение:
Класс функций [math]\displaystyle{ S }[/math] замкнут.
Доказательство:

Рассмотрим суперпозицию ранга 1 от функций из [math]\displaystyle{ S }[/math].

a) Пусть [math]\displaystyle{ f(x_1,...,x_n)\in S }[/math] и [math]\displaystyle{ g(x_1,...,x_{j-1},x_{j+1},...,x_n, y) = f(x_1,...,x_{j-1},y,x_{j+1},...,x_{n}) }[/math].

Тогда [math]\displaystyle{ \overline g(\overline x_1,...,\overline x_{j-1},\overline x_{j+1},...,\overline x_n, \overline y) }[/math] [math]\displaystyle{ = \overline f(\overline x_1,...,\overline x_{j-1},\overline y,\overline x_{j+1},...,\overline x_{n}) }[/math] [math]\displaystyle{ = f^*(x_1,...,x_{j-1},y,x_{j+1},...,x_{n}) }[/math] [math]\displaystyle{ = f(x_1,...,x_{j-1},y,x_{j+1},...,x_{n}) }[/math] [math]\displaystyle{ = g(x_1,...,x_{j-1},x_{j+1},...,x_n, y) }[/math].

Следовательно [math]\displaystyle{ g(x_1,...,x_{j-1},x_{j+1},...,x_n, y)\in S }[/math].

b) Пусть [math]\displaystyle{ f(x_1,...,x_n)\in S }[/math] и [math]\displaystyle{ h(y_1, ...,y_m)\in S }[/math] и [math]\displaystyle{ g(x_1,...,x_{j-1},x_{j+1},...,x_n, y_1,...,y_m) }[/math] [math]\displaystyle{ =f(x_1,...,x_{j-1},h(y_1,...,y_{m}),x_{j+1},...,x_{n}) }[/math].

Тогда [math]\displaystyle{ \overline g(\overline x_1,...,\overline x_{j-1}, \overline x_{j+1},...,\overline x_n, \overline y_1,...,\overline y_m) }[/math] [math]\displaystyle{ = \overline f(\overline x_1,...,\overline x_{j-1}, h(\overline y_1,...,\overline y_{m}),\overline x_{j+1},...,\overline x_{n}) }[/math] [math]\displaystyle{ = \overline f(\overline x_1,...,\overline x_{j-1}, \overline{\overline h}(\overline y_1,...,\overline y_{m}),\overline x_{j+1},...,\overline x_{n}) }[/math] [math]\displaystyle{ = \overline f(\overline x_1,...,\overline x_{j-1}, \overline{ h^*}( y_1,...,y_{m}),\overline x_{j+1},...,\overline x_{n}) }[/math] [math]\displaystyle{ = f^*(x_1,..., x_{j-1}, { h^*}( y_1,...,y_{m}), x_{j+1},..., x_{n}) }[/math] [math]\displaystyle{ = f(x_1,..., x_{j-1}, { h}( y_1,...,y_{m}), x_{j+1},..., x_{n}) }[/math] [math]\displaystyle{ = g(x_1,...,x_{j-1},x_{j+1},...,x_n, y_1,...,y_m) }[/math].

Получаем, что [math]\displaystyle{ g(x_1,...,x_{j-1},x_{j+1},...,x_n, y_1,...,y_m)\in S }[/math].

Таким образом, [math]\displaystyle{ [S] = S }[/math].

[math]\displaystyle{ \blacksquare }[/math]


Замечание
Тождественная функция $f(x)=x$ лежит в классе $S$.

Конъюнкция $f(x) = x \wedge y$ не лежит в $S$.

Таким образом, $S\neq \varnothing$ и $S\neq P_2$.


Лемма (о несамодвойственной функции):
Пусть [math]\displaystyle{ f(x_1, ..., x_n) \notin S }[/math]. Тогда, подставляя в [math]\displaystyle{ f }[/math] вместо аргументов переменные [math]\displaystyle{ x }[/math] и их отрицание [math]\displaystyle{ \overline x }[/math], можно получить константу.
Доказательство:

Пусть [math]\displaystyle{ (\alpha_1,...,\alpha_n) }[/math], [math]\displaystyle{ \alpha_i\in\{0,1\} }[/math], такой набор, что [math]\displaystyle{ f(\alpha_1,...,\alpha_n) = f(\overline \alpha_1,...,\overline\alpha_n) }[/math]. Такой набор обязан существовать в силу несамодвойственности функции [math]\displaystyle{ f }[/math].

Рассмотрим функцию [math]\displaystyle{ \varphi(x) = f(x^{\alpha_1}, ..., x^{\alpha_n}) }[/math].

Тогда [math]\displaystyle{ \varphi(0) = f(0^{\alpha_1}, ..., 0^{\alpha_n}) = f({\alpha_1}^0,...,{\alpha_n}^0) = f(\overline\alpha_1,...,\overline \alpha_n) }[/math] [math]\displaystyle{ = f(\alpha_1,...,\alpha_n) = f(1^{\alpha_1},...,1^{\alpha_n}) = \varphi(1) }[/math].

Следовательно $\varphi(x)$ — константа.

[math]\displaystyle{ \blacksquare }[/math]


Пример
Получение константы из несамодвойственной функции

Пусть [math]\displaystyle{ f(x,y,z) = x\supset (y\oplus z) }[/math].

Это несамодвойственная функция, поскольку [math]\displaystyle{ f(0,1,0) = 0\supset (1\oplus 0) =1= 1\supset (0\oplus 1) =f(1,0,1) }[/math].

Тогда [math]\displaystyle{ \varphi(x) = f(\overline x, x, \overline x) }[/math] — константа.

Действительно, [math]\displaystyle{ \varphi(x) = \overline x\supset(x\oplus \overline x) = \overline x\supset 1 = 1 }[/math].