Изменения

Перейти к: навигация, поиск

Выражение функции XOR через медианы

332 байта убрано, 23:43, 22 октября 2018
Нет описания правки
}}
Разберемся с условием. Нам предлагается выразить побитовый $\mathrm {XORxor}$ с $2m+1$ аргументами с помощью медианы с $2m+1$ аргументом. Ей на вход подается Аргументами является набор $\{s_i\}$, получаемый следующим образом:
* Выпишем последовательность $x_1, x_2, \ldots, x_{2m}$
* Первую половину аргументов (а их ровно $m$) возьмем с отрицанием ($\neg x_1, \neg x_2, \ldots, \neg x_m, x_{m+1}, x_{m+2}, \ldots, x_{2m}$)
* Слева к этой последовательности припишем $x_0$ и дадим на вход подставим в качестве аргументов медиане: $\langle x_0, \neg x_1, \neg x_2, \ldots, \neg x_m, x_{m+1}, x_{m+2}, \ldots, x_{2m} \rangle$ {{---}} так мы получили $s_{m+1}$* Остальные $s_i$ получаются "циклическим сдвигом " отрицания (без учета $x_0$), например, вправо (так мы получим все "циклические сдвиги " отрицаний):
** $s_{1} = \langle x_0, x_1, x_2, x_3, \ldots, x_{m-1}, x_m, \neg x_{m+1}, \neg x_{m+2}, \neg x_{m+3}, \ldots, \neg x_{2m-1}, \neg x_{2m} \rangle$
** $s_{m} = \langle x_0, \neg x_1, \neg x_2, \neg x_3, \ldots, \neg x_{m-1}, x_m, x_{m+1}, x_{m+2}, x_{m+3} \ldots, x_{2m-1}, \neg x_{2m} \rangle$
** $s_{m+3} = \langle x_0, x_1, x_2, \neg x_3, \ldots, \neg x_{m-1}, \neg x_m, \neg x_{m+1}, \neg x_{m+2}, x_{m+3}, \ldots, x_{2m-1}, x_{2m} \rangle$,
И весь этот набор нужно проверить, что медиана от всего этого набора ${s_i}$ (а их будет ровно $2m$ штук) передается (, вместе с $\neg x_0$), на вход еще одной медиане: ($\langle \neg x_0, s_1, s_2, \ldots, s_{2m} \rangle$) совпадет с $\mathrm {XOR}$-ом с $2m+1$-м аргументом.
{{Лемма
|statement=В каждой $s_i$ ровно $m$ переменных с отрицанием и столько же без него.
|proof=Различных чисел-индексов от $j$ до $j + m - 1$ (с учетом того, что $x_{2m+k}$ = $x_k$) ровно $((j + m - 1) - j + 1 + 2m) \bmod 2m = m$. Поэтому с отрицанием будет ровно $m$ переменных.А так как всего $2m$ переменных, то без отрицания будет тоже ровно $m$Очевидно из определения.
}}
{{Лемма
{{Утверждение
|statement=Если в $s_i$ ровно $n$ самостоятельных единиц, то в $\neg s_i$ их будет $(2m - n)$.
|proof=В двойственной паре все единицы станут нулями, а все нули ~--- единицами. А всего единиц $2m$.}} {{Утверждение|statement=Среди ${x_i}$ четное число единиц $\Leftrightarrow$ найдется двойственная пара с одинаковым количеством самостоятельных единиц, равным $m$.|proof=Пусть $A_i$ {{---}} множество аргументов $s_i$ с отрицанием, $B_i$ {{---}} без отрицания. Оба множества по условию мощности $m$.
Пусть среди $A_i$ ровно $a_i$ переменных равны $1$, тогда оставшиеся $(m - a_i)$ из них {{---}} нули.
Аналогично среди $B_i$ ровно $b_i$ единиц и $(m - b_i)$ нулей.
В $\neg s_i$ переменные заменятся на их отрицания, поэтому самостоятельные единицы в ней получаются из единиц среди $A_i$ и нулей среди $B_i$.
Поэтому количество самостоятельных единиц в $\neg s_i$ будет $a_i + (m - b_i)$.
Нетрудно убедиться, что нужное соотношение выполняется: $(m - a_i) + b_i = 2m - (a_i + (m - b_i)) \Leftrightarrow m - a_i + b_i = 2m - a_i - m + b_i$
}}
{{Утверждение|statement=Среди ${x_i}$ четное число единиц $\Leftrightarrow$ найдется двойственная пара с одинаковым количеством самостоятельных единиц, равным $m$.|proof=$\Leftarrow$
Выше мы поняли структуру аргументов $s_i$. Нужно приравнять количества (самостоятельных единиц в обозначениях выше)паре: $(m - a_i) + b_i = a_i + (m - b_i) \Leftrightarrow a_i = b_i$
А $a_i$ и $b_i$ {{---}} количества единиц в $A_i$ и в $B_i$ соответственно, и, так как множество всех аргументов $s_i$ это $A_i \cup B_i$, то $(a_i+b_i)$ и есть количество единиц среди ее аргументов.
#* Пусть $k_i \geqslant m + 1 \Rightarrow k_{i + m} \leqslant m - 1$ (и аналогично с противоположным знаком) $\Rightarrow$ в обычных парах одна $s_i$ будет равна $1$, а вторая $0$.
#* При нечетном количестве единиц особенных пар не будет, будет только ровно $m$ обычных пар, из каждой ровно одна $s_i$ даст единицу. Тогда среди всех $s_i$ будет ровно $m$ единиц, и, подставив их в конечную медиану, вместе с $\neg x_0 = 1$, получим ровно $m + 1$ аргумент, равный $1$. Тогда медиана вернет $1$, чего и должен вернуть $\oplus$ нечетного числа единиц.
#* При четном количестве у нас найдется особенная пара, а в этих $s_i$ и $\neg s_{i}$ ровно по $m$ самостоятельных единиц, а значит, они обе будут равны $0$. Тогда всего среди $s_i$ будет не более $\leqslant m - 1$ $s_i = 1$, значит, конечная медиана вернет $0$, что и нужно при $\oplus$ четного числа единиц.
# $x_0 = 1$
#* Тогда в каждой $s_i$ будет стоять вместо него $1$, то есть количество аргументов-единиц для $s_i$ на один больше количества самостоятельных единиц.
#* Пусть $k_i \geqslant m + 1 \Rightarrow k_{i + m} \leqslant m - 1$ (и аналогично с противоположным знаком) $\Rightarrow$ по-прежнему (тут с учетом $x_0 = 1$) в обычных парах одна $s_i$ будет равна $1$, а вторая $0$.
#* При нечетном количестве единиц особенных пар нет, будет снова только ровно $m$ обычных пар, из каждой ровно одна $s_i$ даст единицу. Тогда среди всех $s_i$ будет ровно $m$ единиц, и, подставив их в конечную медиану, вместе с $\neg x_0 = 0$, получим ровно $m$ аргументов, равных $1$. Тогда медиана вернет $0$, чего и должен вернуть $\oplus$ четного числа единиц.
#* При четном количестве у нас найдется особенная пара, а в этих $s_i$ и $\neg s_{i}$ ровно по $m$ самостоятельных единиц, а значит, они обе будут равны $1$, ведь вместе с $x_0 = 1$ среди аргументах аргументов медиан будет по $m + 1$ единиц. Тогда всего среди $s_i$ будет не менее $\geqslant m + 1$ $s_i = 1$, значит, конечная медиана вернет $1$, что и нужно при $\oplus$ четного числа единиц.
}}
66
правок

Навигация