<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%D0%A6%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%B2+%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%D0%A6%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%B2+%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/%D0%A6%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%B2_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80"/>
		<updated>2026-06-11T15:15:28Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%A5%D0%B0%D0%BD%D0%B0&amp;diff=26365</id>
		<title>Сортировка Хана</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%A5%D0%B0%D0%BD%D0%B0&amp;diff=26365"/>
				<updated>2012-06-21T15:04:46Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: /* Сортировка с использованием O(nloglogn) времени и памяти */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Сортировка Хана (Yijie Han)''' {{---}} сложный алгоритм сортировки целых чисел со сложностью &amp;lt;tex&amp;gt;O(n \log\log n)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; {{---}} количество элементов для сортировки.&lt;br /&gt;
&lt;br /&gt;
Данная статья писалась на основе брошюры Хана, посвященной этой сортировке.&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
Алгоритм построен на основе экспоненциального поискового дерева (далее {{---}} ЭП-дерево) Андерсона (Andersson's exponential search tree). Сортировка происходит за счет вставки целых чисел в ЭП-дерево.&lt;br /&gt;
&lt;br /&gt;
== Andersson's exponential search tree ==&lt;br /&gt;
ЭП-дерево с &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; листьями состоит из корня &amp;lt;tex&amp;gt;r&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;n^e&amp;lt;/tex&amp;gt; (&amp;lt;tex&amp;gt;0&amp;lt; e &amp;lt; 1&amp;lt;/tex&amp;gt;) ЭП-поддеревьев, в каждом из которых &amp;lt;tex&amp;gt;n^{1 - e}&amp;lt;/tex&amp;gt; листьев; каждое ЭП-поддерево является сыном корня &amp;lt;tex&amp;gt;r&amp;lt;/tex&amp;gt;. В этом дереве &amp;lt;tex&amp;gt;O(n \log\log n)&amp;lt;/tex&amp;gt; уровней. При нарушении баланса дерева, необходимо балансирование, которое требует &amp;lt;tex&amp;gt;O(n \log\log n)&amp;lt;/tex&amp;gt; времени при &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; вставленных целых числах. Такое время достигается за счет вставки чисел группами, а не по одиночке, как изначально предлагает Андерссон.&lt;br /&gt;
&lt;br /&gt;
==Определения== &lt;br /&gt;
# Контейнер {{---}} объект, в которым хранятся наши данные. Например: 32-битные и 64-битные числа, массивы, вектора.&lt;br /&gt;
# Алгоритм сортирующий &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; целых чисел из множества &amp;lt;tex&amp;gt;\{0, 1, \ldots, m - 1\}&amp;lt;/tex&amp;gt; называется консервативным, если длина контейнера (число бит в контейнере), является &amp;lt;tex&amp;gt;O(\log(m + n))&amp;lt;/tex&amp;gt;. Если длина больше, то алгоритм неконсервативный.&lt;br /&gt;
# Если сортируются целые числа из множества &amp;lt;tex&amp;gt;\{0, 1, \ldots, m - 1\}&amp;lt;/tex&amp;gt; с длиной контейнера &amp;lt;tex&amp;gt;k \log (m + n)&amp;lt;/tex&amp;gt; с &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\ge&amp;lt;/tex&amp;gt; 1, тогда сортировка происходит с неконсервативным преимуществом &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# Для множества &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; определим&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\min(S) = \min\limits_{a \in S} a&amp;lt;/tex&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;\max(S) = \max\limits_{a \in S} a&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Набор &amp;lt;tex&amp;gt;S1&amp;lt;/tex&amp;gt; &amp;lt; &amp;lt;tex&amp;gt;S2&amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt;\max(S1) \le \min(S2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Сортировка с использованием O(n log log n) времени и памяти==&lt;br /&gt;
Для сортировки &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; целых чисел в диапазоне от {&amp;lt;tex&amp;gt;0, 1, \ldots, m - 1&amp;lt;/tex&amp;gt;} предполагается, что используется контейнер длины &amp;lt;tex&amp;gt;O(\log (m + n))&amp;lt;/tex&amp;gt; в нашем консервативном алгоритме. Далее всегда считается, что все числа упакованы в контейнеры одинаковой длины. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Берем &amp;lt;tex&amp;gt;1/e = 5&amp;lt;/tex&amp;gt; для экспоненциального поискового дерева Андерссона. Следовательно, у корня будет &amp;lt;tex&amp;gt;n^{1/5}&amp;lt;/tex&amp;gt; детей и каждое ЭП-дерево в каждом ребенке будет иметь &amp;lt;tex&amp;gt;n^{4/5}&amp;lt;/tex&amp;gt; листьев. В отличии от оригинального дерева, за раз вставляется не один элемент, а &amp;lt;tex&amp;gt;d^2&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;d&amp;lt;/tex&amp;gt; — количество детей узла дерева, где числа должны спуститься вниз. Алгоритм полностью опускает все &amp;lt;tex&amp;gt;d^2&amp;lt;/tex&amp;gt; чисел на один уровень. В корне опускаются &amp;lt;tex&amp;gt;n^{2/5}&amp;lt;/tex&amp;gt; чисел на следующий уровень. После того, как все числа опустились на следующий уровень, они успешно разделились на &amp;lt;tex&amp;gt;t_{1} = n^{1/5}&amp;lt;/tex&amp;gt; наборов &amp;lt;tex&amp;gt;S_{1}, S_{2}, \ldots, S_{t_{1}}&amp;lt;/tex&amp;gt;, в каждом из которых &amp;lt;tex&amp;gt;n^{4/5}&amp;lt;/tex&amp;gt; чисел и &amp;lt;tex&amp;gt;S_{i} &amp;lt; S_{j}, i &amp;lt; j&amp;lt;/tex&amp;gt;. Затем, берутся &amp;lt;tex&amp;gt;n^{(4/5)(2/5)}&amp;lt;/tex&amp;gt; чисел из &amp;lt;tex&amp;gt;S_{i}&amp;lt;/tex&amp;gt; и за раз и опускаются на следующий уровень ЭП-дерева. Это повторяется, пока все числа не опустятся на следующий уровень. На этом шаге числа разделены на &amp;lt;tex&amp;gt;t_{2} = n^{1/5}n^{4/25} = n^{9/25}&amp;lt;/tex&amp;gt; наборов &amp;lt;tex&amp;gt;T_{1}, T_{2}, \ldots, T_{t_{2}}&amp;lt;/tex&amp;gt;, в каждом из которых &amp;lt;tex&amp;gt;n^{16/25}&amp;lt;/tex&amp;gt; чисел, аналогичных наборам &amp;lt;tex&amp;gt;S_{i}&amp;lt;/tex&amp;gt;. Теперь числа опускаются дальше в ЭП-дереве.&lt;br /&gt;
&lt;br /&gt;
Нетрудно заметить, что перебалансирока занимает &amp;lt;tex&amp;gt;O(n \log\log n)&amp;lt;/tex&amp;gt; времени с &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; временем на уровень, аналогично стандартному ЭП-дереву Андерссона.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Нам следует нумеровать уровни ЭП-дерева с корня, начиная с нуля. Рассмотрим спуск вниз на уровне &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. Имеется &amp;lt;tex&amp;gt;t = n^{1 - (4/5)^s}&amp;lt;/tex&amp;gt; наборов по &amp;lt;tex&amp;gt;n^{(4/5)^s}&amp;lt;/tex&amp;gt; чисел в каждом. Так как каждый узел на данном уровне имеет &amp;lt;tex&amp;gt;p = n^{(1/5)(4/5)^s}&amp;lt;/tex&amp;gt; детей, то на &amp;lt;tex&amp;gt;s + 1&amp;lt;/tex&amp;gt; уровень опускаются &amp;lt;tex&amp;gt;q = n^{(2/5)(4/5)^s}&amp;lt;/tex&amp;gt; чисел для каждого набора, или всего &amp;lt;tex&amp;gt;qt \ge n^{2/5}&amp;lt;/tex&amp;gt; чисел для всех наборов за один раз.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Спуск вниз можно рассматривать как сортировку &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; чисел в каждом наборе вместе с &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; числами &amp;lt;tex&amp;gt;a_{1}, a_{2}, \ldots, a_{p}&amp;lt;/tex&amp;gt; из ЭП-дерева, так, что эти &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; чисел разделены в &amp;lt;tex&amp;gt;p + 1&amp;lt;/tex&amp;gt; наборов &amp;lt;tex&amp;gt;S_{0}, S_{1}, \ldots, S_{p}&amp;lt;/tex&amp;gt; таких, что &amp;lt;tex&amp;gt;S_{0} &amp;lt; &amp;lt;/tex&amp;gt;{&amp;lt;tex&amp;gt;a_{1}&amp;lt;/tex&amp;gt;} &amp;lt; &amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt; &amp;lt; {&amp;lt;tex&amp;gt;a_{p}&amp;lt;/tex&amp;gt;}&amp;lt;tex&amp;gt; &amp;lt; S_{p}&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; чисел не надо полностью сортировать и &amp;lt;tex&amp;gt;q = p^2&amp;lt;/tex&amp;gt;, то можно использовать '''лемму №2''' для сортировки. Для этого необходимо неконсервативное преимущество, которое получается с помощью signature sorting. Для этого используется линейная техника многократного деления (multi-dividing technique).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Procedure linear-Time-Sort&lt;br /&gt;
&lt;br /&gt;
Входные данные: &amp;lt;tex&amp;gt;r &amp;gt; = n^{2/5}&amp;lt;/tex&amp;gt; чисел &amp;lt;tex&amp;gt;d_{i}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;d_{i}.value&amp;lt;/tex&amp;gt; — значение числа &amp;lt;tex&amp;gt;d_{i}&amp;lt;/tex&amp;gt;, в котором &amp;lt;tex&amp;gt;(2 \log n)/(c \log\log n)&amp;lt;/tex&amp;gt; бит, &amp;lt;tex&amp;gt;d_{i}.set&amp;lt;/tex&amp;gt; — набор, в котором находится &amp;lt;tex&amp;gt;d_{i}&amp;lt;/tex&amp;gt;. Следует отметить, что всего есть &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; наборов.&lt;br /&gt;
&lt;br /&gt;
# Сортируем все &amp;lt;tex&amp;gt;d_{i}&amp;lt;/tex&amp;gt; по &amp;lt;tex&amp;gt;d_{i}.value&amp;lt;/tex&amp;gt;, используя bucket sort. Пусть все сортированные числа в &amp;lt;tex&amp;gt;A[1..r]&amp;lt;/tex&amp;gt;. Этот шаг занимает линейное время, так как сортируется не менее &amp;lt;tex&amp;gt;n^{2/5}&amp;lt;/tex&amp;gt; чисел.&lt;br /&gt;
# Помещаем все &amp;lt;tex&amp;gt;A[j]&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;A[j].set&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом заполняются все наборы за линейное время.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
После &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; сокращений бит в '''signature sorting''' получаем неконсервативное преимущество в &amp;lt;tex&amp;gt;(h/ \log\log n)^g&amp;lt;/tex&amp;gt;. Мы не волнуемся об этих сокращениях до конца потому, что после получения неконсервативного преимущества мы можем переключиться на '''лемму №2''' для завершения разделения &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; чисел с помощью &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; чисел на наборы. Заметим, что по природе битового сокращения, начальная задача разделения для каждого набора перешла в &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt; подзадачи разделения на &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt; поднаборы для какого-то числа &amp;lt;tex&amp;gt;w&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Теперь для каждого набора собираются все его поднаборы в подзадачах в один набор. Затем, используя '''лемму №2''', делается разделение. Так как получено неконсервативное преимущество в &amp;lt;tex&amp;gt;(h/ \log\log n)^g&amp;lt;/tex&amp;gt; и работа происходит на уровнях не ниже чем &amp;lt;tex&amp;gt;2 \log\log\log n&amp;lt;/tex&amp;gt;, то алгоритм занимает &amp;lt;tex&amp;gt;O(qt \log\log n/(g(\log h - \log\log\log n) - \log\log\log n)) = O(\log\log n)&amp;lt;/tex&amp;gt; времени.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В итоге разделились &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; чисел &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; числами в каждый набор. То есть, получилось, что &amp;lt;tex&amp;gt;S_{0}&amp;lt;/tex&amp;gt; &amp;lt; {&amp;lt;tex&amp;gt;e_{1}&amp;lt;/tex&amp;gt;} &amp;lt; &amp;lt;tex&amp;gt;S_{1}&amp;lt;/tex&amp;gt; &amp;lt; &amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt; &amp;lt; {&amp;lt;tex&amp;gt;e_{p}&amp;lt;/tex&amp;gt;} &amp;lt; &amp;lt;tex&amp;gt;S_{p}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;e_{i}&amp;lt;/tex&amp;gt; это сегмент &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt; полученный с помощью битового сокращения. Такое разделение получилось комбинированием всех поднаборов в подзадачах. Предполагаем, что числа хранятся в массиве &amp;lt;tex&amp;gt;B&amp;lt;/tex&amp;gt; так, что числа в &amp;lt;tex&amp;gt;S_{i}&amp;lt;/tex&amp;gt; предшествуют числам в &amp;lt;tex&amp;gt;S_{j}&amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt;i &amp;lt; j&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;e_{i}&amp;lt;/tex&amp;gt; хранится после &amp;lt;tex&amp;gt;S_{i - 1}&amp;lt;/tex&amp;gt; но до &amp;lt;tex&amp;gt;S_{i}&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;B[i]&amp;lt;/tex&amp;gt; в поднаборе &amp;lt;tex&amp;gt;B[i].subset&amp;lt;/tex&amp;gt;. Чтобы позволить разделению выполнится для каждого поднабора делается следующее. &lt;br /&gt;
&lt;br /&gt;
Помещаем все &amp;lt;tex&amp;gt;B[j]&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;B[j].subset&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На это потребуется линейное время и место.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Теперь рассмотрим проблему упаковки, которая решается следующим образом. Считается, что число бит в контейнере &amp;lt;tex&amp;gt;\log m \ge \log\log\log n&amp;lt;/tex&amp;gt;, потому, что в противном случае можно использовать radix sort для сортировки чисел. У контейнера есть &amp;lt;tex&amp;gt;h/ \log\log n&amp;lt;/tex&amp;gt; хешированных значений (сегментов) в себе на уровне &amp;lt;tex&amp;gt;\log h&amp;lt;/tex&amp;gt; в ЭП-дереве. Полное число хешированных бит в контейнере &amp;lt;tex&amp;gt;(2 \log n)(c \log\log n)&amp;lt;/tex&amp;gt; бит. Хотя хешированные биты в контейнере выглядят как &amp;lt;tex&amp;gt;0^{i}t_{1}0^{i}t_{2} \ldots t_{h/ \log\log n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;t_{k}&amp;lt;/tex&amp;gt;-ые — хешированные биты, а нули это просто нули. Сначала упаковываем &amp;lt;tex&amp;gt;\log\log n&amp;lt;/tex&amp;gt; контейнеров в один и получаем &amp;lt;tex&amp;gt;w_{1} = 0^{j}t_{1, 1}t_{2, 1} \ldots t_{\log\log n, 1}0^{j}t_{1, 2} \ldots t_{\log\log n, h/ \log\log n}&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;t_{i, k}&amp;lt;/tex&amp;gt;: &amp;lt;tex&amp;gt;k = 1, 2,  \ldots, h/ \log\log n&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ого контейнера. Используем &amp;lt;tex&amp;gt;O(\log\log n)&amp;lt;/tex&amp;gt; шагов, чтобы упаковать &amp;lt;tex&amp;gt;w_{1}&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;w_{2} = 0^{jh/ \log\log n}t_{1, 1}t_{2, 1} \ldots t_{\log\log n, 1}t_{1, 2}t_{2, 2} \ldots t_{1, h/ \log\log n}t_{2, h/ \log\log n} \ldots t_{\log\log n, h/ \log\log n}&amp;lt;/tex&amp;gt;. Теперь упакованные хеш биты занимают &amp;lt;tex&amp;gt;2 \log n/c&amp;lt;/tex&amp;gt; бит. Используем &amp;lt;tex&amp;gt;O(\log\log n)&amp;lt;/tex&amp;gt; времени чтобы распаковать &amp;lt;tex&amp;gt;w_{2}&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;\log\log n&amp;lt;/tex&amp;gt; контейнеров &amp;lt;tex&amp;gt;w_{3, k} = 0^{jh/ \log\log n}0^{r}t_{k, 1}O^{r}t_{k, 2} \ldots t_{k, h/ \log\log n} k = 1, 2, \ldots, \log\log n&amp;lt;/tex&amp;gt;. Затем используя &amp;lt;tex&amp;gt;O(\log\log n)&amp;lt;/tex&amp;gt; времени упаковываем эти &amp;lt;tex&amp;gt;\log\log n&amp;lt;/tex&amp;gt; контейнеров в один &amp;lt;tex&amp;gt;w_{4} = 0^{r}t_{1, 1}0^{r}t_{1, 2} \ldots t_{1, h/ \log\log n}0^{r}t_{2, 1} \ldots t_{\log\log n, h/ \log\log n}&amp;lt;/tex&amp;gt;. Затем используя &amp;lt;tex&amp;gt;O(\log\log n)&amp;lt;/tex&amp;gt; шагов упаковать &amp;lt;tex&amp;gt;w_{4}&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;w_{5} = 0^{s}t_{1, 1}t_{1, 2} \ldots t_{1, h/ \log\log n}t_{2, 1}t_{2, 2} \ldots t_{\log\log n, h/ \log\log n}&amp;lt;/tex&amp;gt;. В итоге используем &amp;lt;tex&amp;gt;O(\log\log n)&amp;lt;/tex&amp;gt; времени для упаковки &amp;lt;tex&amp;gt;\log\log n&amp;lt;/tex&amp;gt; контейнеров. Считаем, что время потраченное на один контейнер — константа.&lt;br /&gt;
&lt;br /&gt;
==Уменьшение числа бит в числах==&lt;br /&gt;
Один из способов ускорить сортировку {{---}} уменьшить число бит в числе. Один из способов уменьшить число бит в числе {{---}} использовать деление пополам (эту идею впервые подал van Emde Boas). Деление пополам заключается в том, что количество оставшихся бит в числе уменьшается в 2 раза. Это быстрый способ, требующий &amp;lt;tex&amp;gt;O(m)&amp;lt;/tex&amp;gt; памяти. Для своего дерева Андерссон использует хеширование, что позволяет сократить количество памяти до &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt;. Для того, чтобы еще ускорить алгоритм нам необходимо упаковать несколько чисел в один контейнер, чтобы затем за константное количество шагов произвести хеширование для всех чисел хранимых в контейнере. Для этого используется хеш функция для хеширования &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; чисел в таблицу размера &amp;lt;tex&amp;gt;O(n^2)&amp;lt;/tex&amp;gt; за константное время, без коллизий. Для этого используется хеш модифицированная функция авторства: Dierzfelbinger и Raman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Алгоритм: Пусть целое число &amp;lt;tex&amp;gt;b \ge 0&amp;lt;/tex&amp;gt; и пусть &amp;lt;tex&amp;gt;U = \{0, \ldots, 2^b - 1\}&amp;lt;/tex&amp;gt;. Класс &amp;lt;tex&amp;gt;H_{b,s}&amp;lt;/tex&amp;gt; хеш функций из &amp;lt;tex&amp;gt;U&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;\{0, \ldots, 2^s - 1\}&amp;lt;/tex&amp;gt; определен как &amp;lt;tex&amp;gt;H_{b,s} = \{h_{a} \mid 0 &amp;lt; a &amp;lt; 2^b, a \equiv 1 (\bmod 2)\}&amp;lt;/tex&amp;gt; и для всех &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;U: h_{a}(x) = (ax&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\bmod&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;2^b)&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;div&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;2^{b - s}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм базируется на &amp;lt;b&amp;gt;лемме №1&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Взяв &amp;lt;tex&amp;gt;s = 2 \log n&amp;lt;/tex&amp;gt; получаем хеш функцию &amp;lt;tex&amp;gt;h_{a}&amp;lt;/tex&amp;gt; которая захеширует &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; чисел из &amp;lt;tex&amp;gt;U&amp;lt;/tex&amp;gt; в таблицу размера &amp;lt;tex&amp;gt;O(n^2)&amp;lt;/tex&amp;gt; без коллизий. Очевидно, что &amp;lt;tex&amp;gt;h_{a}(x)&amp;lt;/tex&amp;gt; может быть посчитана для любого &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt; за константное время. Если упаковать несколько чисел в один контейнер так, что они разделены несколькими битами нулей, спокойно применяется &amp;lt;tex&amp;gt;h_{a}&amp;lt;/tex&amp;gt; ко всему контейнеру, а в результате все хеш значения для всех чисел в контейере были посчитаны. Заметим, что это возможно только потому, что в вычисление хеш знчения вовлечены только (&amp;lt;tex&amp;gt;\bmod&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;2^b&amp;lt;/tex&amp;gt;) и (&amp;lt;tex&amp;gt;div&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;2^{b - s}&amp;lt;/tex&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Такая хеш функция может быть найдена за &amp;lt;tex&amp;gt;O(n^3)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Следует отметить, что несмотря на размер таблицы &amp;lt;tex&amp;gt;O(n^2)&amp;lt;/tex&amp;gt;, потребность в памяти не превышает &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; потому, что хеширование используется только для уменьшения количества бит в числе.&lt;br /&gt;
&lt;br /&gt;
==Signature sorting==&lt;br /&gt;
Предположим, что &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; чисел должны быть сортированы, и в каждом &amp;lt;tex&amp;gt;\log m&amp;lt;/tex&amp;gt; бит. Рассматривается, что в каждом числе есть &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt; сегментов, в каждом из которых &amp;lt;tex&amp;gt;\log (m/h)&amp;lt;/tex&amp;gt; бит. Теперь применяем хеширование ко всем сегментам и получаем &amp;lt;tex&amp;gt;2h \log n&amp;lt;/tex&amp;gt; бит хешированных значений для каждого числа. После сортировки на хешированных значениях для всех начальных чисел начальная задача по сортировке &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; чисел по &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; бит в каждом стала задачей по сортировке &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; чисел по &amp;lt;tex&amp;gt; \log (m/h)&amp;lt;/tex&amp;gt; бит в каждом.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Так же, рассмотрим проблему последующего разделения. Пусть &amp;lt;tex&amp;gt;a_{1}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;a_{2}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;a_{p}&amp;lt;/tex&amp;gt; {{---}} &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; чисел и &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; {{---}} множество чисeл. Необходимо разделить &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;p + 1&amp;lt;/tex&amp;gt; наборов таких, что: &amp;lt;tex&amp;gt;S_{0}&amp;lt;/tex&amp;gt; &amp;lt; {&amp;lt;tex&amp;gt;a_{1}&amp;lt;/tex&amp;gt;} &amp;lt; &amp;lt;tex&amp;gt;S_{1}&amp;lt;/tex&amp;gt; &amp;lt; {&amp;lt;tex&amp;gt;a_{2}&amp;lt;/tex&amp;gt;} &amp;lt; &amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt; &amp;lt; {&amp;lt;tex&amp;gt;a_{p}&amp;lt;/tex&amp;gt;} &amp;lt; &amp;lt;tex&amp;gt;S_{p}&amp;lt;/tex&amp;gt;. Т.к. используется &amp;lt;b&amp;gt;signature sorting&amp;lt;/b&amp;gt;, до того как делать вышеописанное разделение, необходимо поделить биты в &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt; на &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt; сегментов и возьмем некоторые из них. Так же делим биты для каждого числа из &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; и оставим только один в каждом числе. По существу для каждого &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt; берутся все &amp;lt;tex&amp;gt;h&amp;lt;/tex&amp;gt; сегментов. Если соответствующие сегменты &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;a_{j}&amp;lt;/tex&amp;gt; совпадают, то нам понадобится только один. Сегменты, которые берутся для числа в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, {{---}} сегмент, который выделяется из &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt;. Таким образом преобразуется начальная задачу о разделении &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; чисел в &amp;lt;tex&amp;gt;\log m&amp;lt;/tex&amp;gt; бит в несколько задач на разделение с числами в &amp;lt;tex&amp;gt;\log (m/h)&amp;lt;/tex&amp;gt; бит.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пример:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;a_{1}&amp;lt;/tex&amp;gt; = 3, &amp;lt;tex&amp;gt;a_{2}&amp;lt;/tex&amp;gt; = 5, &amp;lt;tex&amp;gt;a_{3}&amp;lt;/tex&amp;gt; = 7, &amp;lt;tex&amp;gt;a_{4}&amp;lt;/tex&amp;gt; = 10, S = &amp;lt;tex&amp;gt;\{1, 4, 6, 8, 9, 13, 14\}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Делим числа на 2 сегмента. Для &amp;lt;tex&amp;gt;a_{1}&amp;lt;/tex&amp;gt; получим верхний сегмент 0, нижний 3; &amp;lt;tex&amp;gt;a_{2}&amp;lt;/tex&amp;gt; верхний 1, нижний 1; &amp;lt;tex&amp;gt;a_{3}&amp;lt;/tex&amp;gt; верхний 1, нижний 3; &amp;lt;tex&amp;gt;a_{4}&amp;lt;/tex&amp;gt; верхний 2, нижний 2. Для элементов из S получим: для 1: нижний 1 т.к. он выделяется из нижнего сегмента &amp;lt;tex&amp;gt;a_{1}&amp;lt;/tex&amp;gt;; для 4 нижний 0; для 8 нижний 0; для 9 нижний 1; для 13 верхний 3; для 14 верхний 3. Теперь все верхние сегменты, нижние сегменты 1 и 3, нижние сегменты 4, 5, 6, 7, нижние сегменты  8, 9, 10 формируют 4 новые задачи на разделение.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Использование &amp;lt;b&amp;gt;signature sorting&amp;lt;/b&amp;gt; в данном алгоритме:&lt;br /&gt;
&lt;br /&gt;
Предположим у нас есть набор &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; чисел, которые уже отсортированы как &amp;lt;tex&amp;gt;a_{1}, a_{2}, \ldots, a_{p}&amp;lt;/tex&amp;gt;, и хотется использовать числа в &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; для разделения &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; из &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; чисел &amp;lt;tex&amp;gt;b_{1}, b_{2}, \ldots, b_{q}&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;p + 1&amp;lt;/tex&amp;gt; наборов &amp;lt;tex&amp;gt;S_{0}, S_{1}, \ldots, S_{p}&amp;lt;/tex&amp;gt; что &amp;lt;tex&amp;gt;S_{0}&amp;lt;/tex&amp;gt; &amp;lt; {&amp;lt;tex&amp;gt;a_{1}&amp;lt;/tex&amp;gt;} &amp;lt; &amp;lt;tex&amp;gt;S_{1}&amp;lt;/tex&amp;gt; &amp;lt; &amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt; &amp;lt; {&amp;lt;tex&amp;gt;a_{p}&amp;lt;/tex&amp;gt;} &amp;lt; &amp;lt;tex&amp;gt;S_{p}&amp;lt;/tex&amp;gt;. Назовем это разделением &amp;lt;tex&amp;gt;q&amp;lt;/tex&amp;gt; чисел &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; числами. Пусть &amp;lt;tex&amp;gt;h = \log n/(c \log p)&amp;lt;/tex&amp;gt; для константы &amp;lt;tex&amp;gt;c &amp;gt; 1&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;h/ \log\log n \log p&amp;lt;/tex&amp;gt; битные числа могут быть хранены в одном контейнере, так что одно слово хранит &amp;lt;tex&amp;gt;(\log n)/(c \log\log n)&amp;lt;/tex&amp;gt; бит. Сначала рассматриваем биты в каждом &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt; и каждом &amp;lt;tex&amp;gt;b_{i}&amp;lt;/tex&amp;gt; как сегменты одинаковой длины &amp;lt;tex&amp;gt;h/ \log\log n&amp;lt;/tex&amp;gt;. Рассматриваем сегменты как числа. Чтобы получить неконсервативное преимущество для сортировки, хешируются числа в этих контейнерах (&amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt;-ом и &amp;lt;tex&amp;gt;b_{i}&amp;lt;/tex&amp;gt;-ом), чтобы получить &amp;lt;tex&amp;gt;h/ \log\log n&amp;lt;/tex&amp;gt; хешированных значений в одном контейнере. Чтобы получить значения сразу, при вычислении хеш значений сегменты не влияют друг на друга, можно даже отделить четные и нечетные сегменты в два контейнера. Не умаляя общности считаем, что хеш значения считаются за константное время. Затем, посчитав значения, два контейнера объединяются в один. Пусть &amp;lt;tex&amp;gt;a'_{i}&amp;lt;/tex&amp;gt; хеш контейнер для &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt;, аналогично &amp;lt;tex&amp;gt;b'_{i}&amp;lt;/tex&amp;gt;. В сумме хеш значения имеют &amp;lt;tex&amp;gt;(2 \log n)/(c \log\log n)&amp;lt;/tex&amp;gt; бит. Хотя эти значения разделены на сегменты по &amp;lt;tex&amp;gt;h/ \log\log n&amp;lt;/tex&amp;gt; бит в каждом контейнере. Между сегментами получаются пустоты, которые забиваются нулями. Сначала упаковываются все сегменты в &amp;lt;tex&amp;gt;(2 \log n)/(c \log\log n)&amp;lt;/tex&amp;gt; бит. Потом рассматриваются каждый хеш контейнер как число и сортируются эти хеш контейнеры за линейное время (сортировка рассмотрена чуть позже). После этой сортировки биты в &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;b_{i}&amp;lt;/tex&amp;gt; разрезаны на &amp;lt;tex&amp;gt;\log\log n/h&amp;lt;/tex&amp;gt;. Таким образом получилось дополнительное мультипликативное преимущество в &amp;lt;tex&amp;gt;h/ \log\log n&amp;lt;/tex&amp;gt; (additional multiplicative advantage).&lt;br /&gt;
&lt;br /&gt;
После того, как повторится вышеописанный процесс &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; раз, получится неконсервативное преимущество в &amp;lt;tex&amp;gt;(h/ \log\log n)^g&amp;lt;/tex&amp;gt; раз, в то время, как потрачено только &amp;lt;tex&amp;gt;O(gqt)&amp;lt;/tex&amp;gt; времени, так как каждое многократное деление делятся за линейное время &amp;lt;tex&amp;gt;O(qt)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Хеш функция, которая используется, находится следующим образом. Будут хешироватся сегменты, которые &amp;lt;tex&amp;gt;\log\log n/h&amp;lt;/tex&amp;gt;-ые, &amp;lt;tex&amp;gt;(\log\log n/h)^2&amp;lt;/tex&amp;gt;-ые, &amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt; от всего числа. Для сегментов вида &amp;lt;tex&amp;gt;(\log\log n/h)^t&amp;lt;/tex&amp;gt;, получаем нарезанием всех &amp;lt;tex&amp;gt;p&amp;lt;/tex&amp;gt; чисел на &amp;lt;tex&amp;gt;(\log\log n/h)^t&amp;lt;/tex&amp;gt; сегментов. Рассматривая каждый сегмент как число, получится &amp;lt;tex&amp;gt;p(\log\log n/h)^t&amp;lt;/tex&amp;gt; чисел. Затем получаем одну хеш функцию для этих чисел. Так как &amp;lt;tex&amp;gt;t &amp;lt; \log n&amp;lt;/tex&amp;gt; то, получится не более &amp;lt;tex&amp;gt;\log n&amp;lt;/tex&amp;gt; хеш функций.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сортировку за линейное время о которой было упомянуто ранее. Предполагается, что хешированные значения для каждого контейнера упаковались в &amp;lt;tex&amp;gt;(2 \log n)/(c \log\log n)&amp;lt;/tex&amp;gt; бит. Есть &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; наборов в каждом из которых &amp;lt;tex&amp;gt;q + p&amp;lt;/tex&amp;gt; хешированных контейнеров по &amp;lt;tex&amp;gt;(2 \log n)/(c \log\log n)&amp;lt;/tex&amp;gt; бит в каждом. Эти числа должны быть отсортированы в каждом наборе. Комбинируя все хеш контейнеры в один pool, сортируем следующим образом.&lt;br /&gt;
&lt;br /&gt;
==Лемма №1==&lt;br /&gt;
Даны целые числа &amp;lt;tex&amp;gt;b&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\ge&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\ge&amp;lt;/tex&amp;gt; 0 и &amp;lt;tex&amp;gt;T&amp;lt;/tex&amp;gt; является подмножеством &amp;lt;tex&amp;gt;\{0, \ldots, 2^b - 1\}&amp;lt;/tex&amp;gt;, содержащим &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; элементов, и &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\ge&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;2^{-s + 1}&amp;lt;/tex&amp;gt;С&amp;lt;tex&amp;gt;^k_{n}&amp;lt;/tex&amp;gt;. Функция &amp;lt;tex&amp;gt;h_{a}&amp;lt;/tex&amp;gt; принадлежащая &amp;lt;tex&amp;gt;H_{b,s}&amp;lt;/tex&amp;gt; может быть выбрана за время &amp;lt;tex&amp;gt;O(bn^2)&amp;lt;/tex&amp;gt; так, что количество коллизий &amp;lt;tex&amp;gt;coll(h_{a}, T)&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;\le&amp;lt;/tex&amp;gt; t&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Лемма №2==&lt;br /&gt;
&amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; целых чисел можно отсортировать в &amp;lt;tex&amp;gt;\sqrt{n}&amp;lt;/tex&amp;gt; наборов &amp;lt;tex&amp;gt;S_{1}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;S_{2}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;S_{\sqrt{n}}&amp;lt;/tex&amp;gt; таким образом, что в каждом наборе &amp;lt;tex&amp;gt;\sqrt{n}&amp;lt;/tex&amp;gt; чисел и &amp;lt;tex&amp;gt;S_{i}&amp;lt;/tex&amp;gt; &amp;lt; &amp;lt;tex&amp;gt;S_{j}&amp;lt;/tex&amp;gt; при &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; &amp;lt; &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt;, за время &amp;lt;tex&amp;gt;O(n \log\log n/ \log k)&amp;lt;/tex&amp;gt; и место &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; с не консервативным преимуществом &amp;lt;tex&amp;gt;k \log\log n&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Доказательство:&lt;br /&gt;
&lt;br /&gt;
Алгоритм сортировки &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; целых чисел в &amp;lt;tex&amp;gt;\sqrt{n}&amp;lt;/tex&amp;gt; наборов, представленный ниже, является доказательством данной леммы. &lt;br /&gt;
&lt;br /&gt;
==Сортировка n целых чисел в sqrt(n) наборов==&lt;br /&gt;
Постановка задачи и решение некоторых проблем:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Рассмотрим проблему сортировки &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; целых чисел из множества &amp;lt;tex&amp;gt;\{0, 1, \ldots, m - 1\}&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;\sqrt{n}&amp;lt;/tex&amp;gt; наборов как в &amp;lt;b&amp;gt;лемме №2&amp;lt;/b&amp;gt;. Предполагая, что в каждом контейнере &amp;lt;tex&amp;gt;k \log\log n \log m&amp;lt;/tex&amp;gt; бит и хранит число в &amp;lt;tex&amp;gt;\log m&amp;lt;/tex&amp;gt; бит. Поэтому неконсервативное преимущество &amp;lt;tex&amp;gt;k \log \log n&amp;lt;/tex&amp;gt;. Так же предполагаем, что &amp;lt;tex&amp;gt;\log m \ge \log n \log\log n&amp;lt;/tex&amp;gt;. Иначе можно использовать radix sort для сортировки за время &amp;lt;tex&amp;gt;O(n \log\log n)&amp;lt;/tex&amp;gt; и линейную память. Делим &amp;lt;tex&amp;gt;\log m&amp;lt;/tex&amp;gt; бит, используемых для представления каждого числа, в &amp;lt;tex&amp;gt;\log n&amp;lt;/tex&amp;gt; блоков. Таким образом каждый блок содержит как минимум &amp;lt;tex&amp;gt;\log\log n&amp;lt;/tex&amp;gt; бит. &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ый блок содержит с &amp;lt;tex&amp;gt;i \log m/ \log n&amp;lt;/tex&amp;gt;-ого по &amp;lt;tex&amp;gt;((i + 1) \log m/ \log n - 1)&amp;lt;/tex&amp;gt;-ый биты. Биты считаются с наименьшего бита начиная с нуля. Теперь у нас имеется &amp;lt;tex&amp;gt;2 \log n&amp;lt;/tex&amp;gt;-уровневый алгоритм, который работает следующим образом:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
На каждой стадии работаем с одним блоком бит. Назовем эти блоки маленькими числами (далее м.ч.) потому, что каждое м.ч. теперь содержит только &amp;lt;tex&amp;gt;\log m/ \log n&amp;lt;/tex&amp;gt; бит. Каждое число представлено и соотносится с м.ч., над которым работаем в данный момент. Положим, что нулевая стадия работает с самыми большим блоком (блок номер &amp;lt;tex&amp;gt;\log n - 1&amp;lt;/tex&amp;gt;). Предполагаем, что биты этих м.ч. упакованы в &amp;lt;tex&amp;gt;n/ \log n&amp;lt;/tex&amp;gt; контейнеров с &amp;lt;tex&amp;gt;\log n&amp;lt;/tex&amp;gt; м.ч. упакованных в один контейнер. Пренебрегая временем, потраченным на на эту упаковку, считается, что она бесплатна. По &amp;lt;b&amp;gt;лемме №3&amp;lt;/b&amp;gt; находим медиану этих &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; м.ч. за время и память &amp;lt;tex&amp;gt;O(n/ \log n)&amp;lt;/tex&amp;gt;. Пусть &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; это найденная медиана. Тогда &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; м.ч. могут быть разделены на не более чем три группы: &amp;lt;tex&amp;gt;S_{1}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;S_{2}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;S_{3}&amp;lt;/tex&amp;gt;. &amp;lt;tex&amp;gt;S_{1}&amp;lt;/tex&amp;gt; содержит м.ч. которые меньше &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;S_{2}&amp;lt;/tex&amp;gt; содержит м.ч. равные &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;S_{3}&amp;lt;/tex&amp;gt; содержит м.ч. большие &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;. Так же мощность &amp;lt;tex&amp;gt;S_{1}&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;S_{3} &amp;lt;/tex&amp;gt;\le &amp;lt;tex&amp;gt;n/2&amp;lt;/tex&amp;gt;. Мощность &amp;lt;tex&amp;gt;S_{2}&amp;lt;/tex&amp;gt; может быть любой. Пусть &amp;lt;tex&amp;gt;S'_{2}&amp;lt;/tex&amp;gt; это набор чисел, у которых наибольший блок находится в &amp;lt;tex&amp;gt;S_{2}&amp;lt;/tex&amp;gt;. Тогда убираем &amp;lt;tex&amp;gt;\log m/ \log n&amp;lt;/tex&amp;gt; бит (наибольший блок) из каждого числа из &amp;lt;tex&amp;gt;S'_{2}&amp;lt;/tex&amp;gt; из дальнейшего рассмотрения. Таким образом после первой стадии каждое число находится в наборе размера не большего половины размера начального набора или один из блоков в числе убран из дальнейшего рассмотрения. Так как в каждом числе только &amp;lt;tex&amp;gt;\log n&amp;lt;/tex&amp;gt; блоков, для каждого числа потребуется не более &amp;lt;tex&amp;gt;\log n&amp;lt;/tex&amp;gt; стадий чтобы поместить его в набор половинного размера. За &amp;lt;tex&amp;gt;2 \log n&amp;lt;/tex&amp;gt; стадий все числа будут отсортированы. Так как на каждой стадии работаем с &amp;lt;tex&amp;gt;n/ \log n&amp;lt;/tex&amp;gt; контейнерами, то игнорируя время, необходимое на упаковку м.ч. в контейнеры и помещение м.ч. в нужный набор, затрачивается &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; времени из-за &amp;lt;tex&amp;gt;2 \log n&amp;lt;/tex&amp;gt; стадий.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Сложная часть алгоритма заключается в том, как поместить маленькие числа в набор, которому принадлежит соответствующее число, после предыдущих операций деления набора в нашем алгоритме. Предположим, что &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; чисел уже поделены в &amp;lt;tex&amp;gt;e&amp;lt;/tex&amp;gt; наборов. Используем &amp;lt;tex&amp;gt;\log e&amp;lt;/tex&amp;gt; битов чтобы сделать марки для каждого набора. Теперь хотелось бы использовать &amp;lt;b&amp;gt;лемму №6&amp;lt;/b&amp;gt;. Полный размер маркера для каждого контейнера должен быть &amp;lt;tex&amp;gt;\log n/2&amp;lt;/tex&amp;gt;, и маркер использует &amp;lt;tex&amp;gt;\log e&amp;lt;/tex&amp;gt; бит, количество маркеров &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; в каждом контейнере должно быть не более &amp;lt;tex&amp;gt;\log n/(2\log e)&amp;lt;/tex&amp;gt;. В дальнейшем т.к. &amp;lt;tex&amp;gt;g = \log n/(2 \log e)&amp;lt;/tex&amp;gt; м.ч. должны влезать в контейнер. Каждый контейнер содержит &amp;lt;tex&amp;gt;k \log\log n \log n&amp;lt;/tex&amp;gt; блоков, каждое м.ч. может содержать &amp;lt;tex&amp;gt;O(k \log n/g) = O(k \log e)&amp;lt;/tex&amp;gt; блоков. Заметим, что используем неконсервативное преимущество в &amp;lt;tex&amp;gt;\log\log n&amp;lt;/tex&amp;gt; для использования &amp;lt;b&amp;gt;леммы №6&amp;lt;/b&amp;gt;. Поэтому предполагается, что &amp;lt;tex&amp;gt;\log n/(2 \log e)&amp;lt;/tex&amp;gt; м.ч. в каждом из которых &amp;lt;tex&amp;gt;k \log e&amp;lt;/tex&amp;gt; блоков битов числа упакованный в один контейнер. Для каждого м.ч. используется маркер из &amp;lt;tex&amp;gt;\log e&amp;lt;/tex&amp;gt; бит, который показывает к какому набору он принадлежит. Предполагаем, что маркеры так же упакованы в контейнеры как и м.ч. Так как каждый контейнер для маркеров содержит &amp;lt;tex&amp;gt;\log n/(2 \log e)&amp;lt;/tex&amp;gt; маркеров, то для каждого контейнера требуется &amp;lt;tex&amp;gt;(\log n)/2&amp;lt;/tex&amp;gt; бит. Таким образом &amp;lt;b&amp;gt;лемма №6&amp;lt;/b&amp;gt; может быть применена для помещения м.ч. в наборы, которым они принадлежат. Так как используется &amp;lt;tex&amp;gt;O((n \log e)/ \log n)&amp;lt;/tex&amp;gt; контейнеров то время необходимое для помещения м.ч. в их наборы потребуется &amp;lt;tex&amp;gt;O((n \log e)/ \log n)&amp;lt;/tex&amp;gt; времени.&lt;br /&gt;
&lt;br /&gt;
Стоит отметить, что процесс помещения нестабилен, т.к. основан на алгоритме из &amp;lt;b&amp;gt;леммы №6&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
При таком помещении сразу возникает следующая проблемой.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим число &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt;, которое является &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ым в наборе &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;. Рассмотрим блок &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; (назовем его &amp;lt;tex&amp;gt;a'&amp;lt;/tex&amp;gt;), который является &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ым м.ч. в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;. Когда используется вышеописанный метод перемещения нескольких следующих блоков &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; (назовем это &amp;lt;tex&amp;gt;a''&amp;lt;/tex&amp;gt;) в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;a''&amp;lt;/tex&amp;gt; просто перемещен на позицию в наборе &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, но не обязательно на позицию &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt; (где расположен &amp;lt;tex&amp;gt;a'&amp;lt;/tex&amp;gt;). Если значение блока &amp;lt;tex&amp;gt;a'&amp;lt;/tex&amp;gt; одинаково для всех чисел в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;, то это не создаст проблемы потому, что блок одинаков вне зависимости от того в какое место в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt; помещен &amp;lt;tex&amp;gt;a''&amp;lt;/tex&amp;gt;. Иначе у нас возникает проблема дальнейшей сортировки. Поэтому поступаем следующим образом: На каждой стадии числа в одном наборе работают на общем блоке, который назовем &amp;quot;текущий блок набора&amp;quot;. Блоки, которые предшествуют текущему блоку содержат важные биты и идентичны для всех чисел в наборе. Когда помещаем больше бит в набор, помещаются последующие блоки вместе с текущим блоком в набор. Так вот, в вышеописанном процессе помещения предполагается, что самый значимый блок среди &amp;lt;tex&amp;gt;k \log e&amp;lt;/tex&amp;gt; блоков это текущий блок. Таким образом после того, как помещены эти &amp;lt;tex&amp;gt;k \log e&amp;lt;/tex&amp;gt; блоков в набор, удаляется изначальный текущий блок, потому, что известно, что эти &amp;lt;tex&amp;gt;k \log e&amp;lt;/tex&amp;gt; блоков перемещены в правильный набор и нам не важно где находился начальный текущий блок. Тот текущий блок находится в перемещенных &amp;lt;tex&amp;gt;k \log e&amp;lt;/tex&amp;gt; блоках.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Стоит отметить, что после нескольких уровней деления размер наборов станет маленьким. &amp;lt;b&amp;gt;Леммы №4, №5, №6&amp;lt;/b&amp;gt; расчитанны на не очень маленькие наборы. Но поскольку сортируется набор из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; элементов в наборы размера &amp;lt;tex&amp;gt;\sqrt{n}&amp;lt;/tex&amp;gt;, то проблем не должно быть.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Собственно алгоритм:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Algorithm Sort(&amp;lt;tex&amp;gt;k \log\log n&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;level&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;a_{0}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;a_{1}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;a_{t}&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;k \log\log n&amp;lt;/tex&amp;gt; это неконсервативное преимущество, &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt;-ые это входящие целые числа в наборе, которые надо отсортировать, &amp;lt;tex&amp;gt;level&amp;lt;/tex&amp;gt; это уровень рекурсии.&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;tex&amp;gt;if level == 1&amp;lt;/tex&amp;gt; тогда изучить размер набора. Если размер меньше или равен &amp;lt;tex&amp;gt;\sqrt{n}&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;return&amp;lt;/tex&amp;gt;. Иначе разделить этот набор в &amp;lt;tex&amp;gt;\le&amp;lt;/tex&amp;gt; 3 набора используя &amp;lt;b&amp;gt;лемму №3&amp;lt;/b&amp;gt;, чтобы найти медиану а затем использовать &amp;lt;b&amp;gt;лемму №6&amp;lt;/b&amp;gt; для сортировки. Для набора где все элементы равны медиане, не рассматривать текущий блок и текущим блоком сделать следующий. Создать маркер, являющийся номером набора для каждого из чисел (0, 1 или 2). Затем направьте маркер для каждого числа назад к месту, где число находилось в начале. Также направьте двубитное число для каждого входного числа, указывающее на текущий блок. &amp;lt;tex&amp;gt;Return&amp;lt;/tex&amp;gt;.&lt;br /&gt;
# От &amp;lt;tex&amp;gt;u = 1&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;k&amp;lt;/tex&amp;gt;&lt;br /&gt;
## Упаковать &amp;lt;tex&amp;gt;a^{(u)}_{i}&amp;lt;/tex&amp;gt;-ый в часть из &amp;lt;tex&amp;gt;1/k&amp;lt;/tex&amp;gt;-ых номеров контейнеров, где &amp;lt;tex&amp;gt;a^{(u)}_{i}&amp;lt;/tex&amp;gt; содержит несколько непрерывных блоков, которые состоят из &amp;lt;tex&amp;gt;1/k&amp;lt;/tex&amp;gt;-ых битов &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt; и у которого текущий блок это самый крупный блок.&lt;br /&gt;
## Вызвать Sort(&amp;lt;tex&amp;gt;k \log\log n&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;level - 1&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;a^{(u)}_{0}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;a^{(u)}_{1}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;a^{(u)}_{t}&amp;lt;/tex&amp;gt;). Когда алгоритм возвращается из этой рекурсии, маркер, показывающий для каждого числа, к которому набору это число относится, уже отправлен назад к месту где число находится во входных данных. Число имеющее наибольшее число бит в &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt;, показывающее на ткущий блок в нем, так же отправлено назад к &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
## Отправить &amp;lt;tex&amp;gt;a_{i}-ые к их наборам, используя &amp;lt;b&amp;gt;лемму №6&amp;lt;/b&amp;gt;.&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
end.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Algorithm IterateSort&lt;br /&gt;
Call Sort(&amp;lt;tex&amp;gt;k \log\log n&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\log_{k}((\log n)/4)&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;a_{0}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;a_{1}&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;a_{n - 1}&amp;lt;/tex&amp;gt;);&lt;br /&gt;
&lt;br /&gt;
от 1 до 5&lt;br /&gt;
# Поместить &amp;lt;tex&amp;gt;a_{i}&amp;lt;/tex&amp;gt; в соответствующий набор с помощью bucket sort потому, что наборов около &amp;lt;tex&amp;gt;\sqrt{n}&amp;lt;/tex&amp;gt;&lt;br /&gt;
# Для каждого набора &amp;lt;tex&amp;gt;S = &amp;lt;/tex&amp;gt;{&amp;lt;tex&amp;gt;a_{i_{0}}, a_{i_{1}}, \ldots, a_{i_{t}}&amp;lt;/tex&amp;gt;}, если &amp;lt;tex&amp;gt;t &amp;gt; sqrt{n}&amp;lt;/tex&amp;gt;, вызвать Sort(&amp;lt;tex&amp;gt;k \log\log n&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;\log_{k}((\log n)/4)&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;a_{i_{0}}, a_{i_{1}}, \ldots, a_{i_{t}}&amp;lt;/tex&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Время работы алгоритма &amp;lt;tex&amp;gt;O(n \log\log n/ \log k)&amp;lt;/tex&amp;gt;, что доказывает &amp;lt;b&amp;gt;лемму №2&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Лемма №3==&lt;br /&gt;
Выбор &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;-ого наибольшего числа среди &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; чисел упакованных в &amp;lt;tex&amp;gt;n/g&amp;lt;/tex&amp;gt; контейнеров может быть сделана за &amp;lt;tex&amp;gt;O(n \log g/g)&amp;lt;/tex&amp;gt; время и с использованием &amp;lt;tex&amp;gt;O(n/g)&amp;lt;/tex&amp;gt; места. Конкретно медиана может быть так найдена.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Доказательство:&lt;br /&gt;
&lt;br /&gt;
Так как возможно делать попарное сравнение &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; чисел в одном контейнере с &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; числами в другом и извлекать большие числа из одного контейнера и меньшие из другого за константное время, возможно упаковать медианы из первого, второго, &amp;lt;tex&amp;gt;\ldots&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt;-ого чисел из 5 контейнеров в один контейнер за константное время. Таким образом набор &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;  из медиан теперь содержится в &amp;lt;tex&amp;gt;n/(5g)&amp;lt;/tex&amp;gt; контейнерах. Рекурсивно находим медиану &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt;S&amp;lt;/tex&amp;gt;. Используя &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; уберем хотя бы &amp;lt;tex&amp;gt;n/4&amp;lt;/tex&amp;gt; чисел среди &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;. Затем упакуем оставшиеся из &amp;lt;tex&amp;gt;n/g&amp;lt;/tex&amp;gt; контейнеров в &amp;lt;tex&amp;gt;3n/4g&amp;lt;/tex&amp;gt; контейнеров и затем продолжим рекурсию.&lt;br /&gt;
&lt;br /&gt;
==Лемма №4==&lt;br /&gt;
Если &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; целых чисел, в сумме использующие &amp;lt;tex&amp;gt;(\log n)/2&amp;lt;/tex&amp;gt; бит, упакованы в один контейнер, тогда &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; чисел в &amp;lt;tex&amp;gt;n/g&amp;lt;/tex&amp;gt; контейнерах могут быть отсортированы за время &amp;lt;tex&amp;gt;O((n/g) \log g)&amp;lt;/tex&amp;gt;, с использованием &amp;lt;tex&amp;gt;O(n/g)&amp;lt;/tex&amp;gt; места.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Доказательство:&lt;br /&gt;
&lt;br /&gt;
Так как используется только &amp;lt;tex&amp;gt;(\log n)/2&amp;lt;/tex&amp;gt; бит в каждом контейнере для хранения &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; чисел, используем bucket sorting чтобы отсортировать все контейнеры. представляя каждый как число, что занимает &amp;lt;tex&amp;gt;O(n/g)&amp;lt;/tex&amp;gt; времени и места. Потому, что используется &amp;lt;tex&amp;gt;(\log n)/2&amp;lt;/tex&amp;gt; бит на контейнер понадобится &amp;lt;tex&amp;gt;\sqrt{n}&amp;lt;/tex&amp;gt; шаблонов для всех контейнеров. Затем поместим &amp;lt;tex&amp;gt;g &amp;lt; (\log n)/2&amp;lt;/tex&amp;gt; контейнеров с одинаковым шаблоном в одну группу. Для каждого шаблона останется не более &amp;lt;tex&amp;gt;g - 1&amp;lt;/tex&amp;gt; контейнеров которые не смогут образовать группу. Поэтому не более &amp;lt;tex&amp;gt;\sqrt{n}(g - 1)&amp;lt;/tex&amp;gt; контейнеров не смогут сформировать группу. Для каждой группы помещаем &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-е число во всех &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; контейнерах в один. Таким образом берутся &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt;-целых векторов и получаем &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt;-целых векторов где &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ый вектор содержит &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ое число из входящего вектора. Эта транспозиция может быть сделана за время &amp;lt;tex&amp;gt;O(g \log g)&amp;lt;/tex&amp;gt;, с использованием &amp;lt;tex&amp;gt;O(g)&amp;lt;/tex&amp;gt; места. Для всех групп это занимает время &amp;lt;tex&amp;gt;O((n/g) \log g)&amp;lt;/tex&amp;gt;, с использованием &amp;lt;tex&amp;gt;O(n/g)&amp;lt;/tex&amp;gt; места.&lt;br /&gt;
&lt;br /&gt;
Для контейнеров вне групп (которых &amp;lt;tex&amp;gt;\sqrt{n}(g - 1)&amp;lt;/tex&amp;gt; штук) разбираем и собираем заново контейнеры. На это потребуется не более &amp;lt;tex&amp;gt;O(n/g)&amp;lt;/tex&amp;gt; места и времени. После всего этого используем bucket sorting вновь для сортировки &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; контейнеров. таким образом все числа отсортированы.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Заметим, что когда &amp;lt;tex&amp;gt;g = O( \log n)&amp;lt;/tex&amp;gt; сортировка &amp;lt;tex&amp;gt;O(n)&amp;lt;/tex&amp;gt; чисел в &amp;lt;tex&amp;gt;n/g&amp;lt;/tex&amp;gt; контейнеров произойдет за время &amp;lt;tex&amp;gt;O((n/g) \log\log n)&amp;lt;/tex&amp;gt;, с использованием O(n/g) места. Выгода очевидна.&lt;br /&gt;
==Лемма №5==&lt;br /&gt;
Если принять, что каждый контейнер содержит &amp;lt;tex&amp;gt; \log m &amp;gt; \log n&amp;lt;/tex&amp;gt; бит, и &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; чисел, в каждом из которых &amp;lt;tex&amp;gt;(\log m)/g&amp;lt;/tex&amp;gt; бит, упакованы в один контейнер. Если каждое число имеет маркер, содержащий &amp;lt;tex&amp;gt;(\log n)/(2g)&amp;lt;/tex&amp;gt; бит, и &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; маркеров упакованы в один контейнер таким же образом&amp;lt;tex&amp;gt;^*&amp;lt;/tex&amp;gt;, что и числа, тогда &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; чисел в &amp;lt;tex&amp;gt;n/g&amp;lt;/tex&amp;gt; контейнерах могут быть отсортированы по их маркерам за время &amp;lt;tex&amp;gt;O((n \log\log n)/g)&amp;lt;/tex&amp;gt; с использованием &amp;lt;tex&amp;gt;O(n/g)&amp;lt;/tex&amp;gt; места.&lt;br /&gt;
(*): если число &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; упаковано как &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;-ое число в &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;-ом контейнере для чисел, тогда маркер для &amp;lt;tex&amp;gt;a&amp;lt;/tex&amp;gt; упакован как &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;-ый маркер в &amp;lt;tex&amp;gt;t&amp;lt;/tex&amp;gt;-ом контейнере для маркеров.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Доказательство:&lt;br /&gt;
&lt;br /&gt;
Контейнеры для маркеров могут быть отсортированы с помощью bucket sort потому, что каждый контейнер использует &amp;lt;tex&amp;gt;( \log n)/2&amp;lt;/tex&amp;gt; бит. Сортировка сгруппирует контейнеры для чисел как в &amp;lt;b&amp;gt;лемме №4&amp;lt;/b&amp;gt;. Перемещаем каждую группу контейнеров для чисел.&lt;br /&gt;
&lt;br /&gt;
==Лемма №6==&lt;br /&gt;
предположим, что каждый контейнер содержит &amp;lt;tex&amp;gt;\log m \log\log n &amp;gt; \log n&amp;lt;/tex&amp;gt; бит, что &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; чисел, в каждом из которых &amp;lt;tex&amp;gt;(\log m)/g&amp;lt;/tex&amp;gt; бит, упакованы в один контейнер, что каждое число имеет маркер, содержащий &amp;lt;tex&amp;gt;(\log n)/(2g)&amp;lt;/tex&amp;gt; бит, и что &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; маркеров упакованы в один контейнер тем же образом что и числа, тогда &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; чисел в &amp;lt;tex&amp;gt;n/g&amp;lt;/tex&amp;gt; контейнерах могут быть отсортированы по своим маркерам за время &amp;lt;tex&amp;gt;O(n/g)&amp;lt;/tex&amp;gt;, с использованием &amp;lt;tex&amp;gt;O(n/g)&amp;lt;/tex&amp;gt; памяти.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Доказательство:&lt;br /&gt;
&lt;br /&gt;
Заметим, что несмотря на то, что длина контейнера &amp;lt;tex&amp;gt;\log m \log\log n&amp;lt;/tex&amp;gt; бит всего &amp;lt;tex&amp;gt;\log m&amp;lt;/tex&amp;gt; бит используется для хранения упакованных чисел. Так же как в &amp;lt;b&amp;gt;леммах №4, №5&amp;lt;/b&amp;gt; сортируем контейнеры упакованных маркеров с помощью bucket sort. Для того, чтобы перемещать контейнеры чисел помещаем &amp;lt;tex&amp;gt;g \log\log n&amp;lt;/tex&amp;gt; вместо &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; контейнеров чисел в одну группу. Для транспозиции чисел в группе, содержащей &amp;lt;tex&amp;gt;g \log\log n&amp;lt;/tex&amp;gt; контейнеров, упаковываем &amp;lt;tex&amp;gt;g \log\log n&amp;lt;/tex&amp;gt; контейнеров в &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt;, упаковывая &amp;lt;tex&amp;gt;\log\log n&amp;lt;/tex&amp;gt; контейнеров в один. Далее делаем транспозицию над &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; контейнерами. Таким образом перемещение занимает всего &amp;lt;tex&amp;gt;O(g \log\log n)&amp;lt;/tex&amp;gt; времени для каждой группы и &amp;lt;tex&amp;gt;O(n/g)&amp;lt;/tex&amp;gt; времени для всех чисел. После завершения транспозиции, распаковываем &amp;lt;tex&amp;gt;g&amp;lt;/tex&amp;gt; контейнеров в &amp;lt;tex&amp;gt;g \log\log n&amp;lt;/tex&amp;gt; контейнеров.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Заметим, что если длина контейнера &amp;lt;tex&amp;gt;\log m \log\log n&amp;lt;/tex&amp;gt; и только &amp;lt;tex&amp;gt;\log m&amp;lt;/tex&amp;gt; бит используется для упаковки &amp;lt;tex&amp;gt;g \le \log n&amp;lt;/tex&amp;gt; чисел в один контейнер, тогда выбор в &amp;lt;b&amp;gt;лемме №3&amp;lt;/b&amp;gt; может быть сделан за время и место &amp;lt;tex&amp;gt;O(n/g)&amp;lt;/tex&amp;gt;, потому, что упаковка в доказатльстве &amp;lt;b&amp;gt;леммы №3&amp;lt;/b&amp;gt; теперь может быть сделана за время &amp;lt;tex&amp;gt;O(n/g)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Литераура==&lt;br /&gt;
# Deterministic Sorting in O(n \log\log n) Time and Linear Space. Yijie Han.&lt;br /&gt;
# А. Андерссон. Fast deterministic sorting and searching in linear space. Proc. 1996 IEEE Symp. on Foundations of Computer Science. 135-141(1996)&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Сортировки]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%81%D0%B5%D1%82%D0%B8_%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_%D0%BD%D0%B0_%D1%82%D0%BE,_%D1%87%D1%82%D0%BE_%D0%BE%D0%BD%D0%B0_%D1%8F%D0%B2%D0%BB%D1%8F%D0%B5%D1%82%D1%81%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D1%83%D1%8E%D1%89%D0%B5%D0%B9&amp;diff=23264</id>
		<title>Проверка сети компараторов на то, что она является сортирующей</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%81%D0%B5%D1%82%D0%B8_%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2_%D0%BD%D0%B0_%D1%82%D0%BE,_%D1%87%D1%82%D0%BE_%D0%BE%D0%BD%D0%B0_%D1%8F%D0%B2%D0%BB%D1%8F%D0%B5%D1%82%D1%81%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D1%83%D1%8E%D1%89%D0%B5%D0%B9&amp;diff=23264"/>
				<updated>2012-06-02T16:32:35Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: Новая страница: «Есть два способа проверить сеть из n компараторов на то, что она сортирующая.  __TOC__  == Наив...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Есть два способа проверить сеть из n компараторов на то, что она сортирующая.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Наивный способ ==&lt;br /&gt;
Первый, наивный способ — перебрать все перестановки из &amp;lt;tex&amp;gt; n &amp;lt;/tex&amp;gt; элементов, пропустить их через сеть и проверить их на то, что они отсортированы. Этот подход потребует &amp;lt;tex&amp;gt; O(n! \cdot Comp(n)) &amp;lt;/tex&amp;gt; действий, где &amp;lt;tex&amp;gt; Comp(n) &amp;lt;/tex&amp;gt; — количество компараторов в сети из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; элементов. Обычно это количество можно оценить как &amp;lt;tex&amp;gt; n \log^2n &amp;lt;/tex&amp;gt; ([[Сеть_Бетчера|Сеть Бетчера]]). Таким образом, получаем асимптотику &amp;lt;tex&amp;gt; O(n!n \log^2n) &amp;lt;/tex&amp;gt;, и при &amp;lt;tex&amp;gt;n = 10&amp;lt;/tex&amp;gt; проверить сеть очень проблематично.&lt;br /&gt;
&lt;br /&gt;
== 0-1 принцип ==&lt;br /&gt;
{{Main|0-1 принцип}}&lt;br /&gt;
Второй способ основывается на том, что если сеть сортирует все последовательности из нулей и единиц, то сеть является сортирующей. Таким образом, можно проверить сеть за &amp;lt;tex&amp;gt; O(2^n \cdot Comp(n)) &amp;lt;/tex&amp;gt;, что намного быстрее.&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
*[http://www.inf.fh-flensburg.de/lang/algorithmen/sortieren/networks/indexen.htm Sorting networks]&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Sorting_network Wikipedia — Sorting networks]&lt;br /&gt;
*Дональд Кнут — Искусство программирования — Том 3 — Глава 5.3.4 — стр. 249&lt;br /&gt;
&lt;br /&gt;
[[Категория:Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория:Сортирующие сети]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16804</id>
		<title>Обсуждение:Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16804"/>
				<updated>2012-01-16T16:39:19Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tick| ticked=1}} Не показано, почему система &amp;lt;tex&amp;gt; \oplus, \land, 1&amp;lt;/tex&amp;gt; удовлетворяет критерию Поста.&lt;br /&gt;
{{tick| ticked=1}}  Перенести сюда [[Преобразование Мёбиуса для получения коэффициентов полинома Жегалкина]]&lt;br /&gt;
{{tick| ticked=1}}  Добавить примеры построения Полинома Жегалкина первым и вторым способом для функций хотя бы трех переменных.&lt;br /&gt;
:--[[Участник:Rybak|Андрей Рыбак]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16803</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16803"/>
				<updated>2012-01-16T16:37:17Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_{000...000} \oplus a_{100...0} x_1 \oplus a_{010...0}  x_2 \oplus ... \oplus a_{00...01}  x_n \oplus a_{110...0} x_1 x_2 \oplus ... \oplus a_{00...011} x_{n-1} x_n \oplus ... \oplus a_{11..1} x_1 x_2 ... x_n  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1} \ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
=== По таблице истинности ===&lt;br /&gt;
Пусть для функции &amp;lt;tex&amp;gt;f(x_1,x_2,..,x_n)&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты с учётом того, что &amp;lt;tex&amp;gt; a \oplus 1 = \bar{a}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; a \oplus 0 = a&amp;lt;/tex&amp;gt;. За каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt; и её таблица истинности:&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 |-&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt;&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||1||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||1||0&lt;br /&gt;
|}&lt;br /&gt;
Построим для неё полином Жегалкина:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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 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 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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;f(0,0,0,0) = 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;a_{0000} = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Далее подставляем все остальные наборы в порядке возрастания числа единиц, подставляя вновь полученные значения в следующие формулы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,0) = a_{0000} \oplus a_{1000} = 1 \Rightarrow a_{1000} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,0) = a_{0000} \oplus a_{0100} = 0 \Rightarrow a_{0100} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,0) = a_{0000} \oplus a_{0010} = 0 \Rightarrow a_{0010} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,0,1) = a_{0000} \oplus a_{0001} = 0 \Rightarrow a_{0001} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,0) = a_{0000} \oplus a_{1000} \oplus a_{0100} \oplus a_{1100} = 1 \Rightarrow a_{1100} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,0) = a_{0000} \oplus a_{1000} \oplus a_{0100} \oplus a_{1010} = 0 \Rightarrow a_{1010} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,1) = a_{0000} \oplus a_{1000} \oplus a_{0100} \oplus a_{1001} = 0 \Rightarrow a_{1001} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,0) = a_{0000} \oplus a_{0100} \oplus a_{0010} \oplus a_{0110} = 1 \Rightarrow a_{0110} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,1) = a_{0000} \oplus a_{0100} \oplus a_{0001} \oplus a_{0101} = 0 \Rightarrow a_{0101} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,1) = a_{0000} \oplus a_{0010} \oplus a_{0001} \oplus a_{0011} = 0 \Rightarrow a_{0011} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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 a_{1110} \oplus a_{1101} \oplus a_{1011} \oplus a_{0111} \oplus a_{1111} = 0 \Rightarrow a_{1111} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, полином Жегалкина выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]] ===&lt;br /&gt;
Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то можно сначала убрать дизъюнкцию, используя правило Де-Моргана, а все отрицания заменить прибавлением единицы по модулю два, после чего раскрыть скобки по обычным правилам, при этом учитывая, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому. Либо же можно заменить дизъюнкцию по следующему правилу:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt; A \lor B = AB \oplus A \oplus B &amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если функция задана в СДНФ, то так как при любых значениях входных переменных в единицу обращается не более одного члена выражения, то достаточно просто заменить все дизъюнкции исключающим ИЛИ.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция в ДНФ &amp;lt;tex&amp;gt; f(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 &amp;lt;/tex&amp;gt;, построим полином Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Запишем функцию так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Сгруппируем слагаемые и воспользуемся преобразованием (1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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 x_1 x_2 x_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Воспользуемся свойствами конъюнкции &amp;lt;tex&amp;gt;A \land A = A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\neg A \land A = 0&amp;lt;/tex&amp;gt;, а также тем, что &amp;lt;tex&amp;gt;A \oplus A = 0&amp;lt;/tex&amp;gt;, и упростим выражение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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) + x_2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ещё раз воспользуемся преобразованием (1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus (x_1 x_2 \neg x_3  x_4 \oplus \neg x_1 \neg x_4)x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобку по алгебраическим правилам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus x_1 x_2 x_2 \neg x_3  x_4 \oplus \neg x_1 x_2 \neg x_4 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Снова воспользуемся свойствами конъюнкции и исключающего ИЛИ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заменим отрицание на прибавление &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выкинем парные слагаемые и получим окончательную формулу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Метод треугольника === &amp;lt;!-- Да, копипаста с википедии, и что? Метод же прост и удобен --&amp;gt;&lt;br /&gt;
Метод треугольника позволяет преобразовать таблицу истинности в полином Жегалкина путём построения вспомогательной треугольной таблицы в соответствии со следующими правилами:&lt;br /&gt;
# Строится полная таблица истинности, в которой строки идут в порядке возрастания двоичных кодов от 000...00 до 111...11.&lt;br /&gt;
# Строится вспомогательная треугольная таблица, в которой первый столбец совпадает со столбцом значений функции в таблице истинности.&lt;br /&gt;
# Ячейка в каждом последующем столбце получается путём сложения по модулю 2 двух ячеек предыдущего столбца — стоящей в той же строке и строкой ниже.&lt;br /&gt;
# Столбцы вспомогательной таблицы нумеруются двоичными кодами в том же порядке, что и строки таблицы истинности.&lt;br /&gt;
# Каждому двоичному коду ставится в соответствие один из членов полинома Жегалкина в зависимости от позиций кода, в которых стоят единицы. Например, ячейке 111 соответствует член ABC, ячейке 101 — член AC, ячейке 010 — член B, ячейке 000 — член 1 и т.д.&lt;br /&gt;
# Если в верхней строке какого-либо столбца стоит единица, то соответствующий член присутствует в полиноме Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Фактически, этот метод является модификацией метода построения по таблице истинности, описанного выше. По сравнению с ним он удобнее тем, что расчёты занимают мало места и в них сложнее ошибиться, но метод треугольника требует бо́льшего количества операций.&lt;br /&gt;
&lt;br /&gt;
Пример преобразования таблицы истинности в полином Жегалкина для функции трёх переменных P(A,B,C) показан на рисунке.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Преобразование таблицы истинности в полином Жегалкина методом треугольника.gif]]&lt;br /&gt;
&lt;br /&gt;
Чтобы получить формулу, по которой рассчитывается какой-либо коэффициент, нужно из клетки, в которой он записан, пройтись всеми возможными путями влево, до столбца ''P'' таблицы истинности, делая ходы влево и влево-вниз, записать значения в конечных ячейках и сложить их все между собой по модулю 2.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в первом столбце сверху записан коэффициент &amp;lt;tex&amp;gt; a_0 = P(0,0,0) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
во втором — &amp;lt;tex&amp;gt; a_1 = P(0,0,0) \oplus P(0,0,1) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
в третьем — &amp;lt;tex&amp;gt; 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) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
в четвёртом —&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; 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), &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и так далее, то есть при построении вспомогательной таблицы коэффициенты полинома просчитываются автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Преобразование Мёбиуса ===&lt;br /&gt;
Пусть задана [[Определение булевой функции|булева функция]] &amp;lt;tex&amp;gt;f: B^n \rightarrow B, \;\; B=\{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Любая булева функция представима в виде полинома Жегалкина, притом единственным образом.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; i = (i_1, i_2, .. i_n), \;\; i_k \in \{0 ; 1\}&amp;lt;/tex&amp;gt;, и введем обозначение &amp;lt;tex&amp;gt; x ^{i_k} \sim \left\{\begin{matrix} x, \;\; i_k=1&lt;br /&gt;
\\ 1, \;\; i_k=0&lt;br /&gt;
\end{matrix}\right. &amp;lt;/tex&amp;gt; &amp;amp;nbsp;.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Тогда полином Жегалкина можно записать как:&lt;br /&gt;
&amp;lt;tex&amp;gt; f(x) = \bigoplus\limits_i \alpha_i \cdot x_1^{i_1} \cdot x_2^{i_2} \cdot ... \cdot x_n^{i_n}&amp;lt;/tex&amp;gt;, где   &amp;lt;tex&amp;gt;\alpha_i \in  \{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Множество коэффициентов &amp;lt;tex&amp;gt;\{\alpha _i\}&amp;lt;/tex&amp;gt; можно рассматривать как функцию &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, заданной на множестве индексов &amp;lt;tex&amp;gt; i = (i_1, i_2, .. i_n)&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\alpha: i \mapsto \alpha_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, функцию &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; можно записать и следующим образом: &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_i \alpha_i \cdot [x_1 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_1] \cdot [x_2 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_2] \cdot ... \cdot [x_n , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_n]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тут запись &amp;lt;tex&amp;gt;[x_k , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \; i_k]&amp;lt;/tex&amp;gt; означает, что элелемент &amp;lt;tex&amp;gt; x_k &amp;lt;/tex&amp;gt; присутствует в соответствующем члене полинома только если &amp;lt;tex&amp;gt; i_k = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда если для какого-то &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;i \succ x&amp;lt;/tex&amp;gt; ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.&lt;br /&gt;
Отсюда ясно, что&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i \preceq x} \alpha_i &amp;lt;/tex&amp;gt;. &amp;amp;nbsp; &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Найдем отображение &amp;lt;tex&amp;gt; f \mapsto \alpha&amp;lt;/tex&amp;gt; (То есть такое, которое по заданной функции вычисляет значения всех коэффициентов).&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Пусть задана функция &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;. Тогда функцию &amp;lt;tex&amp;gt; \alpha_x &amp;lt;/tex&amp;gt; можно найти по формуле: &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
||proof=Докажем при помощи индукции по количеству единиц в векторе &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; ( иначе говоря, по сумме &amp;lt;tex&amp;gt;x_1+x_2+...+x_n&amp;lt;/tex&amp;gt; ) и для удобства обозначим это количество единиц(сумму) &amp;lt;tex&amp;gt; wt(x) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''1)''' База: если &amp;lt;tex&amp;gt; x = 0 &amp;lt;/tex&amp;gt;, то, очевидно &amp;lt;tex&amp;gt; f(0) = \alpha_0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)''' Пускай теорема справедлива для всех сумм &amp;lt;tex&amp;gt;wt(x) &amp;lt; k&amp;lt;/tex&amp;gt;. Покажем, что в таком случае она верна и для &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt;. По &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;, а далее по предположению индукции видим: &amp;lt;tex&amp;gt; f(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&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сумму &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ]  &amp;lt;/tex&amp;gt;. Каждый элемент &amp;lt;tex&amp;gt; f(j) &amp;lt;/tex&amp;gt; содержится в ней, только если &amp;lt;tex&amp;gt; j \preceq x &amp;lt;/tex&amp;gt;, и для фиксированных &amp;lt;tex&amp;gt; j, x &amp;lt;/tex&amp;gt; элемент &amp;lt;tex&amp;gt; f(j)&amp;lt;/tex&amp;gt; встречается ровно столько раз, сколько существует &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; , таких, что &amp;lt;tex&amp;gt; j \prec i \preceq x&amp;lt;/tex&amp;gt;. Несложно увидеть, что таких &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt; 2^{wt(x)-wt(j)}-1 &amp;lt;/tex&amp;gt;, то есть нечетное количество раз. Тогда &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ] =  \bigoplus \limits_{j\prec  x} f(j) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Но тогда &amp;lt;tex&amp;gt; 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)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
То есть при &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt; формула также выполняется, значит при любых &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;  выполняется &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
Отображение &amp;lt;tex&amp;gt; f \rightarrow \alpha&amp;lt;/tex&amp;gt; также называется преобразованием Мёбиуса.&lt;br /&gt;
&lt;br /&gt;
Видно, что &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt; — это одно и тоже преобразование. Значит, если применить преобразование Мёбиуса к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. То есть преобразование Мёбиуса обратно самому себе, иными словами, является инволюцией.&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&lt;br /&gt;
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&lt;br /&gt;
* Логачёв О.А, Сальников А.А., Ященко В.В. Булевы фунции в теории кодирования и криптологии — МЦНМО, 2004. - 470с. — ISBN 5-94057-117-4.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Булевы функции]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16564</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16564"/>
				<updated>2012-01-13T20:12:25Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_{000...000} \oplus a_{000...001} x_1 \oplus a_{000...010}  x_2 \oplus ... \oplus a_{100...000}  x_n \oplus a_{000...011} x_1 x_2 \oplus ... \oplus a_{110...000} x_{n-1} x_n \oplus ... \oplus a_{111..111} x_1 x_2 ... x_n  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1} \ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
=== По таблице истинности ===&lt;br /&gt;
Пусть для функции &amp;lt;tex&amp;gt;f(x_1,x_2,..,x_n)&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты с учётом того, что &amp;lt;tex&amp;gt; a \oplus 1 = \bar{a}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; a \oplus 0 = a&amp;lt;/tex&amp;gt;. За каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt; и её таблица истинности:&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 |-&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt;&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||1||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||1||0&lt;br /&gt;
|}&lt;br /&gt;
Построим для неё полином Жегалкина:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4) = a_0 \oplus a_1 x_1 \oplus a_2 x_2 \oplus a_3 x_3 \oplus a_4 x_4 \oplus a_5 x_1 x_2 \oplus a_6 x_1 x_3 \oplus a_7 x_1 x_4 \oplus a_8 x_2 x_3 \oplus a_9 x_2 x_4 \oplus a_{10} x_3 x_4 \oplus a_{11} x_1 x_2 x_3 \oplus a_{12} x_1 x_2 x_4 \oplus a_{13} x_1 x_3 x_4 \oplus a_{14} x_2 x_3 x_4  \oplus a_{15} x_1 x_2 x_3 x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;f(0,0,0,0) = 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;a_0 = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Далее подставляем все остальные наборы в порядке возрастания числа единиц, подставляя вновь полученные значения в следующие формулы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,0) = a_0 \oplus a_1 = 1 \Rightarrow a_1 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,0) = a_0 \oplus a_2 = 0 \Rightarrow a_2 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,0) = a_0 \oplus a_3 = 0 \Rightarrow a_3 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,0,1) = a_0 \oplus a_4 = 0 \Rightarrow a_4 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_5 = 1 \Rightarrow a_5 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_6 = 0 \Rightarrow a_6 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_7 = 0 \Rightarrow a_7 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,0) = a_0 \oplus a_2 \oplus a_3 \oplus a_8 = 1 \Rightarrow a_8 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,1) = a_0 \oplus a_2 \oplus a_4 \oplus a_9 = 0 \Rightarrow a_9 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,1) = a_0 \oplus a_3 \oplus a_4 \oplus a_{10} = 0 \Rightarrow a_{10} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_5 \oplus a_6 \oplus a_8 \oplus a_{11} = 1 \Rightarrow a_{11} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_4 \oplus a_5 \oplus a_7 \oplus a_9 \oplus a_{12} = 0 \Rightarrow a_{12} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,1) = a_0 \oplus a_1 \oplus a_3 \oplus a_4 \oplus a_6 \oplus a_7 \oplus a_{10} \oplus a_{13} = 1 \Rightarrow a_{13} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,1) = a_0 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{14} = 0 \Rightarrow a_{14} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_5 \oplus a_6 \oplus a_7 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{11} \oplus a_{12} \oplus a_{13} \oplus a_{14} \oplus a_{15} = 0 \Rightarrow a_{15} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, полином Жегалкина выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]] ===&lt;br /&gt;
Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то можно сначала убрать дизъюнкцию, используя правило Де-Моргана, а все отрицания заменить прибавлением единицы по модулю два, после чего раскрыть скобки по обычным правилам, при этом учитывая, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому. Либо же можно заменить дизъюнкцию по следующему правилу:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt; A \lor B = AB \oplus A \oplus B &amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если функция задана в СДНФ, то так как при любых значениях входных переменных в единицу обращается не более одного члена выражения, то достаточно просто заменить все дизъюнкции исключающим ИЛИ.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция в ДНФ &amp;lt;tex&amp;gt; f(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 &amp;lt;/tex&amp;gt;, построим полином Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Запишем функцию так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Сгруппируем слагаемые и воспользуемся преобразованием (1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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 x_1 x_2 x_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Воспользуемся свойствами конъюнкции &amp;lt;tex&amp;gt;A \land A = A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\neg A \land A = 0&amp;lt;/tex&amp;gt;, а также тем, что &amp;lt;tex&amp;gt;A \oplus A = 0&amp;lt;/tex&amp;gt;, и упростим выражение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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) + x_2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ещё раз воспользуемся преобразованием (1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus (x_1 x_2 \neg x_3  x_4 \oplus \neg x_1 \neg x_4)x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобку по алгебраическим правилам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus x_1 x_2 x_2 \neg x_3  x_4 \oplus \neg x_1 x_2 \neg x_4 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Снова воспользуемся свойствами конъюнкции и исключающего ИЛИ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заменим отрицание на прибавление &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выкинем парные слагаемые и получим окончательную формулу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Метод треугольника === &amp;lt;!-- Да, копипаста с википедии, и что? Метод же прост и удобен --&amp;gt;&lt;br /&gt;
Метод треугольника позволяет преобразовать таблицу истинности в полином Жегалкина путём построения вспомогательной треугольной таблицы в соответствии со следующими правилами:&lt;br /&gt;
# Строится полная таблица истинности, в которой строки идут в порядке возрастания двоичных кодов от 000...00 до 111...11.&lt;br /&gt;
# Строится вспомогательная треугольная таблица, в которой первый столбец совпадает со столбцом значений функции в таблице истинности.&lt;br /&gt;
# Ячейка в каждом последующем столбце получается путём сложения по модулю 2 двух ячеек предыдущего столбца — стоящей в той же строке и строкой ниже.&lt;br /&gt;
# Столбцы вспомогательной таблицы нумеруются двоичными кодами в том же порядке, что и строки таблицы истинности.&lt;br /&gt;
# Каждому двоичному коду ставится в соответствие один из членов полинома Жегалкина в зависимости от позиций кода, в которых стоят единицы. Например, ячейке 111 соответствует член ABC, ячейке 101 — член AC, ячейке 010 — член B, ячейке 000 — член 1 и т.д.&lt;br /&gt;
# Если в верхней строке какого-либо столбца стоит единица, то соответствующий член присутствует в полиноме Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Фактически, этот метод является модификацией метода построения по таблице истинности, описанного выше. По сравнению с ним он удобнее тем, что расчёты занимают мало места и в них сложнее ошибиться, но метод треугольника требует бо́льшего количества операций.&lt;br /&gt;
&lt;br /&gt;
Пример преобразования таблицы истинности в полином Жегалкина для функции трёх переменных P(A,B,C) показан на рисунке.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Преобразование таблицы истинности в полином Жегалкина методом треугольника.gif]]&lt;br /&gt;
&lt;br /&gt;
Чтобы получить формулу, по которой рассчитывается какой-либо коэффициент, нужно из клетки, в которой он записан, пройтись всеми возможными путями влево, до столбца ''P'' таблицы истинности, делая ходы влево и влево-вниз, записать значения в конечных ячейках и сложить их все между собой по модулю 2.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в первом столбце сверху записан коэффициент &amp;lt;tex&amp;gt; a_0 = P(0,0,0) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
во втором — &amp;lt;tex&amp;gt; a_1 = P(0,0,0) \oplus P(0,0,1) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
в третьем — &amp;lt;tex&amp;gt; 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) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
в четвёртом —&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; 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), &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и так далее, то есть при построении вспомогательной таблицы коэффициенты полинома просчитываются автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Преобразование Мёбиуса ===&lt;br /&gt;
Пусть задана [[Определение булевой функции|булева функция]] &amp;lt;tex&amp;gt;f: B^n \rightarrow B, \;\; B=\{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Любая булева функция представима в виде полинома Жегалкина, притом единственным образом.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; i = (i_1, i_2, .. i_n), \;\; i_k \in \{0 ; 1\}&amp;lt;/tex&amp;gt;, и введем обозначение &amp;lt;tex&amp;gt; x ^{i_k} \sim \left\{\begin{matrix} x, \;\; i_k=1&lt;br /&gt;
\\ 1, \;\; i_k=0&lt;br /&gt;
\end{matrix}\right. &amp;lt;/tex&amp;gt; &amp;amp;nbsp;.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Тогда полином Жегалкина можно записать как:&lt;br /&gt;
&amp;lt;tex&amp;gt; f(x) = \bigoplus\limits_i \alpha_i \cdot x_1^{i_1} \cdot x_2^{i_2} \cdot ... \cdot x_n^{i_n}&amp;lt;/tex&amp;gt;, где   &amp;lt;tex&amp;gt;\alpha_i \in  \{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Множество коэффициентов &amp;lt;tex&amp;gt;\{\alpha _i\}&amp;lt;/tex&amp;gt; можно рассматривать как функцию &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, заданной на множестве индексов &amp;lt;tex&amp;gt; i = (i_1, i_2, .. i_n)&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\alpha: i \mapsto \alpha_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, функцию &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; можно записать и следующим образом: &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_i \alpha_i \cdot [x_1 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_1] \cdot [x_2 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_2] \cdot ... \cdot [x_n , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_n]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тут запись &amp;lt;tex&amp;gt;[x_k , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \; i_k]&amp;lt;/tex&amp;gt; означает, что элелемент &amp;lt;tex&amp;gt; x_k &amp;lt;/tex&amp;gt; присутствует в соответствующем члене полинома только если &amp;lt;tex&amp;gt; i_k = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда если для какого-то &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;i \succ x&amp;lt;/tex&amp;gt; ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.&lt;br /&gt;
Отсюда ясно, что&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i \preceq x} \alpha_i &amp;lt;/tex&amp;gt;. &amp;amp;nbsp; &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Найдем отображение &amp;lt;tex&amp;gt; f \mapsto \alpha&amp;lt;/tex&amp;gt; (То есть такое, которое по заданной функции вычисляет значения всех коэффициентов).&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Пусть задана функция &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;. Тогда функцию &amp;lt;tex&amp;gt; \alpha_x &amp;lt;/tex&amp;gt; можно найти по формуле: &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
||proof=Докажем при помощи индукции по количеству единиц в векторе &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; ( иначе говоря, по сумме &amp;lt;tex&amp;gt;x_1+x_2+...+x_n&amp;lt;/tex&amp;gt; ) и для удобства обозначим это количество единиц(сумму) &amp;lt;tex&amp;gt; wt(x) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''1)''' База: если &amp;lt;tex&amp;gt; x = 0 &amp;lt;/tex&amp;gt;, то, очевидно &amp;lt;tex&amp;gt; f(0) = \alpha_0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)''' Пускай теорема справедлива для всех сумм &amp;lt;tex&amp;gt;wt(x) &amp;lt; k&amp;lt;/tex&amp;gt;. Покажем, что в таком случае она верна и для &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt;. По &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;, а далее по предположению индукции видим: &amp;lt;tex&amp;gt; f(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&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сумму &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ]  &amp;lt;/tex&amp;gt;. Каждый элемент &amp;lt;tex&amp;gt; f(j) &amp;lt;/tex&amp;gt; содержится в ней, только если &amp;lt;tex&amp;gt; j \preceq x &amp;lt;/tex&amp;gt;, и для фиксированных &amp;lt;tex&amp;gt; j, x &amp;lt;/tex&amp;gt; элемент &amp;lt;tex&amp;gt; f(j)&amp;lt;/tex&amp;gt; встречается ровно столько раз, сколько существует &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; , таких, что &amp;lt;tex&amp;gt; j \prec i \preceq x&amp;lt;/tex&amp;gt;. Несложно увидеть, что таких &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt; 2^{wt(x)-wt(j)}-1 &amp;lt;/tex&amp;gt;, то есть нечетное количество раз. Тогда &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ] =  \bigoplus \limits_{j\prec  x} f(j) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Но тогда &amp;lt;tex&amp;gt; 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)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
То есть при &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt; формула также выполняется, значит при любых &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;  выполняется &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
Отображение &amp;lt;tex&amp;gt; f \rightarrow \alpha&amp;lt;/tex&amp;gt; также называется преобразованием Мёбиуса.&lt;br /&gt;
&lt;br /&gt;
Видно, что &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt; — это одно и тоже преобразование. Значит, если применить преобразование Мёбиуса к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. То есть преобразование Мёбиуса обратно самому себе, иными словами, является инволюцией.&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&lt;br /&gt;
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&lt;br /&gt;
* Логачёв О.А, Сальников А.А., Ященко В.В. Булевы фунции в теории кодирования и криптологии — МЦНМО, 2004. - 470с. — ISBN 5-94057-117-4.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Булевы функции]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16562</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16562"/>
				<updated>2012-01-13T20:03:43Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_{000…000} \oplus a_{000…001} x_1 \oplus a_{000…010}  x_2 \oplus ... \oplus a_{100…000}  x_n \oplus a_{000…011} x_1 x_2 \oplus ... \oplus a_{110…000} x_{n-1} x_n \oplus ... \oplus a_{111…111} x_1 x_2 ... x_n  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1} \ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
=== По таблице истинности ===&lt;br /&gt;
Пусть для функции &amp;lt;tex&amp;gt;f(x_1,x_2,..,x_n)&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты с учётом того, что &amp;lt;tex&amp;gt; a \oplus 1 = \bar{a}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; a \oplus 0 = a&amp;lt;/tex&amp;gt;. За каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt; и её таблица истинности:&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 |-&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt;&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||1||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||1||0&lt;br /&gt;
|}&lt;br /&gt;
Построим для неё полином Жегалкина:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4) = a_0 \oplus a_1 x_1 \oplus a_2 x_2 \oplus a_3 x_3 \oplus a_4 x_4 \oplus a_5 x_1 x_2 \oplus a_6 x_1 x_3 \oplus a_7 x_1 x_4 \oplus a_8 x_2 x_3 \oplus a_9 x_2 x_4 \oplus a_{10} x_3 x_4 \oplus a_{11} x_1 x_2 x_3 \oplus a_{12} x_1 x_2 x_4 \oplus a_{13} x_1 x_3 x_4 \oplus a_{14} x_2 x_3 x_4  \oplus a_{15} x_1 x_2 x_3 x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;f(0,0,0,0) = 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;a_0 = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Далее подставляем все остальные наборы в порядке возрастания числа единиц, подставляя вновь полученные значения в следующие формулы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,0) = a_0 \oplus a_1 = 1 \Rightarrow a_1 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,0) = a_0 \oplus a_2 = 0 \Rightarrow a_2 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,0) = a_0 \oplus a_3 = 0 \Rightarrow a_3 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,0,1) = a_0 \oplus a_4 = 0 \Rightarrow a_4 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_5 = 1 \Rightarrow a_5 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_6 = 0 \Rightarrow a_6 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_7 = 0 \Rightarrow a_7 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,0) = a_0 \oplus a_2 \oplus a_3 \oplus a_8 = 1 \Rightarrow a_8 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,1) = a_0 \oplus a_2 \oplus a_4 \oplus a_9 = 0 \Rightarrow a_9 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,1) = a_0 \oplus a_3 \oplus a_4 \oplus a_{10} = 0 \Rightarrow a_{10} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_5 \oplus a_6 \oplus a_8 \oplus a_{11} = 1 \Rightarrow a_{11} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_4 \oplus a_5 \oplus a_7 \oplus a_9 \oplus a_{12} = 0 \Rightarrow a_{12} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,1) = a_0 \oplus a_1 \oplus a_3 \oplus a_4 \oplus a_6 \oplus a_7 \oplus a_{10} \oplus a_{13} = 1 \Rightarrow a_{13} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,1) = a_0 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{14} = 0 \Rightarrow a_{14} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_5 \oplus a_6 \oplus a_7 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{11} \oplus a_{12} \oplus a_{13} \oplus a_{14} \oplus a_{15} = 0 \Rightarrow a_{15} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, полином Жегалкина выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]] ===&lt;br /&gt;
Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то можно сначала убрать дизъюнкцию, используя правило Де-Моргана, а все отрицания заменить прибавлением единицы по модулю два, после чего раскрыть скобки по обычным правилам, при этом учитывая, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому. Либо же можно заменить дизъюнкцию по следующему правилу:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt; A \lor B = AB \oplus A \oplus B &amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если функция задана в СДНФ, то так как при любых значениях входных переменных в единицу обращается не более одного члена выражения, то достаточно просто заменить все дизъюнкции исключающим ИЛИ.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция в ДНФ &amp;lt;tex&amp;gt; f(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 &amp;lt;/tex&amp;gt;, построим полином Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Запишем функцию так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Сгруппируем слагаемые и воспользуемся преобразованием (1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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 x_1 x_2 x_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Воспользуемся свойствами конъюнкции &amp;lt;tex&amp;gt;A \land A = A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\neg A \land A = 0&amp;lt;/tex&amp;gt;, а также тем, что &amp;lt;tex&amp;gt;A \oplus A = 0&amp;lt;/tex&amp;gt;, и упростим выражение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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) + x_2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ещё раз воспользуемся преобразованием (1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus (x_1 x_2 \neg x_3  x_4 \oplus \neg x_1 \neg x_4)x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобку по алгебраическим правилам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus x_1 x_2 x_2 \neg x_3  x_4 \oplus \neg x_1 x_2 \neg x_4 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Снова воспользуемся свойствами конъюнкции и исключающего ИЛИ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заменим отрицание на прибавление &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выкинем парные слагаемые и получим окончательную формулу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Метод треугольника === &amp;lt;!-- Да, копипаста с википедии, и что? Метод же прост и удобен --&amp;gt;&lt;br /&gt;
Метод треугольника позволяет преобразовать таблицу истинности в полином Жегалкина путём построения вспомогательной треугольной таблицы в соответствии со следующими правилами:&lt;br /&gt;
# Строится полная таблица истинности, в которой строки идут в порядке возрастания двоичных кодов от 000...00 до 111...11.&lt;br /&gt;
# Строится вспомогательная треугольная таблица, в которой первый столбец совпадает со столбцом значений функции в таблице истинности.&lt;br /&gt;
# Ячейка в каждом последующем столбце получается путём сложения по модулю 2 двух ячеек предыдущего столбца — стоящей в той же строке и строкой ниже.&lt;br /&gt;
# Столбцы вспомогательной таблицы нумеруются двоичными кодами в том же порядке, что и строки таблицы истинности.&lt;br /&gt;
# Каждому двоичному коду ставится в соответствие один из членов полинома Жегалкина в зависимости от позиций кода, в которых стоят единицы. Например, ячейке 111 соответствует член ABC, ячейке 101 — член AC, ячейке 010 — член B, ячейке 000 — член 1 и т.д.&lt;br /&gt;
# Если в верхней строке какого-либо столбца стоит единица, то соответствующий член присутствует в полиноме Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Фактически, этот метод является модификацией метода построения по таблице истинности, описанного выше. По сравнению с ним он удобнее тем, что расчёты занимают мало места и в них сложнее ошибиться, но метод треугольника требует бо́льшего количества операций.&lt;br /&gt;
&lt;br /&gt;
Пример преобразования таблицы истинности в полином Жегалкина для функции трёх переменных P(A,B,C) показан на рисунке.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Преобразование таблицы истинности в полином Жегалкина методом треугольника.gif]]&lt;br /&gt;
&lt;br /&gt;
Чтобы получить формулу, по которой рассчитывается какой-либо коэффициент, нужно из клетки, в которой он записан, пройтись всеми возможными путями влево, до столбца ''P'' таблицы истинности, делая ходы влево и влево-вниз, записать значения в конечных ячейках и сложить их все между собой по модулю 2.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в первом столбце сверху записан коэффициент &amp;lt;tex&amp;gt; a_0 = P(0,0,0) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
во втором — &amp;lt;tex&amp;gt; a_1 = P(0,0,0) \oplus P(0,0,1) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
в третьем — &amp;lt;tex&amp;gt; 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) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
в четвёртом —&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; 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), &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и так далее, то есть при построении вспомогательной таблицы коэффициенты полинома просчитываются автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Преобразование Мёбиуса ===&lt;br /&gt;
Пусть задана [[Определение булевой функции|булева функция]] &amp;lt;tex&amp;gt;f: B^n \rightarrow B, \;\; B=\{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Любая булева функция представима в виде полинома Жегалкина, притом единственным образом.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; i = (i_1, i_2, .. i_n), \;\; i_k \in \{0 ; 1\}&amp;lt;/tex&amp;gt;, и введем обозначение &amp;lt;tex&amp;gt; x ^{i_k} \sim \left\{\begin{matrix} x, \;\; i_k=1&lt;br /&gt;
\\ 1, \;\; i_k=0&lt;br /&gt;
\end{matrix}\right. &amp;lt;/tex&amp;gt; &amp;amp;nbsp;.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Тогда полином Жегалкина можно записать как:&lt;br /&gt;
&amp;lt;tex&amp;gt; f(x) = \bigoplus\limits_i \alpha_i \cdot x_1^{i_1} \cdot x_2^{i_2} \cdot ... \cdot x_n^{i_n}&amp;lt;/tex&amp;gt;, где   &amp;lt;tex&amp;gt;\alpha_i \in  \{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Множество коэффициентов &amp;lt;tex&amp;gt;\{\alpha _i\}&amp;lt;/tex&amp;gt; можно рассматривать как функцию &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, заданной на множестве индексов &amp;lt;tex&amp;gt; i = (i_1, i_2, .. i_n)&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\alpha: i \mapsto \alpha_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, функцию &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; можно записать и следующим образом: &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_i \alpha_i \cdot [x_1 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_1] \cdot [x_2 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_2] \cdot ... \cdot [x_n , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_n]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тут запись &amp;lt;tex&amp;gt;[x_k , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \; i_k]&amp;lt;/tex&amp;gt; означает, что элелемент &amp;lt;tex&amp;gt; x_k &amp;lt;/tex&amp;gt; присутствует в соответствующем члене полинома только если &amp;lt;tex&amp;gt; i_k = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда если для какого-то &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;i \succ x&amp;lt;/tex&amp;gt; ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.&lt;br /&gt;
Отсюда ясно, что&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i \preceq x} \alpha_i &amp;lt;/tex&amp;gt;. &amp;amp;nbsp; &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Найдем отображение &amp;lt;tex&amp;gt; f \mapsto \alpha&amp;lt;/tex&amp;gt; (То есть такое, которое по заданной функции вычисляет значения всех коэффициентов).&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Пусть задана функция &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;. Тогда функцию &amp;lt;tex&amp;gt; \alpha_x &amp;lt;/tex&amp;gt; можно найти по формуле: &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
||proof=Докажем при помощи индукции по количеству единиц в векторе &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; ( иначе говоря, по сумме &amp;lt;tex&amp;gt;x_1+x_2+...+x_n&amp;lt;/tex&amp;gt; ) и для удобства обозначим это количество единиц(сумму) &amp;lt;tex&amp;gt; wt(x) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''1)''' База: если &amp;lt;tex&amp;gt; x = 0 &amp;lt;/tex&amp;gt;, то, очевидно &amp;lt;tex&amp;gt; f(0) = \alpha_0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)''' Пускай теорема справедлива для всех сумм &amp;lt;tex&amp;gt;wt(x) &amp;lt; k&amp;lt;/tex&amp;gt;. Покажем, что в таком случае она верна и для &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt;. По &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;, а далее по предположению индукции видим: &amp;lt;tex&amp;gt; f(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&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сумму &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ]  &amp;lt;/tex&amp;gt;. Каждый элемент &amp;lt;tex&amp;gt; f(j) &amp;lt;/tex&amp;gt; содержится в ней, только если &amp;lt;tex&amp;gt; j \preceq x &amp;lt;/tex&amp;gt;, и для фиксированных &amp;lt;tex&amp;gt; j, x &amp;lt;/tex&amp;gt; элемент &amp;lt;tex&amp;gt; f(j)&amp;lt;/tex&amp;gt; встречается ровно столько раз, сколько существует &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; , таких, что &amp;lt;tex&amp;gt; j \prec i \preceq x&amp;lt;/tex&amp;gt;. Несложно увидеть, что таких &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt; 2^{wt(x)-wt(j)}-1 &amp;lt;/tex&amp;gt;, то есть нечетное количество раз. Тогда &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ] =  \bigoplus \limits_{j\prec  x} f(j) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Но тогда &amp;lt;tex&amp;gt; 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)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
То есть при &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt; формула также выполняется, значит при любых &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;  выполняется &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
Отображение &amp;lt;tex&amp;gt; f \rightarrow \alpha&amp;lt;/tex&amp;gt; также называется преобразованием Мёбиуса.&lt;br /&gt;
&lt;br /&gt;
Видно, что &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt; — это одно и тоже преобразование. Значит, если применить преобразование Мёбиуса к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. То есть преобразование Мёбиуса обратно самому себе, иными словами, является инволюцией.&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&lt;br /&gt;
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&lt;br /&gt;
* Логачёв О.А, Сальников А.А., Ященко В.В. Булевы фунции в теории кодирования и криптологии — МЦНМО, 2004. - 470с. — ISBN 5-94057-117-4.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Булевы функции]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16528</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16528"/>
				<updated>2012-01-13T13:24:42Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: /* Преобразование Мёбиуса */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_0 \oplus a_1 x_1 \oplus a_2  x_2 \oplus ... \oplus a_n  x_n \oplus a_{n+1} x_1 x_2 \oplus ... \oplus a_{..n + C_{n}^2}  x_{n-1} x_n \oplus ... \oplus a_{2^n-1} x_1 x_2 ... x_n  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1} \ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
=== По таблице истинности ===&lt;br /&gt;
Пусть для функции &amp;lt;tex&amp;gt;f(x_1,x_2,..,x_n)&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты с учётом того, что &amp;lt;tex&amp;gt; a \oplus 1 = \bar{a}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; a \oplus 0 = a&amp;lt;/tex&amp;gt;. За каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt; и её таблица истинности:&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 |-&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt;&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||1||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||1||0&lt;br /&gt;
|}&lt;br /&gt;
Построим для неё полином Жегалкина:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4) = a_0 \oplus a_1 x_1 \oplus a_2 x_2 \oplus a_3 x_3 \oplus a_4 x_4 \oplus a_5 x_1 x_2 \oplus a_6 x_1 x_3 \oplus a_7 x_1 x_4 \oplus a_8 x_2 x_3 \oplus a_9 x_2 x_4 \oplus a_{10} x_3 x_4 \oplus a_{11} x_1 x_2 x_3 \oplus a_{12} x_1 x_2 x_4 \oplus a_{13} x_1 x_3 x_4 \oplus a_{14} x_2 x_3 x_4  \oplus a_{15} x_1 x_2 x_3 x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;f(0,0,0,0) = 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;a_0 = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Далее подставляем все остальные наборы в порядке возрастания числа единиц, подставляя вновь полученные значения в следующие формулы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,0) = a_0 \oplus a_1 = 1 \Rightarrow a_1 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,0) = a_0 \oplus a_2 = 0 \Rightarrow a_2 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,0) = a_0 \oplus a_3 = 0 \Rightarrow a_3 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,0,1) = a_0 \oplus a_4 = 0 \Rightarrow a_4 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_5 = 1 \Rightarrow a_5 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_6 = 0 \Rightarrow a_6 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_7 = 0 \Rightarrow a_7 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,0) = a_0 \oplus a_2 \oplus a_3 \oplus a_8 = 1 \Rightarrow a_8 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,1) = a_0 \oplus a_2 \oplus a_4 \oplus a_9 = 0 \Rightarrow a_9 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,1) = a_0 \oplus a_3 \oplus a_4 \oplus a_{10} = 0 \Rightarrow a_{10} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_5 \oplus a_6 \oplus a_8 \oplus a_{11} = 1 \Rightarrow a_{11} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_4 \oplus a_5 \oplus a_7 \oplus a_9 \oplus a_{12} = 0 \Rightarrow a_{12} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,1) = a_0 \oplus a_1 \oplus a_3 \oplus a_4 \oplus a_6 \oplus a_7 \oplus a_{10} \oplus a_{13} = 1 \Rightarrow a_{13} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,1) = a_0 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{14} = 0 \Rightarrow a_{14} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_5 \oplus a_6 \oplus a_7 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{11} \oplus a_{12} \oplus a_{13} \oplus a_{14} \oplus a_{15} = 0 \Rightarrow a_{15} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, полином Жегалкина выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]] ===&lt;br /&gt;
Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то можно сначала убрать дизъюнкцию, используя правило Де-Моргана, а все отрицания заменить прибавлением единицы по модулю два, после чего раскрыть скобки по обычным правилам, при этом учитывая, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому. Либо же можно заменить дизъюнкцию по следующему правилу:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt; A \lor B = AB \oplus A \oplus B &amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если функция задана в СДНФ, то так как при любых значениях входных переменных в единицу обращается не более одного члена выражения, то достаточно просто заменить все дизъюнкции исключающим ИЛИ.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция в ДНФ &amp;lt;tex&amp;gt; f(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 &amp;lt;/tex&amp;gt;, построим полином Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Запишем функцию так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Сгруппируем слагаемые и воспользуемся преобразованием (1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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 x_1 x_2 x_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Воспользуемся свойствами конъюнкции &amp;lt;tex&amp;gt;A \land A = A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\neg A \land A = 0&amp;lt;/tex&amp;gt;, а также тем, что &amp;lt;tex&amp;gt;A \oplus A = 0&amp;lt;/tex&amp;gt;, и упростим выражение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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) + x_2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ещё раз воспользуемся преобразованием (1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus (x_1 x_2 \neg x_3  x_4 \oplus \neg x_1 \neg x_4)x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобку по алгебраическим правилам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus x_1 x_2 x_2 \neg x_3  x_4 \oplus \neg x_1 x_2 \neg x_4 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Снова воспользуемся свойствами конъюнкции и исключающего ИЛИ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заменим отрицание на прибавление &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выкинем парные слагаемые и получим окончательную формулу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Метод треугольника === &amp;lt;!-- Да, копипаста с википедии, и что? Метод же прост и удобен --&amp;gt;&lt;br /&gt;
Метод треугольника позволяет преобразовать таблицу истинности в полином Жегалкина путём построения вспомогательной треугольной таблицы в соответствии со следующими правилами:&lt;br /&gt;
# Строится полная таблица истинности, в которой строки идут в порядке возрастания двоичных кодов от 000...00 до 111...11.&lt;br /&gt;
# Строится вспомогательная треугольная таблица, в которой первый столбец совпадает со столбцом значений функции в таблице истинности.&lt;br /&gt;
# Ячейка в каждом последующем столбце получается путём сложения по модулю 2 двух ячеек предыдущего столбца — стоящей в той же строке и строкой ниже.&lt;br /&gt;
# Столбцы вспомогательной таблицы нумеруются двоичными кодами в том же порядке, что и строки таблицы истинности.&lt;br /&gt;
# Каждому двоичному коду ставится в соответствие один из членов полинома Жегалкина в зависимости от позиций кода, в которых стоят единицы. Например, ячейке 111 соответствует член ABC, ячейке 101 — член AC, ячейке 010 — член B, ячейке 000 — член 1 и т.д.&lt;br /&gt;
# Если в верхней строке какого-либо столбца стоит единица, то соответствующий член присутствует в полиноме Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Фактически, этот метод является модификацией метода построения по таблице истинности, описанного выше. По сравнению с ним он удобнее тем, что расчёты занимают мало места и в них сложнее ошибиться, но метод треугольника требует бо́льшего количества операций.&lt;br /&gt;
&lt;br /&gt;
Пример преобразования таблицы истинности в полином Жегалкина для функции трёх переменных P(A,B,C) показан на рисунке.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Преобразование таблицы истинности в полином Жегалкина методом треугольника.gif]]&lt;br /&gt;
&lt;br /&gt;
Чтобы получить формулу, по которой рассчитывается какой-либо коэффициент, нужно из клетки, в которой он записан, пройтись всеми возможными путями влево, до столбца ''P'' таблицы истинности, делая ходы влево и влево-вниз, записать значения в конечных ячейках и сложить их все между собой по модулю 2.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в первом столбце сверху записан коэффициент &amp;lt;tex&amp;gt; a_0 = P(0,0,0) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
во втором — &amp;lt;tex&amp;gt; a_1 = P(0,0,0) \oplus P(0,0,1) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
в третьем — &amp;lt;tex&amp;gt; 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) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
в четвёртом —&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; 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), &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и так далее, то есть при построении вспомогательной таблицы коэффициенты полинома просчитываются автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Преобразование Мёбиуса ===&lt;br /&gt;
Пусть задана [[Определение булевой функции|булева функция]] &amp;lt;tex&amp;gt;f: B^n \rightarrow B, \;\; B=\{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Любая булева функция представима в виде полинома Жегалкина, притом единственным образом.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; i = (i_1, i_2, .. i_n), \;\; i_k \in \{0 ; 1\}&amp;lt;/tex&amp;gt;, и введем обозначение &amp;lt;tex&amp;gt; x ^{i_k} \sim \left\{\begin{matrix} x, \;\; i_k=1&lt;br /&gt;
\\ 1, \;\; i_k=0&lt;br /&gt;
\end{matrix}\right. &amp;lt;/tex&amp;gt; &amp;amp;nbsp;.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Тогда полином Жегалкина можно записать как:&lt;br /&gt;
&amp;lt;tex&amp;gt; f(x) = \bigoplus\limits_i \alpha_i \cdot x_1^{i_1} \cdot x_2^{i_2} \cdot ... \cdot x_n^{i_n}&amp;lt;/tex&amp;gt;, где   &amp;lt;tex&amp;gt;\alpha_i \in  \{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Множество коэффициентов &amp;lt;tex&amp;gt;\{\alpha _i\}&amp;lt;/tex&amp;gt; можно рассматривать как функцию &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, заданной на множестве индексов &amp;lt;tex&amp;gt; i = (i_1, i_2, .. i_n)&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\alpha: i \mapsto \alpha_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, функцию &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; можно записать и следующим образом: &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_i \alpha_i \cdot [x_1 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_1] \cdot [x_2 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_2] \cdot ... \cdot [x_n , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_n]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тут запись &amp;lt;tex&amp;gt;[x_k , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \; i_k]&amp;lt;/tex&amp;gt; означает, что элелемент &amp;lt;tex&amp;gt; x_k &amp;lt;/tex&amp;gt; присутствует в соответствующем члене полинома только если &amp;lt;tex&amp;gt; i_k = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда если для какого-то &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;i \succ x&amp;lt;/tex&amp;gt; ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.&lt;br /&gt;
Отсюда ясно, что&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i \preceq x} \alpha_i &amp;lt;/tex&amp;gt;. &amp;amp;nbsp; &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Найдем отображение &amp;lt;tex&amp;gt; f \mapsto \alpha&amp;lt;/tex&amp;gt; (То есть такое, которое по заданной функции вычисляет значения всех коэффициентов).&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Пусть задана функция &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;. Тогда функцию &amp;lt;tex&amp;gt; \alpha_x &amp;lt;/tex&amp;gt; можно найти по формуле: &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
||proof=Докажем при помощи индукции по количеству единиц в векторе &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; ( иначе говоря, по сумме &amp;lt;tex&amp;gt;x_1+x_2+...+x_n&amp;lt;/tex&amp;gt; ) и для удобства обозначим это количество единиц(сумму) &amp;lt;tex&amp;gt; wt(x) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''1)''' База: если &amp;lt;tex&amp;gt; x = 0 &amp;lt;/tex&amp;gt;, то, очевидно &amp;lt;tex&amp;gt; f(0) = \alpha_0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)''' Пускай теорема справедлива для всех сумм &amp;lt;tex&amp;gt;wt(x) &amp;lt; k&amp;lt;/tex&amp;gt;. Покажем, что в таком случае она верна и для &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt;. По &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;, а далее по предположению индукции видим: &amp;lt;tex&amp;gt; f(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&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сумму &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ]  &amp;lt;/tex&amp;gt;. Каждый элемент &amp;lt;tex&amp;gt; f(j) &amp;lt;/tex&amp;gt; содержится в ней, только если &amp;lt;tex&amp;gt; j \preceq x &amp;lt;/tex&amp;gt;, и для фиксированных &amp;lt;tex&amp;gt; j, x &amp;lt;/tex&amp;gt; элемент &amp;lt;tex&amp;gt; f(j)&amp;lt;/tex&amp;gt; встречается ровно столько раз, сколько существует &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; , таких, что &amp;lt;tex&amp;gt; j \prec i \preceq x&amp;lt;/tex&amp;gt;. Несложно увидеть, что таких &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt; 2^{wt(x)-wt(j)}-1 &amp;lt;/tex&amp;gt;, то есть нечетное количество раз. Тогда &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ] =  \bigoplus \limits_{j\prec  x} f(j) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Но тогда &amp;lt;tex&amp;gt; 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)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
То есть при &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt; формула также выполняется, значит при любых &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;  выполняется &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
Отображение &amp;lt;tex&amp;gt; f \rightarrow \alpha&amp;lt;/tex&amp;gt; также называется преобразованием Мёбиуса.&lt;br /&gt;
&lt;br /&gt;
Видно, что &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt; — это одно и тоже преобразование. Значит, если применить преобразование Мёбиуса к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. То есть преобразование Мёбиуса обратно самому себе, иными словами, является инволюцией.&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&lt;br /&gt;
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&lt;br /&gt;
* Логачёв О.А, Сальников А.А., Ященко В.В. Булевы фунции в теории кодирования и криптологии — МЦНМО, 2004. - 470с. — ISBN 5-94057-117-4.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Булевы функции]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16527</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16527"/>
				<updated>2012-01-13T13:21:52Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: /* Метод треугольника */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_0 \oplus a_1 x_1 \oplus a_2  x_2 \oplus ... \oplus a_n  x_n \oplus a_{n+1} x_1 x_2 \oplus ... \oplus a_{..n + C_{n}^2}  x_{n-1} x_n \oplus ... \oplus a_{2^n-1} x_1 x_2 ... x_n  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1} \ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
=== По таблице истинности ===&lt;br /&gt;
Пусть для функции &amp;lt;tex&amp;gt;f(x_1,x_2,..,x_n)&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты с учётом того, что &amp;lt;tex&amp;gt; a \oplus 1 = \bar{a}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; a \oplus 0 = a&amp;lt;/tex&amp;gt;. За каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt; и её таблица истинности:&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 |-&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt;&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||1||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||1||0&lt;br /&gt;
|}&lt;br /&gt;
Построим для неё полином Жегалкина:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4) = a_0 \oplus a_1 x_1 \oplus a_2 x_2 \oplus a_3 x_3 \oplus a_4 x_4 \oplus a_5 x_1 x_2 \oplus a_6 x_1 x_3 \oplus a_7 x_1 x_4 \oplus a_8 x_2 x_3 \oplus a_9 x_2 x_4 \oplus a_{10} x_3 x_4 \oplus a_{11} x_1 x_2 x_3 \oplus a_{12} x_1 x_2 x_4 \oplus a_{13} x_1 x_3 x_4 \oplus a_{14} x_2 x_3 x_4  \oplus a_{15} x_1 x_2 x_3 x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;f(0,0,0,0) = 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;a_0 = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Далее подставляем все остальные наборы в порядке возрастания числа единиц, подставляя вновь полученные значения в следующие формулы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,0) = a_0 \oplus a_1 = 1 \Rightarrow a_1 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,0) = a_0 \oplus a_2 = 0 \Rightarrow a_2 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,0) = a_0 \oplus a_3 = 0 \Rightarrow a_3 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,0,1) = a_0 \oplus a_4 = 0 \Rightarrow a_4 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_5 = 1 \Rightarrow a_5 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_6 = 0 \Rightarrow a_6 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_7 = 0 \Rightarrow a_7 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,0) = a_0 \oplus a_2 \oplus a_3 \oplus a_8 = 1 \Rightarrow a_8 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,1) = a_0 \oplus a_2 \oplus a_4 \oplus a_9 = 0 \Rightarrow a_9 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,1) = a_0 \oplus a_3 \oplus a_4 \oplus a_{10} = 0 \Rightarrow a_{10} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_5 \oplus a_6 \oplus a_8 \oplus a_{11} = 1 \Rightarrow a_{11} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_4 \oplus a_5 \oplus a_7 \oplus a_9 \oplus a_{12} = 0 \Rightarrow a_{12} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,1) = a_0 \oplus a_1 \oplus a_3 \oplus a_4 \oplus a_6 \oplus a_7 \oplus a_{10} \oplus a_{13} = 1 \Rightarrow a_{13} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,1) = a_0 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{14} = 0 \Rightarrow a_{14} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_5 \oplus a_6 \oplus a_7 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{11} \oplus a_{12} \oplus a_{13} \oplus a_{14} \oplus a_{15} = 0 \Rightarrow a_{15} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, полином Жегалкина выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]] ===&lt;br /&gt;
Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то можно сначала убрать дизъюнкцию, используя правило Де-Моргана, а все отрицания заменить прибавлением единицы по модулю два, после чего раскрыть скобки по обычным правилам, при этом учитывая, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому. Либо же можно заменить дизъюнкцию по следующему правилу:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt; A \lor B = AB \oplus A \oplus B &amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если функция задана в СДНФ, то так как при любых значениях входных переменных в единицу обращается не более одного члена выражения, то достаточно просто заменить все дизъюнкции исключающим ИЛИ.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция в ДНФ &amp;lt;tex&amp;gt; f(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 &amp;lt;/tex&amp;gt;, построим полином Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Запишем функцию так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Сгруппируем слагаемые и воспользуемся преобразованием (1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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 x_1 x_2 x_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Воспользуемся свойствами конъюнкции &amp;lt;tex&amp;gt;A \land A = A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\neg A \land A = 0&amp;lt;/tex&amp;gt;, а также тем, что &amp;lt;tex&amp;gt;A \oplus A = 0&amp;lt;/tex&amp;gt;, и упростим выражение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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) + x_2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ещё раз воспользуемся преобразованием (1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus (x_1 x_2 \neg x_3  x_4 \oplus \neg x_1 \neg x_4)x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобку по алгебраическим правилам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus x_1 x_2 x_2 \neg x_3  x_4 \oplus \neg x_1 x_2 \neg x_4 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Снова воспользуемся свойствами конъюнкции и исключающего ИЛИ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заменим отрицание на прибавление &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выкинем парные слагаемые и получим окончательную формулу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Метод треугольника === &amp;lt;!-- Да, копипаста с википедии, и что? Метод же прост и удобен --&amp;gt;&lt;br /&gt;
Метод треугольника позволяет преобразовать таблицу истинности в полином Жегалкина путём построения вспомогательной треугольной таблицы в соответствии со следующими правилами:&lt;br /&gt;
# Строится полная таблица истинности, в которой строки идут в порядке возрастания двоичных кодов от 000...00 до 111...11.&lt;br /&gt;
# Строится вспомогательная треугольная таблица, в которой первый столбец совпадает со столбцом значений функции в таблице истинности.&lt;br /&gt;
# Ячейка в каждом последующем столбце получается путём сложения по модулю 2 двух ячеек предыдущего столбца — стоящей в той же строке и строкой ниже.&lt;br /&gt;
# Столбцы вспомогательной таблицы нумеруются двоичными кодами в том же порядке, что и строки таблицы истинности.&lt;br /&gt;
# Каждому двоичному коду ставится в соответствие один из членов полинома Жегалкина в зависимости от позиций кода, в которых стоят единицы. Например, ячейке 111 соответствует член ABC, ячейке 101 — член AC, ячейке 010 — член B, ячейке 000 — член 1 и т.д.&lt;br /&gt;
# Если в верхней строке какого-либо столбца стоит единица, то соответствующий член присутствует в полиноме Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Фактически, этот метод является модификацией метода построения по таблице истинности, описанного выше. По сравнению с ним он удобнее тем, что расчёты занимают мало места и в них сложнее ошибиться, но метод треугольника требует бо́льшего количества операций.&lt;br /&gt;
&lt;br /&gt;
Пример преобразования таблицы истинности в полином Жегалкина для функции трёх переменных P(A,B,C) показан на рисунке.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Преобразование таблицы истинности в полином Жегалкина методом треугольника.gif]]&lt;br /&gt;
&lt;br /&gt;
Чтобы получить формулу, по которой рассчитывается какой-либо коэффициент, нужно из клетки, в которой он записан, пройтись всеми возможными путями влево, до столбца ''P'' таблицы истинности, делая ходы влево и влево-вниз, записать значения в конечных ячейках и сложить их все между собой по модулю 2.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в первом столбце сверху записан коэффициент &amp;lt;tex&amp;gt; a_0 = P(0,0,0) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
во втором — &amp;lt;tex&amp;gt; a_1 = P(0,0,0) \oplus P(0,0,1) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
в третьем — &amp;lt;tex&amp;gt; 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) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
в четвёртом —&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; 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), &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и так далее, то есть при построении вспомогательной таблицы коэффициенты полинома просчитываются автоматически.&lt;br /&gt;
&lt;br /&gt;
=== Преобразование Мёбиуса ===&lt;br /&gt;
Пусть задана [[Определение булевой функции|булева функция]] &amp;lt;tex&amp;gt;f: B^n \rightarrow B, \;\; B=\{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Любая булева функция представима в виде полинома Жегалкина, притом единственным образом.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; i = (i _1, i _2, .. i_n), \;\; i_k \in \{0 ; 1\}&amp;lt;/tex&amp;gt;, и введем обозначение &amp;lt;tex&amp;gt; x ^{i_k} \sim \left\{\begin{matrix} x, \;\; i_k=1&lt;br /&gt;
\\ 1, \;\; i_k=0&lt;br /&gt;
\end{matrix}\right. &amp;lt;/tex&amp;gt; &amp;amp;nbsp;.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Тогда полином Жегалкина можно записать как:&lt;br /&gt;
&amp;lt;tex&amp;gt; f(x) = \bigoplus\limits_i \alpha_i \cdot x_1^{i_1} \cdot x_2^{i_2} \cdot ... \cdot x_n^{i_n}&amp;lt;/tex&amp;gt;, где   &amp;lt;tex&amp;gt;\alpha_i \in  \{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Множество коэффициентов &amp;lt;tex&amp;gt;\{\alpha _i\}&amp;lt;/tex&amp;gt; можно рассматривать как функцию &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, заданной на множестве индексов &amp;lt;tex&amp;gt; i \in \overline{1..n}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\alpha: i \mapsto \alpha_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, функцию &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; можно записать и следующим образом: &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_i \alpha_i \cdot [x_1 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_1] \cdot [x_2 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_2] \cdot ... \cdot [x_n , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_n]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тут запись &amp;lt;tex&amp;gt;[x_k , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \; i_k]&amp;lt;/tex&amp;gt; означает, что элелемент &amp;lt;tex&amp;gt; x_k &amp;lt;/tex&amp;gt; присутствует в соответствующем члене полинома только если &amp;lt;tex&amp;gt; i_k = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда если для какого-то &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;i \succ x&amp;lt;/tex&amp;gt; ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.&lt;br /&gt;
Отсюда ясно, что &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i \preceq x} \alpha_i &amp;lt;/tex&amp;gt;. &amp;amp;nbsp; &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;&lt;br /&gt;
Найдем отображение &amp;lt;tex&amp;gt; f \mapsto \alpha&amp;lt;/tex&amp;gt; (То есть такое, которое по заданной функции вычисляет значения всех коэффициентов).&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Пусть задана функция &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;. Тогда функцию &amp;lt;tex&amp;gt; \alpha_x &amp;lt;/tex&amp;gt; можно найти по формуле: &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt; &amp;amp;nbsp;&amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
||proof=Докажем при помощи индукции по количеству единиц в векторе &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; ( иначе говоря, по сумме &amp;lt;tex&amp;gt;x_1+x_2+...+x_n&amp;lt;/tex&amp;gt; ) и для удобства обозначим это количество единиц(сумму) &amp;lt;tex&amp;gt; wt(x) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''1)''' База: если &amp;lt;tex&amp;gt; x = 0 &amp;lt;/tex&amp;gt;, то, очевидно &amp;lt;tex&amp;gt; f(0) = \alpha_0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)''' Пускай теорема справедлива для всех сумм &amp;lt;tex&amp;gt;wt(x) &amp;lt; k&amp;lt;/tex&amp;gt;. Покажем, что в таком случае она верна и для &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt;. По &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;, а далее по предположению индукции видим: &amp;lt;tex&amp;gt; f(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&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сумму &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ]  &amp;lt;/tex&amp;gt;. Каждый элемент &amp;lt;tex&amp;gt; f(j) &amp;lt;/tex&amp;gt; содержится в ней, только если &amp;lt;tex&amp;gt; j \preceq x &amp;lt;/tex&amp;gt;, и для фиксированных &amp;lt;tex&amp;gt; j, x &amp;lt;/tex&amp;gt; элемент &amp;lt;tex&amp;gt; f(j)&amp;lt;/tex&amp;gt; встречается ровно столько раз, сколько существует &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; , таких, что &amp;lt;tex&amp;gt; j \prec i \preceq x&amp;lt;/tex&amp;gt;. Несложно увидеть, что таких &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt; 2^{wt(x)-wt(j)}-1 &amp;lt;/tex&amp;gt;, то есть нечетное количество раз. Тогда &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ] =  \bigoplus \limits_{j\prec  x} f(j) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Но тогда &amp;lt;tex&amp;gt; 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)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
То есть при &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt; формула также выполняется, значит при любых &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;  выполняется &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
Отображение &amp;lt;tex&amp;gt; f \rightarrow \alpha&amp;lt;/tex&amp;gt; также называется преобразованием Мёбиуса.&lt;br /&gt;
&lt;br /&gt;
Видно, что &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt; — это одно и тоже преобразование. Значит, если применить преобразование Мёбиуса к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. То есть преобразование Мёбиуса обратно самому себе, иными словами, является инволюцией.&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&lt;br /&gt;
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&lt;br /&gt;
* Логачёв О.А, Сальников А.А., Ященко В.В. Булевы фунции в теории кодирования и криптологии — МЦНМО, 2004. - 470с. — ISBN 5-94057-117-4.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Булевы функции]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16526</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16526"/>
				<updated>2012-01-13T13:08:44Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: /* Метод треугольника */ добавлено обоснование&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_0 \oplus a_1 x_1 \oplus a_2  x_2 \oplus ... \oplus a_n  x_n \oplus a_{n+1} x_1 x_2 \oplus ... \oplus a_{..n + C_{n}^2}  x_{n-1} x_n \oplus ... \oplus a_{2^n-1} x_1 x_2 ... x_n  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1} \ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
=== По таблице истинности ===&lt;br /&gt;
Пусть для функции &amp;lt;tex&amp;gt;f(x_1,x_2,..,x_n)&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты с учётом того, что &amp;lt;tex&amp;gt; a \oplus 1 = \bar{a}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; a \oplus 0 = a&amp;lt;/tex&amp;gt;. За каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt; и её таблица истинности:&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 |-&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt;&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||1||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||1||0&lt;br /&gt;
|}&lt;br /&gt;
Построим для неё полином Жегалкина:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4) = a_0 \oplus a_1 x_1 \oplus a_2 x_2 \oplus a_3 x_3 \oplus a_4 x_4 \oplus a_5 x_1 x_2 \oplus a_6 x_1 x_3 \oplus a_7 x_1 x_4 \oplus a_8 x_2 x_3 \oplus a_9 x_2 x_4 \oplus a_{10} x_3 x_4 \oplus a_{11} x_1 x_2 x_3 \oplus a_{12} x_1 x_2 x_4 \oplus a_{13} x_1 x_3 x_4 \oplus a_{14} x_2 x_3 x_4  \oplus a_{15} x_1 x_2 x_3 x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;f(0,0,0,0) = 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;a_0 = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Далее подставляем все остальные наборы в порядке возрастания числа единиц, подставляя вновь полученные значения в следующие формулы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,0) = a_0 \oplus a_1 = 1 \Rightarrow a_1 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,0) = a_0 \oplus a_2 = 0 \Rightarrow a_2 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,0) = a_0 \oplus a_3 = 0 \Rightarrow a_3 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,0,1) = a_0 \oplus a_4 = 0 \Rightarrow a_4 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_5 = 1 \Rightarrow a_5 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_6 = 0 \Rightarrow a_6 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_7 = 0 \Rightarrow a_7 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,0) = a_0 \oplus a_2 \oplus a_3 \oplus a_8 = 1 \Rightarrow a_8 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,1) = a_0 \oplus a_2 \oplus a_4 \oplus a_9 = 0 \Rightarrow a_9 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,1) = a_0 \oplus a_3 \oplus a_4 \oplus a_{10} = 0 \Rightarrow a_{10} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_5 \oplus a_6 \oplus a_8 \oplus a_{11} = 1 \Rightarrow a_{11} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_4 \oplus a_5 \oplus a_7 \oplus a_9 \oplus a_{12} = 0 \Rightarrow a_{12} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,1) = a_0 \oplus a_1 \oplus a_3 \oplus a_4 \oplus a_6 \oplus a_7 \oplus a_{10} \oplus a_{13} = 1 \Rightarrow a_{13} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,1) = a_0 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{14} = 0 \Rightarrow a_{14} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_5 \oplus a_6 \oplus a_7 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{11} \oplus a_{12} \oplus a_{13} \oplus a_{14} \oplus a_{15} = 0 \Rightarrow a_{15} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, полином Жегалкина выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]] ===&lt;br /&gt;
Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то можно сначала убрать дизъюнкцию, используя правило Де-Моргана, а все отрицания заменить прибавлением единицы по модулю два, после чего раскрыть скобки по обычным правилам, при этом учитывая, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому. Либо же можно заменить дизъюнкцию по следующему правилу:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt; A \lor B = AB \oplus A \oplus B &amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если функция задана в СДНФ, то так как при любых значениях входных переменных в единицу обращается не более одного члена выражения, то достаточно просто заменить все дизъюнкции исключающим ИЛИ.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция в ДНФ &amp;lt;tex&amp;gt; f(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 &amp;lt;/tex&amp;gt;, построим полином Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Запишем функцию так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Сгруппируем слагаемые и воспользуемся преобразованием (1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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 x_1 x_2 x_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Воспользуемся свойствами конъюнкции &amp;lt;tex&amp;gt;A \land A = A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\neg A \land A = 0&amp;lt;/tex&amp;gt;, а также тем, что &amp;lt;tex&amp;gt;A \oplus A = 0&amp;lt;/tex&amp;gt;, и упростим выражение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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) + x_2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ещё раз воспользуемся преобразованием (1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus (x_1 x_2 \neg x_3  x_4 \oplus \neg x_1 \neg x_4)x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобку по алгебраическим правилам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus x_1 x_2 x_2 \neg x_3  x_4 \oplus \neg x_1 x_2 \neg x_4 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Снова воспользуемся свойствами конъюнкции и исключающего ИЛИ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заменим отрицание на прибавление &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выкинем парные слагаемые и получим окончательную формулу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Метод треугольника === &amp;lt;!-- Да, копипаста с википедии, и что? Метод же прост и удобен --&amp;gt;&lt;br /&gt;
Метод треугольника позволяет преобразовать таблицу истинности в полином Жегалкина путём построения вспомогательной треугольной таблицы в соответствии со следующими правилами:&lt;br /&gt;
# Строится полная таблица истинности, в которой строки идут в порядке возрастания двоичных кодов от 000...00 до 111...11.&lt;br /&gt;
# Строится вспомогательная треугольная таблица, в которой первый столбец совпадает со столбцом значений функции в таблице истинности.&lt;br /&gt;
# Ячейка в каждом последующем столбце получается путём сложения по модулю 2 двух ячеек предыдущего столбца — стоящей в той же строке и строкой ниже.&lt;br /&gt;
# Столбцы вспомогательной таблицы нумеруются двоичными кодами в том же порядке, что и строки таблицы истинности.&lt;br /&gt;
# Каждому двоичному коду ставится в соответствие один из членов полинома Жегалкина в зависимости от позиций кода, в которых стоят единицы. Например, ячейке 111 соответствует член ABC, ячейке 101 — член AC, ячейке 010 — член B, ячейке 000 — член 1 и т.д.&lt;br /&gt;
# Если в верхней строке какого-либо столбца стоит единица, то соответствующий член присутствует в полиноме Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Фактически, этот метод является модификацией метода построения по таблице истинности, описанного выше. По сравнению с ним он удобнее тем, что расчёты занимают мало места и в них сложнее ошибиться, но метод треугольника требует бо́льшего количества операций.&lt;br /&gt;
&lt;br /&gt;
Пример преобразования таблицы истинности в полином Жегалкина для функции трёх переменных P(A,B,C) показан на рисунке.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Преобразование таблицы истинности в полином Жегалкина методом треугольника.gif]]&lt;br /&gt;
&lt;br /&gt;
Чтобы получить формулу, по которой рассчитывается какой-либо коэффициент, нужно из клетки, в которой он записан, пройтись всеми возможными путями влево, до столбца ''P'' таблицы истинности, делая ходы влево и влево-вниз, записать значения в конечных ячейках и сложить их все между собой по модулю 2.&lt;br /&gt;
&lt;br /&gt;
Таким образом, в первом столбце сверху записан коэффициент &amp;lt;tex&amp;gt; a_0 = P(0,0,0) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
во втором — &amp;lt;tex&amp;gt; a_1 = P(0,0,0) \oplus P(0,0,1) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
в третьем — &amp;lt;tex&amp;gt; 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) &amp;lt;/tex&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
в четвёртом —&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt; 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), &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
и так далее, то есть при построении вспомогательной таблицы автоматически просчитываются коэффициенты по формулам, идентичным методу построения по таблице истинности.&lt;br /&gt;
&lt;br /&gt;
=== Преобразование Мёбиуса ===&lt;br /&gt;
Пусть задана [[Определение булевой функции|булева функция]] &amp;lt;tex&amp;gt;f: B^n \rightarrow B, \;\; B=\{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Любая булева функция представима в виде полинома Жегалкина, притом единственным образом.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; i = (i _1, i _2, .. i_n), \;\; i_k \in \{0 ; 1\}&amp;lt;/tex&amp;gt;, и введем обозначение &amp;lt;tex&amp;gt; x ^{i_k} \sim \left\{\begin{matrix} x, \;\; i_k=1&lt;br /&gt;
\\ 1, \;\; i_k=0&lt;br /&gt;
\end{matrix}\right. &amp;lt;/tex&amp;gt; &amp;amp;nbsp;.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Тогда полином Жегалкина можно записать как:&lt;br /&gt;
&amp;lt;tex&amp;gt; f(x) = \bigoplus\limits_i \alpha_i \cdot x_1^{i_1} \cdot x_2^{i_2} \cdot ... \cdot x_n^{i_n}&amp;lt;/tex&amp;gt;, где   &amp;lt;tex&amp;gt;\alpha_i \in  \{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Множество коэффициентов &amp;lt;tex&amp;gt;\{\alpha _i\}&amp;lt;/tex&amp;gt; можно рассматривать как функцию &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, заданной на множестве индексов &amp;lt;tex&amp;gt; i \in \overline{1..n}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\alpha: i \mapsto \alpha_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, функцию &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; можно записать и следующим образом: &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_i \alpha_i \cdot [x_1 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_1] \cdot [x_2 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_2] \cdot ... \cdot [x_n , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_n]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тут запись &amp;lt;tex&amp;gt;[x_k , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \; i_k]&amp;lt;/tex&amp;gt; означает, что элелемент &amp;lt;tex&amp;gt; x_k &amp;lt;/tex&amp;gt; присутствует в соответствующем члене полинома только если &amp;lt;tex&amp;gt; i_k = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда если для какого-то &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;i \succ x&amp;lt;/tex&amp;gt; ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.&lt;br /&gt;
Отсюда ясно, что &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i \preceq x} \alpha_i &amp;lt;/tex&amp;gt;. &amp;amp;nbsp; &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;&lt;br /&gt;
Найдем отображение &amp;lt;tex&amp;gt; f \mapsto \alpha&amp;lt;/tex&amp;gt; (То есть такое, которое по заданной функции вычисляет значения всех коэффициентов).&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Пусть задана функция &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;. Тогда функцию &amp;lt;tex&amp;gt; \alpha_x &amp;lt;/tex&amp;gt; можно найти по формуле: &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt; &amp;amp;nbsp;&amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
||proof=Докажем при помощи индукции по количеству единиц в векторе &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; ( иначе говоря, по сумме &amp;lt;tex&amp;gt;x_1+x_2+...+x_n&amp;lt;/tex&amp;gt; ) и для удобства обозначим это количество единиц(сумму) &amp;lt;tex&amp;gt; wt(x) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''1)''' База: если &amp;lt;tex&amp;gt; x = 0 &amp;lt;/tex&amp;gt;, то, очевидно &amp;lt;tex&amp;gt; f(0) = \alpha_0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)''' Пускай теорема справедлива для всех сумм &amp;lt;tex&amp;gt;wt(x) &amp;lt; k&amp;lt;/tex&amp;gt;. Покажем, что в таком случае она верна и для &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt;. По &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;, а далее по предположению индукции видим: &amp;lt;tex&amp;gt; f(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&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сумму &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ]  &amp;lt;/tex&amp;gt;. Каждый элемент &amp;lt;tex&amp;gt; f(j) &amp;lt;/tex&amp;gt; содержится в ней, только если &amp;lt;tex&amp;gt; j \preceq x &amp;lt;/tex&amp;gt;, и для фиксированных &amp;lt;tex&amp;gt; j, x &amp;lt;/tex&amp;gt; элемент &amp;lt;tex&amp;gt; f(j)&amp;lt;/tex&amp;gt; встречается ровно столько раз, сколько существует &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; , таких, что &amp;lt;tex&amp;gt; j \prec i \preceq x&amp;lt;/tex&amp;gt;. Несложно увидеть, что таких &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt; 2^{wt(x)-wt(j)}-1 &amp;lt;/tex&amp;gt;, то есть нечетное количество раз. Тогда &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ] =  \bigoplus \limits_{j\prec  x} f(j) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Но тогда &amp;lt;tex&amp;gt; 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)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
То есть при &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt; формула также выполняется, значит при любых &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;  выполняется &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
Отображение &amp;lt;tex&amp;gt; f \rightarrow \alpha&amp;lt;/tex&amp;gt; также называется преобразованием Мёбиуса.&lt;br /&gt;
&lt;br /&gt;
Видно, что &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt; — это одно и тоже преобразование. Значит, если применить преобразование Мёбиуса к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. То есть преобразование Мёбиуса обратно самому себе, иными словами, является инволюцией.&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&lt;br /&gt;
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&lt;br /&gt;
* Логачёв О.А, Сальников А.А., Ященко В.В. Булевы фунции в теории кодирования и криптологии — МЦНМО, 2004. - 470с. — ISBN 5-94057-117-4.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Булевы функции]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16506</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=16506"/>
				<updated>2012-01-13T06:23:05Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: /* Преобразование дизъюнктивной нормальной формы */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_0 \oplus a_1 x_1 \oplus a_2  x_2 \oplus ... \oplus a_n  x_n \oplus a_{n+1} x_1 x_2 \oplus ... \oplus a_{..n + C_{n}^2}  x_{n-1} x_n \oplus ... \oplus a_{2^n-1} x_1 x_2 ... x_n  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1} \ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
=== По таблице истинности ===&lt;br /&gt;
Пусть для функции &amp;lt;tex&amp;gt;f(x_1,x_2,..,x_n)&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты с учётом того, что &amp;lt;tex&amp;gt; a \oplus 1 = \bar{a}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; a \oplus 0 = a&amp;lt;/tex&amp;gt;. За каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt; и её таблица истинности:&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 |-&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt;&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||1||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||1||0&lt;br /&gt;
|}&lt;br /&gt;
Построим для неё полином Жегалкина:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4) = a_0 \oplus a_1 x_1 \oplus a_2 x_2 \oplus a_3 x_3 \oplus a_4 x_4 \oplus a_5 x_1 x_2 \oplus a_6 x_1 x_3 \oplus a_7 x_1 x_4 \oplus a_8 x_2 x_3 \oplus a_9 x_2 x_4 \oplus a_{10} x_3 x_4 \oplus a_{11} x_1 x_2 x_3 \oplus a_{12} x_1 x_2 x_4 \oplus a_{13} x_1 x_3 x_4 \oplus a_{14} x_2 x_3 x_4  \oplus a_{15} x_1 x_2 x_3 x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;f(0,0,0,0) = 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;a_0 = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Далее подставляем все остальные наборы в порядке возрастания числа единиц, подставляя вновь полученные значения в следующие формулы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,0) = a_0 \oplus a_1 = 1 \Rightarrow a_1 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,0) = a_0 \oplus a_2 = 0 \Rightarrow a_2 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,0) = a_0 \oplus a_3 = 0 \Rightarrow a_3 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,0,1) = a_0 \oplus a_4 = 0 \Rightarrow a_4 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_5 = 1 \Rightarrow a_5 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_6 = 0 \Rightarrow a_6 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_7 = 0 \Rightarrow a_7 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,0) = a_0 \oplus a_2 \oplus a_3 \oplus a_8 = 1 \Rightarrow a_8 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,1) = a_0 \oplus a_2 \oplus a_4 \oplus a_9 = 0 \Rightarrow a_9 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,1) = a_0 \oplus a_3 \oplus a_4 \oplus a_{10} = 0 \Rightarrow a_{10} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_5 \oplus a_6 \oplus a_8 \oplus a_{11} = 1 \Rightarrow a_{11} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_4 \oplus a_5 \oplus a_7 \oplus a_9 \oplus a_{12} = 0 \Rightarrow a_{12} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,1) = a_0 \oplus a_1 \oplus a_3 \oplus a_4 \oplus a_6 \oplus a_7 \oplus a_{10} \oplus a_{13} = 1 \Rightarrow a_{13} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,1) = a_0 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{14} = 0 \Rightarrow a_{14} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_5 \oplus a_6 \oplus a_7 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{11} \oplus a_{12} \oplus a_{13} \oplus a_{14} \oplus a_{15} = 0 \Rightarrow a_{15} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, полином Жегалкина выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]] ===&lt;br /&gt;
Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то можно сначала убрать дизъюнкцию, используя правило Де-Моргана, а все отрицания заменить прибавлением единицы по модулю два, после чего раскрыть скобки по обычным правилам, при этом учитывая, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому. Либо же можно заменить дизъюнкцию по следующему правилу:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tex&amp;gt; A \lor B = AB \oplus A \oplus B &amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Если функция задана в СДНФ, то так как при любых значениях входных переменных в единицу обращается не более одного члена выражения, то достаточно просто заменить все дизъюнкции исключающим ИЛИ.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция в ДНФ &amp;lt;tex&amp;gt; f(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 &amp;lt;/tex&amp;gt;, построим полином Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Запишем функцию так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Сгруппируем слагаемые и воспользуемся преобразованием (1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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 x_1 x_2 x_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Воспользуемся свойствами конъюнкции &amp;lt;tex&amp;gt;A \land A = A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\neg A \land A = 0&amp;lt;/tex&amp;gt;, а также тем, что &amp;lt;tex&amp;gt;A \oplus A = 0&amp;lt;/tex&amp;gt;, и упростим выражение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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) + x_2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ещё раз воспользуемся преобразованием (1):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus (x_1 x_2 \neg x_3  x_4 \oplus \neg x_1 \neg x_4)x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобку по алгебраическим правилам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus x_1 x_2 x_2 \neg x_3  x_4 \oplus \neg x_1 x_2 \neg x_4 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Снова воспользуемся свойствами конъюнкции и исключающего ИЛИ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заменим отрицание на прибавление &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выкинем парные слагаемые и получим окончательную формулу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Метод треугольника === &amp;lt;!-- Да, копипаста с википедии, и что? Метод же прост и удобен --&amp;gt;&lt;br /&gt;
Метод треугольника позволяет преобразовать таблицу истинности в полином Жегалкина путём построения вспомогательной треугольной таблицы в соответствии со следующими правилами:&lt;br /&gt;
# Строится полная таблица истинности, в которой строки идут в порядке возрастания двоичных кодов от 000...00 до 111...11.&lt;br /&gt;
# Строится вспомогательная треугольная таблица, в которой первый столбец совпадает со столбцом значений функции в таблице истинности.&lt;br /&gt;
# Ячейка в каждом последующем столбце получается путём суммирования по модулю 2 двух ячеек предыдущего столбца — стоящей в той же строке и строкой ниже.&lt;br /&gt;
# Столбцы вспомогательной таблицы нумеруются двоичными кодами в том же порядке, что и строки таблицы истинности.&lt;br /&gt;
# Каждому двоичному коду ставится в соответствие один из членов полинома Жегалкина в зависимости от позиций кода, в которых стоят единицы. Например, ячейке 111 соответствует член ABC, ячейке 101 — член AC, ячейке 010 — член B, ячейке 000 — член 1 и т.д.&lt;br /&gt;
# Если в верхней строке какого-либо столбца стоит единица, то соответствующий член присутствует в полиноме Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Пример преобразования таблицы истинности в полином Жегалкина для функции трёх переменных P(A,B,C) показан на рисунке.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Преобразование таблицы истинности в полином Жегалкина методом треугольника.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Преобразование Мёбиуса ===&lt;br /&gt;
Пусть задана [[Определение булевой функции|булева функция]] &amp;lt;tex&amp;gt;f: B^n \rightarrow B, \;\; B=\{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Любая булева функция представима в виде полинома Жегалкина, притом единственным образом.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; i = (i _1, i _2, .. i_n), \;\; i_k \in \{0 ; 1\}&amp;lt;/tex&amp;gt;, и введем обозначение &amp;lt;tex&amp;gt; x ^{i_k} \sim \left\{\begin{matrix} x, \;\; i_k=1&lt;br /&gt;
\\ 1, \;\; i_k=0&lt;br /&gt;
\end{matrix}\right. &amp;lt;/tex&amp;gt; &amp;amp;nbsp;.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Тогда полином Жегалкина можно записать как:&lt;br /&gt;
&amp;lt;tex&amp;gt; f(x) = \bigoplus\limits_i \alpha_i \cdot x_1^{i_1} \cdot x_2^{i_2} \cdot ... \cdot x_n^{i_n}&amp;lt;/tex&amp;gt;, где   &amp;lt;tex&amp;gt;\alpha_i \in  \{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Множество коэффициентов &amp;lt;tex&amp;gt;\{\alpha _i\}&amp;lt;/tex&amp;gt; можно рассматривать как функцию &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, заданной на множестве индексов &amp;lt;tex&amp;gt; i \in \overline{1..n}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\alpha: i \mapsto \alpha_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, функцию &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; можно записать и следующим образом: &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_i \alpha_i \cdot [x_1 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_1] \cdot [x_2 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_2] \cdot ... \cdot [x_n , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_n]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тут запись &amp;lt;tex&amp;gt;[x_k , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \; i_k]&amp;lt;/tex&amp;gt; означает, что элелемент &amp;lt;tex&amp;gt; x_k &amp;lt;/tex&amp;gt; присутствует в соответствующем члене полинома только если &amp;lt;tex&amp;gt; i_k = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда если для какого-то &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;i \succ x&amp;lt;/tex&amp;gt; ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.&lt;br /&gt;
Отсюда ясно, что &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i \preceq x} \alpha_i &amp;lt;/tex&amp;gt;. &amp;amp;nbsp; &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;&lt;br /&gt;
Найдем отображение &amp;lt;tex&amp;gt; f \mapsto \alpha&amp;lt;/tex&amp;gt; (То есть такое, которое по заданной функции вычисляет значения всех коэффициентов).&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Пусть задана функция &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;. Тогда функцию &amp;lt;tex&amp;gt; \alpha_x &amp;lt;/tex&amp;gt; можно найти по формуле: &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt; &amp;amp;nbsp;&amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
||proof=Докажем при помощи индукции по количеству единиц в векторе &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; ( иначе говоря, по сумме &amp;lt;tex&amp;gt;x_1+x_2+...+x_n&amp;lt;/tex&amp;gt; ) и для удобства обозначим это количество единиц(сумму) &amp;lt;tex&amp;gt; wt(x) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''1)''' База: если &amp;lt;tex&amp;gt; x = 0 &amp;lt;/tex&amp;gt;, то, очевидно &amp;lt;tex&amp;gt; f(0) = \alpha_0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)''' Пускай теорема справедлива для всех сумм &amp;lt;tex&amp;gt;wt(x) &amp;lt; k&amp;lt;/tex&amp;gt;. Покажем, что в таком случае она верна и для &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt;. По &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;, а далее по предположению индукции видим: &amp;lt;tex&amp;gt; f(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&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сумму &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ]  &amp;lt;/tex&amp;gt;. Каждый элемент &amp;lt;tex&amp;gt; f(j) &amp;lt;/tex&amp;gt; содержится в ней, только если &amp;lt;tex&amp;gt; j \preceq x &amp;lt;/tex&amp;gt;, и для фиксированных &amp;lt;tex&amp;gt; j, x &amp;lt;/tex&amp;gt; элемент &amp;lt;tex&amp;gt; f(j)&amp;lt;/tex&amp;gt; встречается ровно столько раз, сколько существует &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; , таких, что &amp;lt;tex&amp;gt; j \prec i \preceq x&amp;lt;/tex&amp;gt;. Несложно увидеть, что таких &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt; 2^{wt(x)-wt(j)}-1 &amp;lt;/tex&amp;gt;, то есть нечетное количество раз. Тогда &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ] =  \bigoplus \limits_{j\prec  x} f(j) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Но тогда &amp;lt;tex&amp;gt; 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)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
То есть при &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt; формула также выполняется, значит при любых &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;  выполняется &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
Отображение &amp;lt;tex&amp;gt; f \rightarrow \alpha&amp;lt;/tex&amp;gt; также называется преобразованием Мёбиуса.&lt;br /&gt;
&lt;br /&gt;
Видно, что &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt; — это одно и тоже преобразование. Значит, если применить преобразование Мёбиуса к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. То есть преобразование Мёбиуса обратно самому себе, иными словами, является инволюцией.&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&lt;br /&gt;
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&lt;br /&gt;
* Логачёв О.А, Сальников А.А., Ященко В.В. Булевы фунции в теории кодирования и криптологии — МЦНМО, 2004. - 470с. — ISBN 5-94057-117-4.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Булевы функции]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11796</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11796"/>
				<updated>2011-10-22T22:51:32Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: /* По таблице истинности */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_0 \oplus a_1 x_1 \oplus a_2  x_2 \oplus ... \oplus a_n  x_n \oplus a_{n+1} x_1 x_2 \oplus ... \oplus a_{..n + C_{n}^2}  x_{n-1} x_n \oplus ... \oplus a_{2^n-1} x_1 x_2 ... x_n  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
== Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1} \ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
=== По таблице истинности ===&lt;br /&gt;
Пусть для функции &amp;lt;tex&amp;gt;f(x_1,x_2,..,x_n)&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты с учётом того, что &amp;lt;tex&amp;gt; a \oplus 1 = \bar{a}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; a \oplus 0 = a&amp;lt;/tex&amp;gt;. Можно показать, что за каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt; и её таблица истинности:&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 |-&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt;&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||1||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||1||0&lt;br /&gt;
|}&lt;br /&gt;
Построим для неё полином Жегалкина:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4) = a_0 \oplus a_1 x_1 \oplus a_2 x_2 \oplus a_3 x_3 \oplus a_4 x_4 \oplus a_5 x_1 x_2 \oplus a_6 x_1 x_3 \oplus a_7 x_1 x_4 \oplus a_8 x_2 x_3 \oplus a_9 x_2 x_4 \oplus a_{10} x_3 x_4 \oplus a_{11} x_1 x_2 x_3 \oplus a_{12} x_1 x_2 x_4 \oplus a_{13} x_1 x_3 x_4 \oplus a_{14} x_2 x_3 x_4  \oplus a_{15} x_1 x_2 x_3 x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;f(0,0,0,0) = 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;a_0 = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Далее подставляем все остальные наборы в порядке возрастания числа единиц, подставляя вновь полученные значения в следующие формулы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,0) = a_0 \oplus a_1 = 1 \Rightarrow a_1 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,0) = a_0 \oplus a_2 = 0 \Rightarrow a_2 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,0) = a_0 \oplus a_3 = 0 \Rightarrow a_3 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,0,1) = a_0 \oplus a_4 = 0 \Rightarrow a_4 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_5 = 1 \Rightarrow a_5 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_6 = 0 \Rightarrow a_6 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_7 = 0 \Rightarrow a_7 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,0) = a_0 \oplus a_2 \oplus a_3 \oplus a_8 = 1 \Rightarrow a_8 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,1) = a_0 \oplus a_2 \oplus a_4 \oplus a_9 = 0 \Rightarrow a_9 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,1) = a_0 \oplus a_3 \oplus a_4 \oplus a_{10} = 0 \Rightarrow a_{10} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_5 \oplus a_6 \oplus a_8 \oplus a_{11} = 1 \Rightarrow a_{11} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_4 \oplus a_5 \oplus a_7 \oplus a_9 \oplus a_{12} = 0 \Rightarrow a_{12} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,1) = a_0 \oplus a_1 \oplus a_3 \oplus a_4 \oplus a_6 \oplus a_7 \oplus a_{10} \oplus a_{13} = 1 \Rightarrow a_{13} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,1) = a_0 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{14} = 0 \Rightarrow a_{14} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_5 \oplus a_6 \oplus a_7 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{11} \oplus a_{12} \oplus a_{13} \oplus a_{14} \oplus a_{15} = 0 \Rightarrow a_{15} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, полином Жегалкина выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]] ===&lt;br /&gt;
Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то можно сначала убрать дизъюнкцию, используя правило Де-Моргана, а все отрицания заменить прибавлением единицы, после чего раскрыть скобки по обычным правилам, при этом учитывая, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому. Либо же можно заменить дизъюнкцию по следующему правилу: &amp;lt;tex&amp;gt; A \lor B = AB \oplus A \oplus B &amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если функция задана в СДНФ, то так как при любых значениях входных переменных в единицу обращается не более одного члена выражения, то достаточно просто заменить все дизъюнкции исключающим ИЛИ.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция в ДНФ &amp;lt;tex&amp;gt; f(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 &amp;lt;/tex&amp;gt;, построим полином Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Запишем функцию так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Сгруппируем слагаемые и воспользуемся преобразованием &amp;lt;tex&amp;gt;(1)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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 x_1 x_2 x_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Воспользуемся свойствами конъюнкции &amp;lt;tex&amp;gt;A \land A = A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\neg A \land A = 0&amp;lt;/tex&amp;gt;, а также тем, что &amp;lt;tex&amp;gt;A \oplus A = 0&amp;lt;/tex&amp;gt;, и упростим выражение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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) + x_2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ещё раз воспользуемся преобразованием &amp;lt;tex&amp;gt;(1)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus (x_1 x_2 \neg x_3  x_4 \oplus \neg x_1 \neg x_4)x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобку по алгебраическим правилам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus x_1 x_2 x_2 \neg x_3  x_4 \oplus \neg x_1 x_2 \neg x_4 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Снова воспользуемся свойствами конъюнкции и исключающего ИЛИ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заменим отрицание на прибавление &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выкинем парные слагаемые и получим окончательную формулу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Метод треугольника === &amp;lt;!-- Да, копипаста с википедии, и что? Метод же прост и удобен --&amp;gt;&lt;br /&gt;
Метод треугольника позволяет преобразовать таблицу истинности в полином Жегалкина путём построения вспомогательной треугольной таблицы в соответствии со следующими правилами:&lt;br /&gt;
# Строится полная таблица истинности, в которой строки идут в порядке возрастания двоичных кодов от 000...00 до 111...11.&lt;br /&gt;
# Строится вспомогательная треугольная таблица, в которой первый столбец совпадает со столбцом значений функции в таблице истинности.&lt;br /&gt;
# Ячейка в каждом последующем столбце получается путём суммирования по модулю 2 двух ячеек предыдущего столбца — стоящей в той же строке и строкой ниже.&lt;br /&gt;
# Столбцы вспомогательной таблицы нумеруются двоичными кодами в том же порядке, что и строки таблицы истинности.&lt;br /&gt;
# Каждому двоичному коду ставится в соответствие один из членов полинома Жегалкина в зависимости от позиций кода, в которых стоят единицы. Например, ячейке 111 соответствует член ABC, ячейке 101 — член AC, ячейке 010 — член B, ячейке 000 — член 1 и т.д.&lt;br /&gt;
# Если в верхней строке какого-либо столбца стоит единица, то соответствующий член присутствует в полиноме Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Пример преобразования таблицы истинности в полином Жегалкина для функции трёх переменных P(A,B,C) показан на рисунке.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Преобразование таблицы истинности в полином Жегалкина методом треугольника.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Преобразование Мёбиуса ===&lt;br /&gt;
Пусть задана [[Определение булевой функции|булева функция]] &amp;lt;tex&amp;gt;f: B^n \rightarrow B, \;\; B=\{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Любая булева функция представима в виде полинома Жегалкина, притом единственным образом.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; i = (i _1, i _2, .. i_n), \;\; i_k \in \{0 ; 1\}&amp;lt;/tex&amp;gt;, и введем обозначение &amp;lt;tex&amp;gt; x ^{i_k} \sim \left\{\begin{matrix} x, \;\; i_k=1&lt;br /&gt;
\\ 1, \;\; i_k=0&lt;br /&gt;
\end{matrix}\right. &amp;lt;/tex&amp;gt; &amp;amp;nbsp;.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Тогда полином Жегалкина можно записать как:&lt;br /&gt;
&amp;lt;tex&amp;gt; f(x) = \bigoplus\limits_i \alpha_i \cdot x_1^{i_1} \cdot x_2^{i_2} \cdot ... \cdot x_n^{i_n}&amp;lt;/tex&amp;gt;, где   &amp;lt;tex&amp;gt;\alpha_i \in  \{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Множество коэффициентов &amp;lt;tex&amp;gt;\{\alpha _i\}&amp;lt;/tex&amp;gt; можно рассматривать как функцию &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, заданной на множестве индексов &amp;lt;tex&amp;gt; i \in \overline{1..n}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\alpha: i \mapsto \alpha_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, функцию &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; можно записать и следующим образом: &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_i \alpha_i \cdot [x_1 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_1] \cdot [x_2 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_2] \cdot ... \cdot [x_n , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_n]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тут запись &amp;lt;tex&amp;gt;[x_k , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \; i_k]&amp;lt;/tex&amp;gt; означает, что элелемент &amp;lt;tex&amp;gt; x_k &amp;lt;/tex&amp;gt; присутствует в соответствующем члене полинома только если &amp;lt;tex&amp;gt; i_k = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда если для какого-то &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;i \succ x&amp;lt;/tex&amp;gt; ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.&lt;br /&gt;
Отсюда ясно, что &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i \preceq x} \alpha_i &amp;lt;/tex&amp;gt;. &amp;amp;nbsp; &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;&lt;br /&gt;
Найдем отображение &amp;lt;tex&amp;gt; f \mapsto \alpha&amp;lt;/tex&amp;gt; (То есть такое, которое по заданной функции вычисляет значения всех коэффициентов).&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Пусть задана функция &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;. Тогда функцию &amp;lt;tex&amp;gt; \alpha_x &amp;lt;/tex&amp;gt; можно найти по формуле: &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt; &amp;amp;nbsp;&amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
||proof=Докажем при помощи индукции по количеству единиц в векторе &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; ( иначе говоря, по сумме &amp;lt;tex&amp;gt;x_1+x_2+...+x_n&amp;lt;/tex&amp;gt; ) и для удобства обозначим это количество единиц(сумму) &amp;lt;tex&amp;gt; wt(x) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''1)''' База: если &amp;lt;tex&amp;gt; x = 0 &amp;lt;/tex&amp;gt;, то, очевидно &amp;lt;tex&amp;gt; f(0) = \alpha_0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)''' Пускай теорема справедлива для всех сумм &amp;lt;tex&amp;gt;wt(x) &amp;lt; k&amp;lt;/tex&amp;gt;. Покажем, что в таком случае она верна и для &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt;. По &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;, а далее по предположению индукции видим: &amp;lt;tex&amp;gt; f(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&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сумму &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ]  &amp;lt;/tex&amp;gt;. Каждый элемент &amp;lt;tex&amp;gt; f(j) &amp;lt;/tex&amp;gt; содержится в ней, только если &amp;lt;tex&amp;gt; j \preceq x &amp;lt;/tex&amp;gt;, и для фиксированных &amp;lt;tex&amp;gt; j, x &amp;lt;/tex&amp;gt; элемент &amp;lt;tex&amp;gt; f(j)&amp;lt;/tex&amp;gt; встречается ровно столько раз, сколько существует &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; , таких, что &amp;lt;tex&amp;gt; j \prec i \preceq x&amp;lt;/tex&amp;gt;. Несложно увидеть, что таких &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt; 2^{wt(x)-wt(j)}-1 &amp;lt;/tex&amp;gt;, то есть нечетное количество раз. Тогда &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ] =  \bigoplus \limits_{j\prec  x} f(j) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Но тогда &amp;lt;tex&amp;gt; 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)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
То есть при &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt; формула также выполняется, значит при любых &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;  выполняется &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
Отображение &amp;lt;tex&amp;gt; f \rightarrow \alpha&amp;lt;/tex&amp;gt; также называется преобразованием Мёбиуса.&lt;br /&gt;
&lt;br /&gt;
Видно, что &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt; — это одно и тоже преобразование. Значит, если применить преобразование Мёбиуса к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. То есть преобразование Мёбиуса обратно самому себе, иными словами, является инволюцией.&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&lt;br /&gt;
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&lt;br /&gt;
* Логачёв О.А, Сальников А.А., Ященко В.В. Булевы фунции в теории кодирования и криптологии — МЦНМО, 2004. - 470с. — ISBN 5-94057-117-4.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Булевы функции]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11658</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11658"/>
				<updated>2011-10-21T09:04:42Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: /* Метод треугольника */  # -&amp;gt; *&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_0 \oplus a_1 x_1 \oplus a_2  x_2 \oplus ... \oplus a_n  x_n \oplus a_{n+1} x_1 x_2 \oplus ... \oplus a_{..n + C_{n}^2}  x_{n-1} x_n \oplus ... \oplus a_{2^n-1} x_1 x_2 ... x_n  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
== Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1} \ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
=== По таблице истинности ===&lt;br /&gt;
Пусть для функции &amp;lt;tex&amp;gt;f(x_1,x_2,..,x_n)&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты с учётом того, что &amp;lt;tex&amp;gt; a \oplus 1 = \bar{a}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; a \oplus 0 = a&amp;lt;/tex&amp;gt;. Можно показать, что за каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt; и её таблица истинности:&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 |-&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt;&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||1||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||1||0&lt;br /&gt;
|}&lt;br /&gt;
Построим для неё полином Жегалкина:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4) = a_0 \oplus a_1 x_1 \oplus a_2 x_2 \oplus a_3 x_3 \oplus a_4 x_4 \oplus a_5 x_1 x_2 \oplus a_6 x_1 x_3 \oplus a_7 x_1 x_4 \oplus a_8 x_2 x_3 \oplus a_9 x_2 x_4 \oplus a_{10} x_3 x_4 \oplus a_{11} x_1 x_2 x_3 \oplus a_{12} x_1 x_2 x_4 \oplus a_{13} x_1 x_3 x_4 \oplus a_{14} x_2 x_3 x_4  \oplus a_{15} x_1 x_2 x_3 x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;f(0,0,0,0) = 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;a_0 = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Далее подставляем все остальные наборы в порядке возрастания числа единиц, подставляя вновь полученные значения в следующие формулы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,0) = a_0 \oplus a_1 = 1 \Rightarrow a_1 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,0) = a_0 \oplus a_2 = 0 \Rightarrow a_2 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,0) = a_0 \oplus a_3 = 0 \Rightarrow a_3 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,0,1) = a_0 \oplus a_4 = 0 \Rightarrow a_4 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_5 = 1 \Rightarrow a_5 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_6 = 0 \Rightarrow a_6 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_7 = 0 \Rightarrow a_7 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,0) = a_0 \oplus a_2 \oplus a_3 \oplus a_8 = 1 \Rightarrow a_8 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,1) = a_0 \oplus a_2 \oplus a_4 \oplus a_9 = 0 \Rightarrow a_9 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,1) = a_0 \oplus a_3 \oplus a_4 \oplus a_{10} = 0 \Rightarrow a_{10} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_5 \oplus a_6 \oplus a_8 \oplus a_{11} = 1 \Rightarrow a_{11} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_4 \oplus a_5 \oplus a_7 \oplus a_9 \oplus a_{12} = 0 \Rightarrow a_{12} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,1) = a_0 \oplus a_1 \oplus a_3 \oplus a_4 \oplus a_6 \oplus a_7 \oplus a_{10} \oplus a_{13} = 1 \Rightarrow a_{13} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,1) = a_0 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{14} = 0 \Rightarrow a_{14} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_5 \oplus a_6 \oplus a_7 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{11} \oplus a_{12} \oplus a_{13} \oplus a_{14} = 0 \Rightarrow a_{15} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, полином Жегалкина выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]] ===&lt;br /&gt;
Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то можно сначала убрать дизъюнкцию, используя правило Де-Моргана, а все отрицания заменить прибавлением единицы, после чего раскрыть скобки по обычным правилам, при этом учитывая, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому. Либо же можно заменить дизъюнкцию по следующему правилу: &amp;lt;tex&amp;gt; A \lor B = AB \oplus A \oplus B &amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если функция задана в СДНФ, то так как при любых значениях входных переменных в единицу обращается не более одного члена выражения, то достаточно просто заменить все дизъюнкции исключающим ИЛИ.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция в ДНФ &amp;lt;tex&amp;gt; f(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 &amp;lt;/tex&amp;gt;, построим полином Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Запишем функцию так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Сгруппируем слагаемые и воспользуемся преобразованием &amp;lt;tex&amp;gt;(1)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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 x_1 x_2 x_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Воспользуемся свойствами конъюнкции &amp;lt;tex&amp;gt;A \land A = A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\neg A \land A = 0&amp;lt;/tex&amp;gt;, а также тем, что &amp;lt;tex&amp;gt;A \oplus A = 0&amp;lt;/tex&amp;gt;, и упростим выражение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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) + x_2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ещё раз воспользуемся преобразованием &amp;lt;tex&amp;gt;(1)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus (x_1 x_2 \neg x_3  x_4 \oplus \neg x_1 \neg x_4)x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобку по алгебраическим правилам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus x_1 x_2 x_2 \neg x_3  x_4 \oplus \neg x_1 x_2 \neg x_4 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Снова воспользуемся свойствами конъюнкции и исключающего ИЛИ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заменим отрицание на прибавление &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выкинем парные слагаемые и получим окончательную формулу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Метод треугольника === &amp;lt;!-- Да, копипаста с википедии, и что? Метод же прост и удобен --&amp;gt;&lt;br /&gt;
Метод треугольника позволяет преобразовать таблицу истинности в полином Жегалкина путём построения вспомогательной треугольной таблицы в соответствии со следующими правилами:&lt;br /&gt;
# Строится полная таблица истинности, в которой строки идут в порядке возрастания двоичных кодов от 000...00 до 111...11.&lt;br /&gt;
# Строится вспомогательная треугольная таблица, в которой первый столбец совпадает со столбцом значений функции в таблице истинности.&lt;br /&gt;
# Ячейка в каждом последующем столбце получается путём суммирования по модулю 2 двух ячеек предыдущего столбца — стоящей в той же строке и строкой ниже.&lt;br /&gt;
# Столбцы вспомогательной таблицы нумеруются двоичными кодами в том же порядке, что и строки таблицы истинности.&lt;br /&gt;
# Каждому двоичному коду ставится в соответствие один из членов полинома Жегалкина в зависимости от позиций кода, в которых стоят единицы. Например, ячейке 111 соответствует член ABC, ячейке 101 — член AC, ячейке 010 — член B, ячейке 000 — член 1 и т.д.&lt;br /&gt;
# Если в верхней строке какого-либо столбца стоит единица, то соответствующий член присутствует в полиноме Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Пример преобразования таблицы истинности в полином Жегалкина для функции трёх переменных P(A,B,C) показан на рисунке.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Преобразование таблицы истинности в полином Жегалкина методом треугольника.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Преобразование Мёбиуса ===&lt;br /&gt;
Пусть задана [[Определение булевой функции|булева функция]] &amp;lt;tex&amp;gt;f: B^n \rightarrow B, \;\; B=\{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Любая булева функция представима в виде полинома Жегалкина, притом единственным образом.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; i = (i _1, i _2, .. i_n), \;\; i_k \in \{0 ; 1\}&amp;lt;/tex&amp;gt;, и введем обозначение &amp;lt;tex&amp;gt; x ^{i_k} \sim \left\{\begin{matrix} x, \;\; i_k=1&lt;br /&gt;
\\ 1, \;\; i_k=0&lt;br /&gt;
\end{matrix}\right. &amp;lt;/tex&amp;gt; &amp;amp;nbsp;.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Тогда полином Жегалкина можно записать как:&lt;br /&gt;
&amp;lt;tex&amp;gt; f(x) = \bigoplus\limits_i \alpha_i \cdot x_1^{i_1} \cdot x_2^{i_2} \cdot ... \cdot x_n^{i_n}&amp;lt;/tex&amp;gt;, где   &amp;lt;tex&amp;gt;\alpha_i \in  \{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Множество коэффициентов &amp;lt;tex&amp;gt;\{\alpha _i\}&amp;lt;/tex&amp;gt; можно рассматривать как функцию &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, заданной на множестве индексов &amp;lt;tex&amp;gt; i \in \overline{1..n}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\alpha: i \mapsto \alpha_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, функцию &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; можно записать и следующим образом: &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_i \alpha_i \cdot [x_1 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_1] \cdot [x_2 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_2] \cdot ... \cdot [x_n , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_n]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тут запись &amp;lt;tex&amp;gt;[x_k , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \; i_k]&amp;lt;/tex&amp;gt; означает, что элелемент &amp;lt;tex&amp;gt; x_k &amp;lt;/tex&amp;gt; присутствует в соответствующем члене полинома только если &amp;lt;tex&amp;gt; i_k = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда если для какого-то &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;i \succ x&amp;lt;/tex&amp;gt; ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.&lt;br /&gt;
Отсюда ясно, что &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i \preceq x} \alpha_i &amp;lt;/tex&amp;gt;. &amp;amp;nbsp; &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;&lt;br /&gt;
Найдем отображение &amp;lt;tex&amp;gt; f \mapsto \alpha&amp;lt;/tex&amp;gt; (То есть такое, которое по заданной функции вычисляет значения всех коэффициентов).&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Пусть задана функция &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;. Тогда функцию &amp;lt;tex&amp;gt; \alpha_x &amp;lt;/tex&amp;gt; можно найти по формуле: &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt; &amp;amp;nbsp;&amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
||proof=Докажем при помощи индукции по количеству единиц в векторе &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; ( иначе говоря, по сумме &amp;lt;tex&amp;gt;x_1+x_2+...+x_n&amp;lt;/tex&amp;gt; ) и для удобства обозначим это количество единиц(сумму) &amp;lt;tex&amp;gt; wt(x) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''1)''' База: если &amp;lt;tex&amp;gt; x = 0 &amp;lt;/tex&amp;gt;, то, очевидно &amp;lt;tex&amp;gt; f(0) = \alpha_0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)''' Пускай теорема справедлива для всех сумм &amp;lt;tex&amp;gt;wt(x) &amp;lt; k&amp;lt;/tex&amp;gt;. Покажем, что в таком случае она верна и для &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt;. По &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;, а далее по предположению индукции видим: &amp;lt;tex&amp;gt; f(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&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сумму &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ]  &amp;lt;/tex&amp;gt;. Каждый элемент &amp;lt;tex&amp;gt; f(j) &amp;lt;/tex&amp;gt; содержится в ней, только если &amp;lt;tex&amp;gt; j \preceq x &amp;lt;/tex&amp;gt;, и для фиксированных &amp;lt;tex&amp;gt; j, x &amp;lt;/tex&amp;gt; элемент &amp;lt;tex&amp;gt; f(j)&amp;lt;/tex&amp;gt; встречается ровно столько раз, сколько существует &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; , таких, что &amp;lt;tex&amp;gt; j \prec i \preceq x&amp;lt;/tex&amp;gt;. Несложно увидеть, что таких &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt; 2^{wt(x)-wt(j)}-1 &amp;lt;/tex&amp;gt;, то есть нечетное количество раз. Тогда &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ] =  \bigoplus \limits_{j\prec  x} f(j) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Но тогда &amp;lt;tex&amp;gt; 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)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
То есть при &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt; формула также выполняется, значит при любых &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;  выполняется &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
Отображение &amp;lt;tex&amp;gt; f \rightarrow \alpha&amp;lt;/tex&amp;gt; также называется преобразованием Мёбиуса.&lt;br /&gt;
&lt;br /&gt;
Видно, что &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt; — это одно и тоже преобразование. Значит, если применить преобразование Мёбиуса к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. То есть преобразование Мёбиуса обратно самому себе, иными словами, является инволюцией.&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&lt;br /&gt;
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&lt;br /&gt;
* Логачёв О.А, Сальников А.А., Ященко В.В. Булевы фунции в теории кодирования и криптологии — МЦНМО, 2004. - 470с. — ISBN 5-94057-117-4.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Булевы функции]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11570</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11570"/>
				<updated>2011-10-20T19:11:27Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: Добавил метод треугольника&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_0 \oplus a_1 x_1 \oplus a_2  x_2 \oplus ... \oplus a_n  x_n \oplus a_{n+1} x_1 x_2 \oplus ... \oplus a_{..n + C_{n}^2}  x_{n-1} x_n \oplus ... \oplus a_{2^n-1} x_1 x_2 ... x_n  &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
== Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1} \ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
=== По таблице истинности ===&lt;br /&gt;
Пусть для функции &amp;lt;tex&amp;gt;f(x_1,x_2,..,x_n)&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты с учётом того, что &amp;lt;tex&amp;gt; a \oplus 1 = \bar{a}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; a \oplus 0 = a&amp;lt;/tex&amp;gt;. Можно показать, что за каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt; и её таблица истинности:&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 |-&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt;&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||1||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||1||0&lt;br /&gt;
|}&lt;br /&gt;
Построим для неё полином Жегалкина:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4) = a_0 \oplus a_1 x_1 \oplus a_2 x_2 \oplus a_3 x_3 \oplus a_4 x_4 \oplus a_5 x_1 x_2 \oplus a_6 x_1 x_3 \oplus a_7 x_1 x_4 \oplus a_8 x_2 x_3 \oplus a_9 x_2 x_4 \oplus a_{10} x_3 x_4 \oplus a_{11} x_1 x_2 x_3 \oplus a_{12} x_1 x_2 x_4 \oplus a_{13} x_1 x_3 x_4 \oplus a_{14} x_2 x_3 x_4  \oplus a_{15} x_1 x_2 x_3 x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;f(0,0,0,0) = 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;a_0 = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Далее подставляем все остальные наборы в порядке возрастания числа единиц, подставляя вновь полученные значения в следующие формулы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,0) = a_0 \oplus a_1 = 1 \Rightarrow a_1 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,0) = a_0 \oplus a_2 = 0 \Rightarrow a_2 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,0) = a_0 \oplus a_3 = 0 \Rightarrow a_3 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,0,1) = a_0 \oplus a_4 = 0 \Rightarrow a_4 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_5 = 1 \Rightarrow a_5 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_6 = 0 \Rightarrow a_6 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_7 = 0 \Rightarrow a_7 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,0) = a_0 \oplus a_2 \oplus a_3 \oplus a_8 = 1 \Rightarrow a_8 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,1) = a_0 \oplus a_2 \oplus a_4 \oplus a_9 = 0 \Rightarrow a_9 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,1) = a_0 \oplus a_3 \oplus a_4 \oplus a_{10} = 0 \Rightarrow a_{10} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_5 \oplus a_6 \oplus a_8 \oplus a_{11} = 1 \Rightarrow a_{11} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_4 \oplus a_5 \oplus a_7 \oplus a_9 \oplus a_{12} = 0 \Rightarrow a_{12} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,1) = a_0 \oplus a_1 \oplus a_3 \oplus a_4 \oplus a_6 \oplus a_7 \oplus a_{10} \oplus a_{13} = 1 \Rightarrow a_{13} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,1) = a_0 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{14} = 0 \Rightarrow a_{14} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_5 \oplus a_6 \oplus a_7 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{11} \oplus a_{12} \oplus a_{13} \oplus a_{14} = 0 \Rightarrow a_{15} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, полином Жегалкина выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]] ===&lt;br /&gt;
Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то можно сначала убрать дизъюнкцию, используя правило Де-Моргана, а все отрицания заменить прибавлением единицы, после чего раскрыть скобки по обычным правилам, при этом учитывая, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому. Либо же можно заменить дизъюнкцию по следующему правилу: &amp;lt;tex&amp;gt; A \lor B = AB \oplus A \oplus B &amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если функция задана в СДНФ, то так как при любых значениях входных переменных в единицу обращается не более одного члена выражения, то достаточно просто заменить все дизъюнкции исключающим ИЛИ.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция в ДНФ &amp;lt;tex&amp;gt; f(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 &amp;lt;/tex&amp;gt;, построим полином Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Запишем функцию так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Сгруппируем слагаемые и воспользуемся преобразованием &amp;lt;tex&amp;gt;(1)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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 x_1 x_2 x_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Воспользуемся свойствами конъюнкции &amp;lt;tex&amp;gt;A \land A = A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\neg A \land A = 0&amp;lt;/tex&amp;gt;, а также тем, что &amp;lt;tex&amp;gt;A \oplus A = 0&amp;lt;/tex&amp;gt;, и упростим выражение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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) + x_2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ещё раз воспользуемся преобразованием &amp;lt;tex&amp;gt;(1)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus (x_1 x_2 \neg x_3  x_4 \oplus \neg x_1 \neg x_4)x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобку по алгебраическим правилам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus x_1 x_2 x_2 \neg x_3  x_4 \oplus \neg x_1 x_2 \neg x_4 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Снова воспользуемся свойствами конъюнкции и исключающего ИЛИ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заменим отрицание на прибавление &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выкинем парные слагаемые и получим окончательную формулу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Метод треугольника === &amp;lt;!-- Да, копипаста с википедии, и что? Метод же прост и удобен --&amp;gt;&lt;br /&gt;
Метод треугольника позволяет преобразовать таблицу истинности в полином Жегалкина путём построения вспомогательной треугольной таблицы в соответствии со следующими правилами:&lt;br /&gt;
* Строится полная таблица истинности, в которой строки идут в порядке возрастания двоичных кодов от 000...00 до 111...11.&lt;br /&gt;
* Строится вспомогательная треугольная таблица, в которой первый столбец совпадает со столбцом значений функции в таблице истинности.&lt;br /&gt;
* Ячейка в каждом последующем столбце получается путём суммирования по модулю 2 двух ячеек предыдущего столбца — стоящей в той же строке и строкой ниже.&lt;br /&gt;
* Столбцы вспомогательной таблицы нумеруются двоичными кодами в том же порядке, что и строки таблицы истинности.&lt;br /&gt;
* Каждому двоичному коду ставится в соответствие один из членов полинома Жегалкина в зависимости от позиций кода, в которых стоят единицы. Например, ячейке 111 соответствует член ABC, ячейке 101 — член AC, ячейке 010 — член B, ячейке 000 — член 1 и т.д.&lt;br /&gt;
* Если в верхней строке какого-либо столбца стоит единица, то соответствующий член присутствует в полиноме Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Пример преобразования таблицы истинности в полином Жегалкина для функции трёх переменных P(A,B,C) показан на рисунке.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Преобразование таблицы истинности в полином Жегалкина методом треугольника.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Преобразование Мёбиуса ===&lt;br /&gt;
Пусть задана [[Определение булевой функции|булева функция]] &amp;lt;tex&amp;gt;f: B^n \rightarrow B, \;\; B=\{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Любая булева функция представима в виде полинома Жегалкина, притом единственным образом.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; i = (i _1, i _2, .. i_n), \;\; i_k \in \{0 ; 1\}&amp;lt;/tex&amp;gt;, и введем обозначение &amp;lt;tex&amp;gt; x ^{i_k} \sim \left\{\begin{matrix} x, \;\; i_k=1&lt;br /&gt;
\\ 1, \;\; i_k=0&lt;br /&gt;
\end{matrix}\right. &amp;lt;/tex&amp;gt; &amp;amp;nbsp;.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Тогда полином Жегалкина можно записать как:&lt;br /&gt;
&amp;lt;tex&amp;gt; f(x) = \bigoplus\limits_i \alpha_i \cdot x_1^{i_1} \cdot x_2^{i_2} \cdot ... \cdot x_n^{i_n}&amp;lt;/tex&amp;gt;, где   &amp;lt;tex&amp;gt;\alpha_i \in  \{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Множество коэффициентов &amp;lt;tex&amp;gt;\{\alpha _i\}&amp;lt;/tex&amp;gt; можно рассматривать как функцию &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, заданной на множестве индексов &amp;lt;tex&amp;gt; i \in \overline{1..n}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\alpha: i \mapsto \alpha_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, функцию &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; можно записать и следующим образом: &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_i \alpha_i \cdot [x_1 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_1] \cdot [x_2 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_2] \cdot ... \cdot [x_n , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_n]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тут запись &amp;lt;tex&amp;gt;[x_k , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \; i_k]&amp;lt;/tex&amp;gt; означает, что элелемент &amp;lt;tex&amp;gt; x_k &amp;lt;/tex&amp;gt; присутствует в соответствующем члене полинома только если &amp;lt;tex&amp;gt; i_k = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда если для какого-то &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;i \succ x&amp;lt;/tex&amp;gt; ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.&lt;br /&gt;
Отсюда ясно, что &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i \preceq x} \alpha_i &amp;lt;/tex&amp;gt;. &amp;amp;nbsp; &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;&lt;br /&gt;
Найдем отображение &amp;lt;tex&amp;gt; f \mapsto \alpha&amp;lt;/tex&amp;gt; (То есть такое, которое по заданной функции вычисляет значения всех коэффициентов).&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Пусть задана функция &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;. Тогда функцию &amp;lt;tex&amp;gt; \alpha_x &amp;lt;/tex&amp;gt; можно найти по формуле: &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt; &amp;amp;nbsp;&amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
||proof=Докажем при помощи индукции по количеству единиц в векторе &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; ( иначе говоря, по сумме &amp;lt;tex&amp;gt;x_1+x_2+...+x_n&amp;lt;/tex&amp;gt; ) и для удобства обозначим это количество единиц(сумму) &amp;lt;tex&amp;gt; wt(x) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''1)''' База: если &amp;lt;tex&amp;gt; x = 0 &amp;lt;/tex&amp;gt;, то, очевидно &amp;lt;tex&amp;gt; f(0) = \alpha_0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)''' Пускай теорема справедлива для всех сумм &amp;lt;tex&amp;gt;wt(x) &amp;lt; k&amp;lt;/tex&amp;gt;. Покажем, что в таком случае она верна и для &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt;. По &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;, а далее по предположению индукции видим: &amp;lt;tex&amp;gt; f(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&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сумму &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ]  &amp;lt;/tex&amp;gt;. Каждый элемент &amp;lt;tex&amp;gt; f(j) &amp;lt;/tex&amp;gt; содержится в ней, только если &amp;lt;tex&amp;gt; j \preceq x &amp;lt;/tex&amp;gt;, и для фиксированных &amp;lt;tex&amp;gt; j, x &amp;lt;/tex&amp;gt; элемент &amp;lt;tex&amp;gt; f(j)&amp;lt;/tex&amp;gt; встречается ровно столько раз, сколько существует &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; , таких, что &amp;lt;tex&amp;gt; j \prec i \preceq x&amp;lt;/tex&amp;gt;. Несложно увидеть, что таких &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt; 2^{wt(x)-wt(j)}-1 &amp;lt;/tex&amp;gt;, то есть нечетное количество раз. Тогда &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ] =  \bigoplus \limits_{j\prec  x} f(j) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Но тогда &amp;lt;tex&amp;gt; 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)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
То есть при &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt; формула также выполняется, значит при любых &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;  выполняется &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
Отображение &amp;lt;tex&amp;gt; f \rightarrow \alpha&amp;lt;/tex&amp;gt; также называется преобразованием Мёбиуса.&lt;br /&gt;
&lt;br /&gt;
Видно, что &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt; — это одно и тоже преобразование. Значит, если применить преобразование Мёбиуса к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. То есть преобразование Мёбиуса обратно самому себе, иными словами, является инволюцией.&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&lt;br /&gt;
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&lt;br /&gt;
* Логачёв О.А, Сальников А.А., Ященко В.В. Булевы фунции в теории кодирования и криптологии — МЦНМО, 2004. - 470с. — ISBN 5-94057-117-4.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Булевы функции]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11565</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11565"/>
				<updated>2011-10-20T19:00:45Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: /* Преобразование дизъюнктивной нормальной формы */  Ошибочка вышла&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_0 \oplus a_1 x_1 \oplus a_2  x_2 \oplus ... \oplus a_n  x_n \oplus a_{n+1} x_1 x_2 \oplus ... \oplus a_{..n + C_{n}^2}  x_{n-1} x_n \oplus ... \oplus a_{2^n-1} x_1 x_2 ... x_n  &amp;lt;/tex&amp;gt;&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
== Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1} \ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
=== По таблице истинности ===&lt;br /&gt;
Пусть для функции &amp;lt;tex&amp;gt;f(x_1,x_2,..,x_n)&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты с учётом того, что &amp;lt;tex&amp;gt; a \oplus 1 = \bar{a}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; a \oplus 0 = a&amp;lt;/tex&amp;gt;. Можно показать, что за каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt; и её таблица истинности:&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 |-&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt;&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||1||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||1||0&lt;br /&gt;
|}&lt;br /&gt;
Построим для неё полином Жегалкина:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4) = a_0 \oplus a_1 x_1 \oplus a_2 x_2 \oplus a_3 x_3 \oplus a_4 x_4 \oplus a_5 x_1 x_2 \oplus a_6 x_1 x_3 \oplus a_7 x_1 x_4 \oplus a_8 x_2 x_3 \oplus a_9 x_2 x_4 \oplus a_{10} x_3 x_4 \oplus a_{11} x_1 x_2 x_3 \oplus a_{12} x_1 x_2 x_4 \oplus a_{13} x_1 x_3 x_4 \oplus a_{14} x_2 x_3 x_4  \oplus a_{15} x_1 x_2 x_3 x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;f(0,0,0,0) = 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;a_0 = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Далее подставляем все остальные наборы в порядке возрастания числа единиц, подставляя вновь полученные значения в следующие формулы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,0) = a_0 \oplus a_1 = 1 \Rightarrow a_1 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,0) = a_0 \oplus a_2 = 0 \Rightarrow a_2 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,0) = a_0 \oplus a_3 = 0 \Rightarrow a_3 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,0,1) = a_0 \oplus a_4 = 0 \Rightarrow a_4 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_5 = 1 \Rightarrow a_5 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_6 = 0 \Rightarrow a_6 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_7 = 0 \Rightarrow a_7 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,0) = a_0 \oplus a_2 \oplus a_3 \oplus a_8 = 1 \Rightarrow a_8 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,1) = a_0 \oplus a_2 \oplus a_4 \oplus a_9 = 0 \Rightarrow a_9 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,1) = a_0 \oplus a_3 \oplus a_4 \oplus a_{10} = 0 \Rightarrow a_{10} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_5 \oplus a_6 \oplus a_8 \oplus a_{11} = 1 \Rightarrow a_{11} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_4 \oplus a_5 \oplus a_7 \oplus a_9 \oplus a_{12} = 0 \Rightarrow a_{12} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,1) = a_0 \oplus a_1 \oplus a_3 \oplus a_4 \oplus a_6 \oplus a_7 \oplus a_{10} \oplus a_{13} = 1 \Rightarrow a_{13} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,1) = a_0 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{14} = 0 \Rightarrow a_{14} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_5 \oplus a_6 \oplus a_7 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{11} \oplus a_{12} \oplus a_{13} \oplus a_{14} = 0 \Rightarrow a_{15} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, полином Жегалкина выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]] ===&lt;br /&gt;
Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то можно сначала убрать дизъюнкцию, используя правило Де-Моргана, а все отрицания заменить прибавлением единицы, после чего раскрыть скобки по обычным правилам, при этом учитывая, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому. Либо же можно заменить дизъюнкцию по следующему правилу: &amp;lt;tex&amp;gt; A \lor B = AB \oplus A \oplus B &amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если функция задана в СДНФ, то так как при любых значениях входных переменных в единицу обращается не более одного члена выражения, то достаточно просто заменить все дизъюнкции исключающим ИЛИ.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция в ДНФ &amp;lt;tex&amp;gt; f(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 &amp;lt;/tex&amp;gt;, построим полином Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Запишем функцию так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Сгруппируем слагаемые и воспользуемся преобразованием &amp;lt;tex&amp;gt;(1)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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 x_1 x_2 x_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Воспользуемся свойствами конъюнкции &amp;lt;tex&amp;gt;A \land A = A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\neg A \land A = 0&amp;lt;/tex&amp;gt;, а также тем, что &amp;lt;tex&amp;gt;A \oplus A = 0&amp;lt;/tex&amp;gt;, и упростим выражение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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) + x_2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ещё раз воспользуемся преобразованием &amp;lt;tex&amp;gt;(1)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus (x_1 x_2 \neg x_3  x_4 \oplus \neg x_1 \neg x_4)x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобку по алгебраическим правилам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus x_1 x_2 x_2 \neg x_3  x_4 \oplus \neg x_1 x_2 \neg x_4 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Снова воспользуемся свойствами конъюнкции и исключающего ИЛИ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заменим отрицание на прибавление &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выкинем парные слагаемые и получим окончательную формулу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Преобразование Мёбиуса ===&lt;br /&gt;
Пусть задана [[Определение булевой функции|булева функция]] &amp;lt;tex&amp;gt;f: B^n \rightarrow B, \;\; B=\{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Любая булева функция представима в виде полинома Жегалкина, притом единственным образом.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; i = (i _1, i _2, .. i_n), \;\; i_k \in \{0 ; 1\}&amp;lt;/tex&amp;gt;, и введем обозначение &amp;lt;tex&amp;gt; x ^{i_k} \sim \left\{\begin{matrix} x, \;\; i_k=1&lt;br /&gt;
\\ 1, \;\; i_k=0&lt;br /&gt;
\end{matrix}\right. &amp;lt;/tex&amp;gt; &amp;amp;nbsp;.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Тогда полином Жегалкина можно записать как:&lt;br /&gt;
&amp;lt;tex&amp;gt; f(x) = \bigoplus\limits_i \alpha_i \cdot x_1^{i_1} \cdot x_2^{i_2} \cdot ... \cdot x_n^{i_n}&amp;lt;/tex&amp;gt;, где   &amp;lt;tex&amp;gt;\alpha_i \in  \{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Множество коэффициентов &amp;lt;tex&amp;gt;\{\alpha _i\}&amp;lt;/tex&amp;gt; можно рассматривать как функцию &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, заданной на множестве индексов &amp;lt;tex&amp;gt; i \in \overline{1..n}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\alpha: i \mapsto \alpha_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, функцию &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; можно записать и следующим образом: &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_i \alpha_i \cdot [x_1 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_1] \cdot [x_2 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_2] \cdot ... \cdot [x_n , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_n]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тут запись &amp;lt;tex&amp;gt;[x_k , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \; i_k]&amp;lt;/tex&amp;gt; означает, что элелемент &amp;lt;tex&amp;gt; x_k &amp;lt;/tex&amp;gt; присутствует в соответствующем члене полинома только если &amp;lt;tex&amp;gt; i_k = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда если для какого-то &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;i \succ x&amp;lt;/tex&amp;gt; ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.&lt;br /&gt;
Отсюда ясно, что &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i \preceq x} \alpha_i &amp;lt;/tex&amp;gt;. &amp;amp;nbsp; &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;&lt;br /&gt;
Найдем отображение &amp;lt;tex&amp;gt; f \mapsto \alpha&amp;lt;/tex&amp;gt; (То есть такое, которое по заданной функции вычисляет значения всех коэффициентов).&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Пусть задана функция &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;. Тогда функцию &amp;lt;tex&amp;gt; \alpha_x &amp;lt;/tex&amp;gt; можно найти по формуле: &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt; &amp;amp;nbsp;&amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
||proof=Докажем при помощи индукции по количеству единиц в векторе &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; ( иначе говоря, по сумме &amp;lt;tex&amp;gt;x_1+x_2+...+x_n&amp;lt;/tex&amp;gt; ) и для удобства обозначим это количество единиц(сумму) &amp;lt;tex&amp;gt; wt(x) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''1)''' База: если &amp;lt;tex&amp;gt; x = 0 &amp;lt;/tex&amp;gt;, то, очевидно &amp;lt;tex&amp;gt; f(0) = \alpha_0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)''' Пускай теорема справедлива для всех сумм &amp;lt;tex&amp;gt;wt(x) &amp;lt; k&amp;lt;/tex&amp;gt;. Покажем, что в таком случае она верна и для &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt;. По &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;, а далее по предположению индукции видим: &amp;lt;tex&amp;gt; f(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&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сумму &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ]  &amp;lt;/tex&amp;gt;. Каждый элемент &amp;lt;tex&amp;gt; f(j) &amp;lt;/tex&amp;gt; содержится в ней, только если &amp;lt;tex&amp;gt; j \preceq x &amp;lt;/tex&amp;gt;, и для фиксированных &amp;lt;tex&amp;gt; j, x &amp;lt;/tex&amp;gt; элемент &amp;lt;tex&amp;gt; f(j)&amp;lt;/tex&amp;gt; встречается ровно столько раз, сколько существует &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; , таких, что &amp;lt;tex&amp;gt; j \prec i \preceq x&amp;lt;/tex&amp;gt;. Несложно увидеть, что таких &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt; 2^{wt(x)-wt(j)}-1 &amp;lt;/tex&amp;gt;, то есть нечетное количество раз. Тогда &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ] =  \bigoplus \limits_{j\prec  x} f(j) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Но тогда &amp;lt;tex&amp;gt; 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)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
То есть при &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt; формула также выполняется, значит при любых &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;  выполняется &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
Отображение &amp;lt;tex&amp;gt; f \rightarrow \alpha&amp;lt;/tex&amp;gt; также называется преобразованием Мёбиуса.&lt;br /&gt;
&lt;br /&gt;
Видно, что &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt; — это одно и тоже преобразование. Значит, если применить преобразование Мёбиуса к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. То есть преобразование Мёбиуса обратно самому себе, иными словами, является инволюцией.&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&lt;br /&gt;
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&lt;br /&gt;
* Логачёв О.А, Сальников А.А., Ященко В.В. Булевы фунции в теории кодирования и криптологии — МЦНМО, 2004. - 470с. — ISBN 5-94057-117-4.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Булевы функции]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B_%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B2_%D0%BF%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D1%82%D1%80%D0%B5%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA%D0%B0.gif&amp;diff=11558</id>
		<title>Файл:Преобразование таблицы истинности в полином Жегалкина методом треугольника.gif</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B_%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B2_%D0%BF%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BC_%D1%82%D1%80%D0%B5%D1%83%D0%B3%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA%D0%B0.gif&amp;diff=11558"/>
				<updated>2011-10-20T18:34:48Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: Пример построения, взят с википедии&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Пример построения, взят с википедии&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11527</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11527"/>
				<updated>2011-10-20T06:43:07Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: Вроде бы наконец доделал&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_0 \oplus a_1 x_1 \oplus a_2  x_2 \oplus ... \oplus a_n  x_n \oplus a_{n+1} x_1 x_2 \oplus ... \oplus a_{..n + C_{n}^2}  x_{n-1} x_n \oplus ... \oplus a_{2^n-1} x_1 x_2 ... x_n  &amp;lt;/tex&amp;gt;&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
== Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1} \ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
=== По таблице истинности ===&lt;br /&gt;
Пусть для функции &amp;lt;tex&amp;gt;f(x_1,x_2,..,x_n)&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты с учётом того, что &amp;lt;tex&amp;gt; a \oplus 1 = \bar{a}&amp;lt;/tex&amp;gt;, а &amp;lt;tex&amp;gt; a \oplus 0 = a&amp;lt;/tex&amp;gt;. Можно показать, что за каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt; и её таблица истинности:&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
 |-&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_1&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_3&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
 !class=&amp;quot;dark&amp;quot; style=&amp;quot;font-weight:normal&amp;quot;| &amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4)&amp;lt;/tex&amp;gt;&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||0||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||0||1||1||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||0||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||0||1||1||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||0||1||0&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||0||1&lt;br /&gt;
 |- align=&amp;quot;center&amp;quot;&lt;br /&gt;
 ||1||1||1||1||0&lt;br /&gt;
|}&lt;br /&gt;
Построим для неё полином Жегалкина:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4) = a_0 \oplus a_1 x_1 \oplus a_2 x_2 \oplus a_3 x_3 \oplus a_4 x_4 \oplus a_5 x_1 x_2 \oplus a_6 x_1 x_3 \oplus a_7 x_1 x_4 \oplus a_8 x_2 x_3 \oplus a_9 x_2 x_4 \oplus a_{10} x_3 x_4 \oplus a_{11} x_1 x_2 x_3 \oplus a_{12} x_1 x_2 x_4 \oplus a_{13} x_1 x_3 x_4 \oplus a_{14} x_2 x_3 x_4  \oplus a_{15} x_1 x_2 x_3 x_4&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt;f(0,0,0,0) = 0&amp;lt;/tex&amp;gt;, то &amp;lt;tex&amp;gt;a_0 = 0&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Далее подставляем все остальные наборы в порядке возрастания числа единиц, подставляя вновь полученные значения в следующие формулы:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,0) = a_0 \oplus a_1 = 1 \Rightarrow a_1 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,0) = a_0 \oplus a_2 = 0 \Rightarrow a_2 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,0) = a_0 \oplus a_3 = 0 \Rightarrow a_3 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,0,1) = a_0 \oplus a_4 = 0 \Rightarrow a_4 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_5 = 1 \Rightarrow a_5 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_6 = 0 \Rightarrow a_6 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_7 = 0 \Rightarrow a_7 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,0) = a_0 \oplus a_2 \oplus a_3 \oplus a_8 = 1 \Rightarrow a_8 = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,0,1) = a_0 \oplus a_2 \oplus a_4 \oplus a_9 = 0 \Rightarrow a_9 = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,0,1,1) = a_0 \oplus a_3 \oplus a_4 \oplus a_{10} = 0 \Rightarrow a_{10} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,0) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_5 \oplus a_6 \oplus a_8 \oplus a_{11} = 1 \Rightarrow a_{11} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,0,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_4 \oplus a_5 \oplus a_7 \oplus a_9 \oplus a_{12} = 0 \Rightarrow a_{12} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,0,1,1) = a_0 \oplus a_1 \oplus a_3 \oplus a_4 \oplus a_6 \oplus a_7 \oplus a_{10} \oplus a_{13} = 1 \Rightarrow a_{13} = 0&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(0,1,1,1) = a_0 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{14} = 0 \Rightarrow a_{14} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(1,1,1,1) = a_0 \oplus a_1 \oplus a_2 \oplus a_3 \oplus a_4 \oplus a_5 \oplus a_6 \oplus a_7 \oplus a_8 \oplus a_9 \oplus a_{10} \oplus a_{11} \oplus a_{12} \oplus a_{13} \oplus a_{14} = 0 \Rightarrow a_{15} = 1&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Таким образом, полином Жегалкина выглядит так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]] ===&lt;br /&gt;
Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то можно сначала убрать дизъюнкцию, используя правило Де-Моргана, а все отрицания заменить прибавлением единицы, после чего раскрыть скобки по обычным правилам, при этом учитывая, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому. Либо же можно заменить дизъюнкцию по следующему правилу: &amp;lt;tex&amp;gt; A \lor B = AB \oplus A \oplus B &amp;lt;/tex&amp;gt; &amp;amp;nbsp; &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Если функция задана в СДНФ, то так как при любых значениях входных переменных в единицу обращается не более одного члена выражения, то достаточно просто заменить все дизъюнкции исключающим ИЛИ.&lt;br /&gt;
&lt;br /&gt;
'''Пример:'''&lt;br /&gt;
Дана функция в ДНФ &amp;lt;tex&amp;gt; f(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 &amp;lt;/tex&amp;gt;, построим полином Жегалкина.&lt;br /&gt;
&lt;br /&gt;
Запишем функцию так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(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&amp;lt;/tex&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
Сгруппируем слагаемые и воспользуемся преобразованием &amp;lt;tex&amp;gt;(1)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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 x_1 x_2 x_2)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Воспользуемся свойствами конъюнкции &amp;lt;tex&amp;gt;A \land A = A&amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt;\neg A \land A = 0&amp;lt;/tex&amp;gt;, а также тем, что &amp;lt;tex&amp;gt;A \oplus A = 0&amp;lt;/tex&amp;gt;, и упростим выражение:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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) + x_2 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ещё раз воспользуемся преобразованием &amp;lt;tex&amp;gt;(1)&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus (x_1 x_2 \neg x_3  x_4 \oplus \neg x_1 \neg x_4)x_2&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобку по алгебраическим правилам:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus x_1 x_2 x_2 \neg x_3  x_4 \oplus \neg x_1 x_2 \neg x_4 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Снова воспользуемся свойствами конъюнкции и исключающего ИЛИ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;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_2 \oplus \neg x_1 x_2 \neg x_4 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Заменим отрицание на прибавление &amp;lt;tex&amp;gt;1&amp;lt;/tex&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4) = x_1 x_2 (x_3 \oplus 1) x_4 \oplus (x_1 \oplus 1) (x_4 \oplus 1) \oplus x_2 \oplus (x_1 \oplus 1) x_2 (x_4 \oplus 1)&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раскроем скобки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4) = x_1 x_2 x_3 x_4 \oplus x_1 x_2 x_4 \oplus 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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Выкинем парные слагаемые и получим окончательную формулу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;f(x_1,x_2,x_3,x_4) = x_1 x_2 x_3 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&amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Преобразование Мёбиуса ===&lt;br /&gt;
Пусть задана [[Определение булевой функции|булева функция]] &amp;lt;tex&amp;gt;f: B^n \rightarrow B, \;\; B=\{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Любая булева функция представима в виде полинома Жегалкина, притом единственным образом.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; i = (i _1, i _2, .. i_n), \;\; i_k \in \{0 ; 1\}&amp;lt;/tex&amp;gt;, и введем обозначение &amp;lt;tex&amp;gt; x ^{i_k} \sim \left\{\begin{matrix} x, \;\; i_k=1&lt;br /&gt;
\\ 1, \;\; i_k=0&lt;br /&gt;
\end{matrix}\right. &amp;lt;/tex&amp;gt; &amp;amp;nbsp;.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Тогда полином Жегалкина можно записать как:&lt;br /&gt;
&amp;lt;tex&amp;gt; f(x) = \bigoplus\limits_i \alpha_i \cdot x_1^{i_1} \cdot x_2^{i_2} \cdot ... \cdot x_n^{i_n}&amp;lt;/tex&amp;gt;, где   &amp;lt;tex&amp;gt;\alpha_i \in  \{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Множество коэффициентов &amp;lt;tex&amp;gt;\{\alpha _i\}&amp;lt;/tex&amp;gt; можно рассматривать как функцию &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, заданной на множестве индексов &amp;lt;tex&amp;gt; i \in \overline{1..n}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\alpha: i \mapsto \alpha_i&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, функцию &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; можно записать и следующим образом: &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_i \alpha_i \cdot [x_1 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_1] \cdot [x_2 , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_2] \cdot ... \cdot [x_n , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_n]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тут запись &amp;lt;tex&amp;gt;[x_k , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \; i_k]&amp;lt;/tex&amp;gt; означает, что элелемент &amp;lt;tex&amp;gt; x_k &amp;lt;/tex&amp;gt; присутствует в соответствующем члене полинома только если &amp;lt;tex&amp;gt; i_k = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда если для какого-то &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;i \succ x&amp;lt;/tex&amp;gt; ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.&lt;br /&gt;
Отсюда ясно, что &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i \preceq x} \alpha_i &amp;lt;/tex&amp;gt;. &amp;amp;nbsp; &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;&lt;br /&gt;
Найдем отображение &amp;lt;tex&amp;gt; f \mapsto \alpha&amp;lt;/tex&amp;gt; (То есть такое, которое по заданной функции вычисляет значения всех коэффициентов).&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Пусть задана функция &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;. Тогда функцию &amp;lt;tex&amp;gt; \alpha_x &amp;lt;/tex&amp;gt; можно найти по формуле: &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt; &amp;amp;nbsp;&amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
||proof=Докажем при помощи индукции по количеству единиц в векторе &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; ( иначе говоря, по сумме &amp;lt;tex&amp;gt;x_1+x_2+...+x_n&amp;lt;/tex&amp;gt; ) и для удобства обозначим это количество единиц(сумму) &amp;lt;tex&amp;gt; wt(x) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''1)''' База: если &amp;lt;tex&amp;gt; x = 0 &amp;lt;/tex&amp;gt;, то, очевидно &amp;lt;tex&amp;gt; f(0) = \alpha_0 &amp;lt;/tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''2)''' Пускай теорема справедлива для всех сумм &amp;lt;tex&amp;gt;wt(x) &amp;lt; k&amp;lt;/tex&amp;gt;. Покажем, что в таком случае она верна и для &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt;. По &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;, а далее по предположению индукции видим: &amp;lt;tex&amp;gt; f(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&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сумму &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ]  &amp;lt;/tex&amp;gt;. Каждый элемент &amp;lt;tex&amp;gt; f(j) &amp;lt;/tex&amp;gt; содержится в ней, только если &amp;lt;tex&amp;gt; j \preceq x &amp;lt;/tex&amp;gt;, и для фиксированных &amp;lt;tex&amp;gt; j, x &amp;lt;/tex&amp;gt; элемент &amp;lt;tex&amp;gt; f(j)&amp;lt;/tex&amp;gt; встречается ровно столько раз, сколько существует &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; , таких, что &amp;lt;tex&amp;gt; j \prec i \preceq x&amp;lt;/tex&amp;gt;. Несложно увидеть, что таких &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt; 2^{wt(x)-wt(j)}-1 &amp;lt;/tex&amp;gt;, то есть нечетное количество раз. Тогда &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ] =  \bigoplus \limits_{j\prec  x} f(j) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Но тогда &amp;lt;tex&amp;gt; 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)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
То есть при &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt; формула также выполняется, значит при любых &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;  выполняется &amp;lt;tex&amp;gt;\alpha_x = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
Отображение &amp;lt;tex&amp;gt; f \rightarrow \alpha&amp;lt;/tex&amp;gt; также называется преобразованием Мёбиуса.&lt;br /&gt;
&lt;br /&gt;
Видно, что &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; (3) &amp;lt;/tex&amp;gt; — это одно и тоже преобразование. Значит, если применить преобразование Мёбиуса к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. То есть преобразование Мёбиуса обратно самому себе, иными словами, является инволюцией.&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&lt;br /&gt;
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&lt;br /&gt;
* Логачёв О.А, Сальников А.А., Ященко В.В. Булевы фунции в теории кодирования и криптологии — МЦНМО, 2004. - 470с. — ISBN 5-94057-117-4.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Булевы функции]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11183</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11183"/>
				<updated>2011-10-15T02:22:40Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_{0} \oplus a_{1} x_{1} \oplus a_{2}  x_{2} \oplus ... \oplus a_{n}  x_{n} \oplus a_{n+1} x_{1} x_{2} \oplus ... \oplus a_{..n + C _{n}^2}  x_{n-1} x_{n} \oplus ... \oplus a_{2^n-1} x_{1} x_{2} .. x_{n}  &amp;lt;/tex&amp;gt;&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
== Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1}\ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
=== По таблице истинности ===&lt;br /&gt;
Пусть для функции &amp;lt;tex&amp;gt;f(x_{1},x_{2},..,x_{n})&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты. Можно показать, что за каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
=== Преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]] ===&lt;br /&gt;
Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то сначала убираем дизъюнкцию, используя при этом правило Де-Моргана, а все отрицания заменяем прибавлением единицы. После этого раскрываем скобки по обычным правилам, при этом учитываем, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому.&lt;br /&gt;
&lt;br /&gt;
=== Преобразование Мёбиуса ===&lt;br /&gt;
Пусть задана [[Определение булевой функции|булева функция]] &amp;lt;tex&amp;gt;f: B^n \rightarrow B, \;\; B=\{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Любая булева функция представима в виде полинома Жегалкина, притом единственным образом.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; i = (i _{1}, i _{2}, .. i _{n}), \;\; i _{k} \in \{0 ; 1\}&amp;lt;/tex&amp;gt;, и введем обозначение &amp;lt;tex&amp;gt; x ^{i _{k}} \sim \left\{\begin{matrix} x, \;\; i _{k}=1&lt;br /&gt;
\\ 1, \;\; i _{k}=0&lt;br /&gt;
\end{matrix}\right. &amp;lt;/tex&amp;gt; &amp;amp;nbsp;.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Тогда полином Жегалкина можно записать как:&lt;br /&gt;
&amp;lt;tex&amp;gt; f(x) = \bigoplus\limits_{i} \alpha _{i} \cdot x_{1}^{i_{1}} \cdot x_{2}^{i_{2}} \cdot ... \cdot x_{n}^{i_{n}}&amp;lt;/tex&amp;gt;, где   &amp;lt;tex&amp;gt;\alpha _{i} \in  \{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Множество коэффициентов &amp;lt;tex&amp;gt;\{\alpha _{i}\}&amp;lt;/tex&amp;gt; можно рассматривать как функцию &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, заданной на множестве индексов &amp;lt;tex&amp;gt; i \in \overline{1..n}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\alpha: i \mapsto \alpha_{i}&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, функцию &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; можно записать и следующим образом: &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i} \alpha _{i} \cdot [x _{1} , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i _{1}] \cdot [x _{2} , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i _{2}] \cdot ... \cdot [x _{n} , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_{n}]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тут запись &amp;lt;tex&amp;gt;[x _{k} , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \; i _{k}]&amp;lt;/tex&amp;gt; означает, что элелемент &amp;lt;tex&amp;gt; x_{k} &amp;lt;/tex&amp;gt; присутствует в соответствующем члене полинома только если &amp;lt;tex&amp;gt; i_{k} = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда если для какого-то &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;i \succ x&amp;lt;/tex&amp;gt; ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.&lt;br /&gt;
Отсюда ясно, что &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i \preceq x} \alpha _{i} &amp;lt;/tex&amp;gt;. &amp;amp;nbsp; &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;&lt;br /&gt;
Найдем отображение &amp;lt;tex&amp;gt; f \mapsto \alpha&amp;lt;/tex&amp;gt; (То есть такое, которое по заданной функции вычисляет значения всех коэффициентов).&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Пусть задана функция &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;. Тогда функцию &amp;lt;tex&amp;gt; \alpha_{x} &amp;lt;/tex&amp;gt; можно найти по формуле: &amp;lt;tex&amp;gt;\alpha _{x} = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
||proof=Докажем при помощи индукции по количеству единиц в векторе &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; ( иначе говоря, по сумме &amp;lt;tex&amp;gt;x_{1}+x_{2}+...+x_{n}&amp;lt;/tex&amp;gt; ) и для удобства обозначим это количество единиц(сумму) &amp;lt;tex&amp;gt; wt(x) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
'''1)''' База: если &amp;lt;tex&amp;gt; x = 0 &amp;lt;/tex&amp;gt;, то, очевидно &amp;lt;tex&amp;gt; f(0) = \alpha _{0} &amp;lt;/tex&amp;gt;&lt;br /&gt;
'''2)''' Пускай теорема справедлива для всех сумм &amp;lt;tex&amp;gt;wt(x) &amp;lt; k&amp;lt;/tex&amp;gt;. Покажем, что в таком случае она верна и для &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt;. По &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;, а далее по предположению индукции видим: &amp;lt;tex&amp;gt; f(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}&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сумму &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ]  &amp;lt;/tex&amp;gt;. Каждый элемент &amp;lt;tex&amp;gt; f(j) &amp;lt;/tex&amp;gt; содержится в ней, только если &amp;lt;tex&amp;gt; j \preceq x &amp;lt;/tex&amp;gt;, и для фиксированных &amp;lt;tex&amp;gt; j, x &amp;lt;/tex&amp;gt; элемент &amp;lt;tex&amp;gt; f(j)&amp;lt;/tex&amp;gt; встречается ровно столько раз, сколько существует &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; , таких, что &amp;lt;tex&amp;gt; j \prec i \preceq x&amp;lt;/tex&amp;gt;. Несложно увидеть, что таких &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt; 2^{wt(x)-wt(j)}-1 &amp;lt;/tex&amp;gt;, то есть нечетное количество раз. Тогда &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ] =  \bigoplus \limits_{j\prec  x} f(j) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Но тогда &amp;lt;tex&amp;gt; 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)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
То есть при &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt; формула также выполняется, значит при любых &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;  выполняется &amp;lt;tex&amp;gt;\alpha _{x} = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
Отображение &amp;lt;tex&amp;gt; f \rightarrow \alpha&amp;lt;/tex&amp;gt; также называется преобразованием Мёбиуса.&lt;br /&gt;
&lt;br /&gt;
Видно, что &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt; — это одно и тоже преобразование. Значит, если применить преобразование Мёбиуса к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. То есть преобразование Мёбиуса обратно самому себе, иными словами, является инволюцией.&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&lt;br /&gt;
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&lt;br /&gt;
* Логачёв О.А, Сальников А.А., Ященко В.В. Булевы фунции в теории кодирования и криптологии — МЦНМО, 2004. - 470с. — ISBN 5-94057-117-4.&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
[[Категория: Булевы функции]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%A6%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%B2_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80&amp;diff=11182</id>
		<title>Участник:Целиков Александр</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%A6%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%B2_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80&amp;diff=11182"/>
				<updated>2011-10-15T01:43:55Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Студент ИТМО, группа 1537.&lt;br /&gt;
Контакты:&lt;br /&gt;
*e-mail: [mailto:tselikov.alexander@gmail.com tselikov.alexander@gmail.com]&lt;br /&gt;
*jabber: sansany4@jaber.ru&lt;br /&gt;
*skype: rumbleblowingaggregate&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%A6%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%B2_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80&amp;diff=11181</id>
		<title>Участник:Целиков Александр</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:%D0%A6%D0%B5%D0%BB%D0%B8%D0%BA%D0%BE%D0%B2_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80&amp;diff=11181"/>
				<updated>2011-10-15T01:42:24Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: коротко о себе&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Студент ИТМО, гр. 1537.&lt;br /&gt;
Контакты:&lt;br /&gt;
*[mailto:tselikov.alexander@gmail.com]&lt;br /&gt;
*jabber: sansany4@jaber.ru&lt;br /&gt;
*skype: rumbleblowingaggregate&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11180</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11180"/>
				<updated>2011-10-15T01:37:54Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: Перенёс статью «Преобразование Мёбиуса»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_{0} \oplus a_{1} x_{1} \oplus a_{2}  x_{2} \oplus ... \oplus a_{n}  x_{n} \oplus a_{n+1} x_{1} x_{2} \oplus ... \oplus a_{..n + C _{n}^2}  x_{n-1} x_{n} \oplus ... \oplus a_{2^n-1} x_{1} x_{2} .. x_{n}  &amp;lt;/tex&amp;gt;&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
== Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1}\ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
=== По таблице истинности ===&lt;br /&gt;
Пусть для функции &amp;lt;tex&amp;gt;f(x_{1},x_{2},..,x_{n})&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты. Можно показать, что за каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
=== Преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]] ===&lt;br /&gt;
Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то сначала убираем дизъюнкцию, используя при этом правило Де-Моргана, а все отрицания заменяем прибавлением единицы. После этого раскрываем скобки по обычным правилам, при этом учитываем, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому.&lt;br /&gt;
&lt;br /&gt;
=== Преобразование Мёбиуса ===&lt;br /&gt;
Пусть задана [[Определение_булевой_функции|булева функция]] &amp;lt;tex&amp;gt;f: B^n \rightarrow B, \;\; B=\{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Любая булева функция представима в виде [[Полином_Жегалкина|полинома Жегалкина]], притом единственным образом.&lt;br /&gt;
&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt; i = (i _{1}, i _{2}, .. i _{n}), \;\; i _{k} \in \{0 ; 1\}&amp;lt;/tex&amp;gt;, и введем обозначение &amp;lt;tex&amp;gt; x ^{i _{k}} \sim \left\{\begin{matrix} x, \;\; i _{k}=1&lt;br /&gt;
\\ 1, \;\; i _{k}=0&lt;br /&gt;
\end{matrix}\right. &amp;lt;/tex&amp;gt; &amp;amp;nbsp;.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Тогда [[Полином_Жегалкина|полином Жегалкина]] можно записать как:&lt;br /&gt;
&amp;lt;tex&amp;gt; f(x) = \bigoplus\limits_{i} \alpha _{i} \cdot x_{1}^{i_{1}} \cdot x_{2}^{i_{2}} \cdot ... \cdot x_{n}^{i_{n}}&amp;lt;/tex&amp;gt;, где   &amp;lt;tex&amp;gt;\alpha _{i} \in  \{ 0; 1 \}&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Множество коэффициентов &amp;lt;tex&amp;gt;\{\alpha _{i}\}&amp;lt;/tex&amp;gt; можно рассматривать как функцию &amp;lt;tex&amp;gt;\alpha&amp;lt;/tex&amp;gt;, заданной на множестве индексов &amp;lt;tex&amp;gt; i \in \overline{1..n}&amp;lt;/tex&amp;gt;, то есть &amp;lt;tex&amp;gt;\alpha: i \mapsto \alpha_{i}&amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Очевидно, функцию &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt; можно записать и следующим образом: &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i} \alpha _{i} \cdot [x _{1} , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i _{1}] \cdot [x _{2} , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i _{2}] \cdot ... \cdot [x _{n} , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \;\; i_{n}]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Тут запись &amp;lt;tex&amp;gt;[x _{k} , \; &amp;lt;/tex&amp;gt; если &amp;lt;tex&amp;gt; \; i _{k}]&amp;lt;/tex&amp;gt; означает, что элелемент &amp;lt;tex&amp;gt; x_{k} &amp;lt;/tex&amp;gt; присутствует в соответствующем члене полинома только если &amp;lt;tex&amp;gt; i_{k} = 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Тогда если для какого-то &amp;lt;tex&amp;gt;x&amp;lt;/tex&amp;gt;, &amp;lt;tex&amp;gt;i \succ x&amp;lt;/tex&amp;gt; ,то в слагаемом будет существовать хотя бы один множитель, равный нулю, и такое слагаемое на сумму не повлияет.&lt;br /&gt;
Отсюда ясно, что &amp;lt;tex&amp;gt; f(x) = \bigoplus \limits_{i \preceq x} \alpha _{i} &amp;lt;/tex&amp;gt;. &amp;amp;nbsp; &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Найдем отображение &amp;lt;tex&amp;gt; f \mapsto \alpha&amp;lt;/tex&amp;gt; (То есть такое, которое по заданной функции вычисляет значения всех коэффциентов).&lt;br /&gt;
&lt;br /&gt;
{{Теорема &lt;br /&gt;
|statement=Пусть задана функция &amp;lt;tex&amp;gt; f &amp;lt;/tex&amp;gt;. Тогда функцию &amp;lt;tex&amp;gt; \alpha_{x} &amp;lt;/tex&amp;gt; можно найти по формуле: &amp;lt;tex&amp;gt;\alpha _{x} = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
||proof=Докажем при помощи индукции по количеству единиц в векторе &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; ( иначе говоря, по сумме &amp;lt;tex&amp;gt;x_{1}+x_{2}+...+x_{n}&amp;lt;/tex&amp;gt; ) и для удобства обозначим это количество единиц(сумму) &amp;lt;tex&amp;gt; wt(x) &amp;lt;/tex&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
'''1)''' База: если &amp;lt;tex&amp;gt; x = 0 &amp;lt;/tex&amp;gt;, то, очевидно &amp;lt;tex&amp;gt; f(0) = \alpha _{0} &amp;lt;/tex&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''2)''' Пускай теорема справедлива для всех сумм &amp;lt;tex&amp;gt;wt(x) &amp;lt; k&amp;lt;/tex&amp;gt;. Покажем, что в таком случае она верна и для &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt;. По &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt;, а далее по предположению индукции видим: &amp;lt;tex&amp;gt; f(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}&amp;lt;/tex&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Рассмотрим сумму &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ]  &amp;lt;/tex&amp;gt;. Каждый элемент &amp;lt;tex&amp;gt; f(j) &amp;lt;/tex&amp;gt; содержится в ней, только если &amp;lt;tex&amp;gt; j \preceq x &amp;lt;/tex&amp;gt;, и для фиксированных &amp;lt;tex&amp;gt; j, x &amp;lt;/tex&amp;gt; элемент &amp;lt;tex&amp;gt; f(j)&amp;lt;/tex&amp;gt; встречается ровно столько раз, сколько существует &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; , таких, что &amp;lt;tex&amp;gt; j \prec i \preceq x&amp;lt;/tex&amp;gt;. Несложно увидеть, что таких &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt; 2^{wt(x)-wt(j)}-1 &amp;lt;/tex&amp;gt;, то есть нечетное количество раз. Тогда &amp;lt;tex&amp;gt; \left [ \bigoplus \limits_{i \prec x} \bigoplus \limits_{j\preceq  i} f(j) \right ] =  \bigoplus \limits_{j\prec  x} f(j) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Но тогда &amp;lt;tex&amp;gt; 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)&amp;lt;/tex&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
То есть при &amp;lt;tex&amp;gt;wt(x) = k&amp;lt;/tex&amp;gt; формула также выполняется, значит при любых &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;  выполняется &amp;lt;tex&amp;gt;\alpha _{x} = \bigoplus \limits_{j\preceq  x} f(j)&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Отображение &amp;lt;tex&amp;gt; f \rightarrow \alpha&amp;lt;/tex&amp;gt; также называется '''преобразованием Мёбиуса'''.&lt;br /&gt;
&lt;br /&gt;
Видно, что &amp;lt;tex&amp;gt; (1) &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; (2) &amp;lt;/tex&amp;gt; — это одно и тоже преобразование. Значит, если применить '''преобразование Мёбиуса''' к функции, а затем вновь применить то же преобразование к получившейся функции, тогда вновь получим исходную функцию &amp;lt;tex&amp;gt;f&amp;lt;/tex&amp;gt;. То есть '''преобразование Мёбиуса''' обратно самому себе, иными словами, является инволюцией.&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&amp;lt;br&amp;gt;&lt;br /&gt;
* Логачёв О.А, Сальников А.А., Ященко В.В. '''Булевы фунции в теории кодирования и криптологии''' — МЦНМО, 2004. - 470с. — ISBN 5-94057-117-4.&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%9C%D1%91%D0%B1%D0%B8%D1%83%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BA%D0%BE%D1%8D%D1%84%D1%84%D0%B8%D1%86%D0%B8%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%BF%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC%D0%B0_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11179</id>
		<title>Преобразование Мёбиуса для получения коэффициентов полинома Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%9C%D1%91%D0%B1%D0%B8%D1%83%D1%81%D0%B0_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BA%D0%BE%D1%8D%D1%84%D1%84%D0%B8%D1%86%D0%B8%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D0%BF%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC%D0%B0_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=11179"/>
				<updated>2011-10-15T01:36:39Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: Перенёс в статью «Полином Жегалкина»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Полином Жегалкина#Преобразование Мёбиуса]]&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=10934</id>
		<title>Полином Жегалкина</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D0%B8%D0%BD%D0%BE%D0%BC_%D0%96%D0%B5%D0%B3%D0%B0%D0%BB%D0%BA%D0%B8%D0%BD%D0%B0&amp;diff=10934"/>
				<updated>2011-10-08T00:46:24Z</updated>
		
		<summary type="html">&lt;p&gt;Целиков Александр: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Полином Жегалкина''' — полином с коэффициентами вида 0 и 1, где в качестве произведения берётся конъюнкция, а в качестве сложения исключающее или. Полином был предложен в 1927 году И. И. Жегалкиным в качестве удобного средства для представления [[Определение булевой функции|функций булевой логики]]. Полином Жегалкина имеет следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tex&amp;gt;P = a_{0} \oplus a_{1} x_{1} \oplus a_{2}  x_{2} \oplus ... \oplus a_{n}  x_{n} \oplus a_{n+1} x_{1} x_{2} \oplus ... \oplus a_{..n + C _{n}^2}  x_{n-1} x_{n} \oplus ... \oplus a_{2^n-1} x_{1} x_{2} .. x_{n}  &amp;lt;/tex&amp;gt;&lt;br /&gt;
== Предпосылки ==&lt;br /&gt;
&lt;br /&gt;
По [[Теорема Поста о полной системе функций|теореме Поста]], чтобы система булевых функций была полной, надо, чтобы в ней существовали&lt;br /&gt;
&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 0;&lt;br /&gt;
#Хотя бы одна функция, не сохраняющая 1;&lt;br /&gt;
#Хотя бы одна нелинейная функция;&lt;br /&gt;
#Хотя бы одна немонотонная функция;&lt;br /&gt;
#Хотя бы одна несамодвойственная функция.&lt;br /&gt;
&lt;br /&gt;
Исходя из этого, система функций &amp;lt;tex&amp;gt;\bigl\langle \wedge, \oplus, 1 \bigr\rangle&amp;lt;/tex&amp;gt; является полной, так как в ней:&lt;br /&gt;
 &lt;br /&gt;
#Не сохраняет 0: &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Не сохраняет 1: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Нелинейна: &amp;lt;tex&amp;gt; \wedge &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Немонотонна: &amp;lt;tex&amp;gt; \oplus &amp;lt;/tex&amp;gt;;&lt;br /&gt;
#Несамодвойственны: &amp;lt;tex&amp;gt; \wedge, \oplus, 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
На основе этой системы и строятся полиномы Жегалкина.&lt;br /&gt;
&lt;br /&gt;
== Существование и единственность представления (теорема Жегалкина) ==&lt;br /&gt;
{{Теорема&lt;br /&gt;
|author=Жегалкина&lt;br /&gt;
|statement=&lt;br /&gt;
Каждая булева функция единственным образом представляется в виде полинома Жегалкина.&lt;br /&gt;
|proof=&lt;br /&gt;
Заметим, что различных булевых функций от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; штук. При этом конъюнкций вида &amp;lt;tex&amp;gt;x_{i_1}\ldots x_{i_k}&amp;lt;/tex&amp;gt; существует ровно &amp;lt;tex&amp;gt;2^n&amp;lt;/tex&amp;gt;, так как из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt;  возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует &amp;lt;tex&amp;gt;2^{2^n}&amp;lt;/tex&amp;gt; различных полиномов Жегалкина от &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; переменных.&lt;br /&gt;
&lt;br /&gt;
Теперь достаточно лишь доказать, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Построение полинома Жегалкина ==&lt;br /&gt;
&lt;br /&gt;
Существует несколько способов построения полинома Жегалкина. &lt;br /&gt;
&lt;br /&gt;
Первый способ — по таблице истинности. Пусть для функции &amp;lt;tex&amp;gt;f(x_{1},x_{2},..,x_{n})&amp;lt;/tex&amp;gt;  задана таблица истинности. Запишем сначала данную функцию в виде полинома Жегалкина с неопределёнными коэффициентами. Затем по очереди подставляем всевозможные наборы в порядке увеличения количества единиц и находим коэффициенты. Можно показать, что за каждую подстановку находим только один коэффициент.&lt;br /&gt;
&lt;br /&gt;
Второй способ — преобразование [[Определение_булевой_функции#Дизъюнктивная нормальная форма (ДНФ)|дизъюнктивной нормальной формы]]. Этот способ основан на том, что &amp;lt;tex&amp;gt; X \oplus 1 = \bar{X} &amp;lt;/tex&amp;gt;. Если функция задана в виде ДНФ, то сначала убираем дизъюнкцию, используя при этом правило Де-Моргана, а все отрицания заменяем прибавлением единицы. После этого раскрываем скобки по обычным правилам, при этом учитываем, что четное число одинаковых слагаемых равно нулю (так как &amp;lt;tex&amp;gt; X \oplus X = 0 &amp;lt;/tex&amp;gt;), а нечетное число одинаковых слагаемых равно одному такому слагаемому.&lt;br /&gt;
&lt;br /&gt;
Третий способ — можно использовать [[преобразование Мёбиуса для получения коэффициентов полинома Жегалкина]].&lt;br /&gt;
&lt;br /&gt;
== Литература и источники информации ==&lt;br /&gt;
&lt;br /&gt;
[http://www.stat-mat.com/?p=330 Cтатистика | Математика НГУ]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://ru.wikipedia.org/wiki/Полином_Жегалкина Википедия]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://dvo.sut.ru/libr/himath/w163rabk/index.htm Е.Л Рабкин,  Ю.Б. Фарфоровская, дискретная математика]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Целиков Александр</name></author>	</entry>

	</feed>