Выражение функции XOR через медианы — различия между версиями
Dmitriy (обсуждение | вклад) м (Метки: правка с мобильного устройства, правка из мобильной версии) |
м (rollbackEdits.php mass rollback) |
||
| (не показано 5 промежуточных версий 2 участников) | |||
| Строка 13: | Строка 13: | ||
** sm+3=⟨x0,x1,x2,¬x3,…,¬xm−1,¬xm,¬xm+1,¬xm+2,xm+3,…,x2m−1,x2m⟩, | ** sm+3=⟨x0,x1,x2,¬x3,…,¬xm−1,¬xm,¬xm+1,¬xm+2,xm+3,…,x2m−1,x2m⟩, | ||
| − | И нужно проверить, что | + | И нужно проверить, что $\langle \neg x_0, s_1, s_2, \ldots, s_{2m} \rangle = x_0 \oplus x_1 \oplus \ldots \oplus x_{2m}$. |
| Строка 34: | Строка 34: | ||
|statement=Среди xi четное число единиц ⇔ найдется двойственная пара, элементы которой имеют одинаковое количество самостоятельных единиц. | |statement=Среди xi четное число единиц ⇔ найдется двойственная пара, элементы которой имеют одинаковое количество самостоятельных единиц. | ||
|proof= | |proof= | ||
| − | Пусть Ai {{---}} множество аргументов si с отрицанием, Bi {{---}} без отрицания. Оба множества по условию мощности m. | + | Пусть Ai {{---}} множество аргументов (за исключением x0) si с отрицанием, Bi {{---}} без отрицания (тоже за исключением x0). Оба множества по условию мощности m. |
Пусть среди Ai ровно ai переменных равны единице, тогда оставшиеся (m−ai) из них {{---}} нули. | Пусть среди Ai ровно ai переменных равны единице, тогда оставшиеся (m−ai) из них {{---}} нули. | ||
Аналогично среди Bi ровно bi единиц и (m−bi) нулей. | Аналогично среди Bi ровно bi единиц и (m−bi) нулей. | ||
| Строка 48: | Строка 48: | ||
Но ai=bi, значит ai+bi четное. | Но ai=bi, значит ai+bi четное. | ||
| − | Вообще, утверждения "нашлась двойственная пара, элементы которой имеют одинаковое количество самостоятельных единиц" (1) и "нашлась si с количеством самостоятельных единиц, равным m" | + | Вообще, утверждения "нашлась двойственная пара, элементы которой имеют одинаковое количество самостоятельных единиц" (1) и "нашлась si с количеством самостоятельных единиц, равным m" равносильны. |
И правда, выше мы поняли, что (1) ⇔ai=bi. Посчитаем количество самостоятельных единиц в si. ((m−ai)+bi)=m⇔ai=bi. | И правда, выше мы поняли, что (1) ⇔ai=bi. Посчитаем количество самостоятельных единиц в si. ((m−ai)+bi)=m⇔ai=bi. | ||
| Строка 54: | Строка 54: | ||
⇒ | ⇒ | ||
| − | Пусть среди xi будет 2t единиц. | + | Пусть среди ${x_i} (i > 0)будет2t$ единиц. |
Давайте найдем sj, в которой среди Aj единиц столько же, сколько и среди Bj. Тогда в ней будет aj=bj, из чего и будет следовать требуемое. | Давайте найдем sj, в которой среди Aj единиц столько же, сколько и среди Bj. Тогда в ней будет aj=bj, из чего и будет следовать требуемое. | ||
Рассмотрим любую sk. Будем считать, что в Ak меньше половины единиц (ak<t), иначе рассмотрим двойственную ей, в ней будет меньше половины, или, если равенство, то мы уже нашли такую. | Рассмотрим любую sk. Будем считать, что в Ak меньше половины единиц (ak<t), иначе рассмотрим двойственную ей, в ней будет меньше половины, или, если равенство, то мы уже нашли такую. | ||
| − | Будем последовательно сдвигать отрицания вправо на одну позицию, переходя от sl к sl+1. За каждый сдвиг количество единиц в Al может измениться только на 1. | + | Будем последовательно сдвигать отрицания вправо на одну позицию, переходя от sl к sl+1. За каждый сдвиг количество единиц в Al может измениться только на $1$. |
Действительно, если в Al добавились и ушли разные числа, то количество единиц изменилось на 1 (увеличилось или уменьшилось), а если одинаковые {{---}} то не поменялось. | Действительно, если в Al добавились и ушли разные числа, то количество единиц изменилось на 1 (увеличилось или уменьшилось), а если одинаковые {{---}} то не поменялось. | ||
Таким образом, сделав m шагов, мы дойдем от sk до ¬sk, причем количество единиц в Al будет изменяться не более, чем на 1. Изначально оно было al, а станет {{---}} 2t−al. | Таким образом, сделав m шагов, мы дойдем от sk до ¬sk, причем количество единиц в Al будет изменяться не более, чем на 1. Изначально оно было al, а станет {{---}} 2t−al. | ||
| Строка 83: | Строка 83: | ||
#* Пусть ki⩾m+1⇒ki+m⩽m−1 (и аналогично с противоположным знаком) ⇒ по-прежнему (тут с учетом x0=1) в обычных парах одна si будет равна 1, а вторая 0. | #* Пусть ki⩾m+1⇒ki+m⩽m−1 (и аналогично с противоположным знаком) ⇒ по-прежнему (тут с учетом x0=1) в обычных парах одна si будет равна 1, а вторая 0. | ||
#* При нечетном количестве единиц особенных пар нет, будет снова только ровно m обычных пар, из каждой ровно одна si даст единицу. Тогда среди всех si будет ровно m единиц, и, подставив их в конечную медиану, вместе с ¬x0=0, получим ровно m аргументов, равных 1. Тогда медиана вернет 0, что и должен вернуть XOR четного числа единиц. | #* При нечетном количестве единиц особенных пар нет, будет снова только ровно m обычных пар, из каждой ровно одна si даст единицу. Тогда среди всех si будет ровно m единиц, и, подставив их в конечную медиану, вместе с ¬x0=0, получим ровно m аргументов, равных 1. Тогда медиана вернет 0, что и должен вернуть XOR четного числа единиц. | ||
| − | #* При четном количестве у нас найдется особенная пара, а в этих si и ¬si ровно по m самостоятельных единиц, а значит, они обе будут равны 1, ведь вместе с x0=1 среди аргументов медиан будет по m+1 единиц. Тогда всего среди si будет не менее m+1 si=1, значит, конечная медиана вернет 1, что и нужно при XOR нечетного числа единиц. | + | #* При четном количестве у нас найдется особенная пара, а в этих si и ¬si ровно по m самостоятельных единиц, а значит, они обе будут равны 1, ведь вместе с x0=1 среди аргументов медиан будет по m+1 единиц. Тогда всего среди si будет не менее m+1 si=1, значит, конечная медиана вернет 1, что и нужно при XOR-е нечетного числа единиц. |
}} | }} | ||
Текущая версия на 19:36, 4 сентября 2022
| Теорема: |
x0⊕x1⊕…⊕x2m=⟨¬x0,s1,s2,…,s2m⟩, sj=⟨x0,xj,xj+1,…,xj+m−1,¬xj+m,¬xj+m+1,…,¬xj+2m−1⟩, где x2m+k обозначает то же, что и xk, при k⩾1. |
Разберемся с условием. Мы хотим доказать, что побитовый XOR с 2m+1 аргументами выражается с помощью медианы с 2m+1 аргументом. Аргументами медианы является набор {si}, получаемый следующим образом:
- Выпишем последовательность x1,x2,…,x2m
- Первую половину аргументов (а их ровно m) возьмем с отрицанием (¬x1,¬x2,…,¬xm,xm+1,xm+2,…,x2m)
- Слева к этой последовательности припишем x0 и подадим в качестве аргументов медиане: ⟨x0,¬x1,¬x2,…,¬xm,xm+1,xm+2,…,x2m⟩ — так мы получили sm+1
- Остальные si получаются "циклическим сдвигом" отрицания (без учета x0), например, вправо (так мы получим все "циклические сдвиги" отрицаний):
- s1=⟨x0,x1,x2,x3,…,xm−1,xm,¬xm+1,¬xm+2,¬xm+3,…,¬x2m−1,¬x2m⟩
- sm=⟨x0,¬x1,¬x2,¬x3,…,¬xm−1,xm,xm+1,xm+2,xm+3…,x2m−1,¬x2m⟩
- sm+2=⟨x0,x1,¬x2,¬x3,…,¬xm−1,¬xm,¬xm+1,xm+2,xm+3…,x2m−1,x2m⟩,
- sm+3=⟨x0,x1,x2,¬x3,…,¬xm−1,¬xm,¬xm+1,¬xm+2,xm+3,…,x2m−1,x2m⟩,
И нужно проверить, что ⟨¬x0,s1,s2,…,s2m⟩=x0⊕x1⊕…⊕x2m.
Содержание
[убрать]Вспомогательные утверждения
| Лемма: |
Каждой si можно однозначно сопоставить в пару такую sj, что все переменные (кроме x0) с отрицанием из si в sj будут без отрицания и наоборот. Аргументы x0 у всех si одинаковые, поэтому будем разбивать на пары без учета x0. |
| Доказательство: |
| Мы строим набор si, циклически сдвигая отрезок отрицания переменных, пока не получим все возможные. Совершив ровно m таких шагов, мы сдвинем начало отрезка отрицания на следующую позицию после его конца. Таким образом, там, где был отрезок отрицания, будет отрезок без отрицания, и наоборот. |
Назовем такую пару (si,sj) двойственной, и будем обозначать через ¬si двойственную si пару.
Пусть на j-ом месте у si стоит единица (j>0). Назовем этот аргумент самостоятельной единицей.
| Утверждение: |
Если в si ровно n самостоятельных единиц, то в ¬si их будет (2m−n). |
| У двойственного элемента все самостоятельные единицы станут нулями, а все нули — единицами. А всего позиций 2m. |
| Утверждение: |
Среди xi четное число единиц ⇔ найдется двойственная пара, элементы которой имеют одинаковое количество самостоятельных единиц. |
|
Пусть Ai — множество аргументов (за исключением x0) si с отрицанием, Bi — без отрицания (тоже за исключением x0). Оба множества по условию мощности m. Пусть среди Ai ровно ai переменных равны единице, тогда оставшиеся (m−ai) из них — нули. Аналогично среди Bi ровно bi единиц и (m−bi) нулей. Самостоятельные единицы si получаются из нулей среди Ai и единиц среди Bi. Тогда в si будет (m−ai)+bi самостоятельных единиц. В ¬si переменные заменятся на их отрицания, поэтому самостоятельные единицы в ней получаются из единиц среди Ai и нулей среди Bi. Поэтому количество самостоятельных единиц в ¬si будет ai+(m−bi). ⇐ Приравняем количества самостоятельных единиц в паре: (m−ai)+bi=ai+(m−bi)⇔ai=bi А ai и bi — количества единиц в Ai и в Bi соответственно, и, так как множество всех аргументов si это Ai∪Bi, то (ai+bi) и есть количество единиц среди ее аргументов. Но ai=bi, значит ai+bi четное. Вообще, утверждения "нашлась двойственная пара, элементы которой имеют одинаковое количество самостоятельных единиц" (1) и "нашлась si с количеством самостоятельных единиц, равным m" равносильны. И правда, выше мы поняли, что (1) ⇔ai=bi. Посчитаем количество самостоятельных единиц в si. ((m−ai)+bi)=m⇔ai=bi. ⇒ Пусть среди xi(i>0) будет 2t единиц. Давайте найдем sj, в которой среди Aj единиц столько же, сколько и среди Bj. Тогда в ней будет aj=bj, из чего и будет следовать требуемое. Рассмотрим любую sk. Будем считать, что в Ak меньше половины единиц (ak<t), иначе рассмотрим двойственную ей, в ней будет меньше половины, или, если равенство, то мы уже нашли такую. Будем последовательно сдвигать отрицания вправо на одну позицию, переходя от sl к sl+1. За каждый сдвиг количество единиц в Al может измениться только на 1. Действительно, если в Al добавились и ушли разные числа, то количество единиц изменилось на 1 (увеличилось или уменьшилось), а если одинаковые — то не поменялось. Таким образом, сделав m шагов, мы дойдем от sk до ¬sk, причем количество единиц в Al будет изменяться не более, чем на 1. Изначально оно было al, а станет — 2t−al. Тогда выполняются неравенства: ak⩽t⩽2t−ak. Левый знак верен просто потому, что мы так выбрали sk, а правый, очевидно, равносилен первому. Таким образом, мы, изменяя al не больше, чем на единицу, пришли из ak в 2t−ak, причем число t было между ними. Поэтому мы обязательно на каком-то шаге оказались с al′=t, то есть ровно половина единиц попала в Al′, чего мы и хотели. Заметим также, что мы доказали наличие одной пары, но на самом деле таких может быть больше. Давайте такие пары назовем особенными, а остальные — обычными. |
Доказательство теоремы
| Теорема: |
x0⊕x1⊕…⊕x2m=⟨¬x0,s1,s2,…,s2m⟩, sj=⟨x0,xj,xj+1,…,xj+m−1,¬xj+m,¬xj+m+1,…,¬xj+2m−1⟩ |
| Доказательство: |
|
Пусть ki — количество самостоятельных единиц у si. Рассмотрим два случая.
|
См. также
- Представление функции формулой, полные системы функций
- Представление функции класса DM с помощью медианы
- Определение булевой функции