Как найти полином Жегалкина: решение по шагам
Дано: булева функция задана вектором значений 10011110, наборы идут в порядке 000, 001, 010, ..., 111. Найти: полином Жегалкина функции и ответ на вопрос, линейна ли она.
Полином Жегалкина - это запись функции через сложение по модулю два и конъюнкцию, без отрицаний и дизъюнкций. Считать его удобнее всего треугольником Паскаля: под вектором значений выстраиваются строки поразрядных сумм по модулю два, а коэффициенты снимаются с левого края готового треугольника. Ответ: , степень полинома равна 3, функция нелинейна. Калькулятор сверху строит тот же треугольник для любого вектора, а ниже каждый шаг разобран руками.
Решение по шагам
Шаг 1. Раскладываем вектор по наборам. Переменных три, поэтому наборов , и разряды вектора читаются сверху вниз в порядке двоичных чисел: нулевой разряд отвечает набору 000, последний - набору 111. Старший бит номера набора - это переменная , младший - .
| № | x y z | f |
|---|---|---|
| 0 | 0 0 0 | 1 |
| 1 | 0 0 1 | 0 |
| 2 | 0 1 0 | 0 |
| 3 | 0 1 1 | 1 |
| 4 | 1 0 0 | 1 |
| 5 | 1 0 1 | 1 |
| 6 | 1 1 0 | 1 |
| 7 | 1 1 1 | 0 |
Если функция дана не вектором, а таблицей или формулой, сначала получают именно этот столбец значений: порядок заполнения наборов подробно разобран в задаче как построить таблицу истинности.
Шаг 2. Строим треугольник Паскаля. Верхняя строка треугольника - сам вектор значений. Каждая следующая строка получается из предыдущей поразрядным сложением соседей по модулю два: берём первый и второй элементы, складываем, потом второй и третий, и так до конца. Строка при этом становится короче на один элемент, поэтому через восемь шагов от вектора остаётся одно число.
| Строка | Элементы | Коэффициент | Моном |
|---|---|---|---|
| 0 | 1 0 0 1 1 1 1 0 | 1 | |
| 1 | 1 0 1 0 0 0 1 | 1 | |
| 2 | 1 1 1 0 0 1 | 1 | |
| 3 | 0 0 1 0 1 | 0 | |
| 4 | 0 1 1 1 | 0 | |
| 5 | 1 0 0 | 1 | |
| 6 | 1 0 | 1 | |
| 7 | 1 | 1 |
Проверять себя тут легко: сложение по модулю два - это «равно нулю, если цифры одинаковые, и единице, если разные». Первая строка треугольника, например, начинается с , потом идёт , затем .
Шаг 3. Сопоставляем коэффициентам мономы. Коэффициенты стоят в левом столбце, их читают сверху вниз. Номер строки, записанный в двоичном виде, прямо указывает состав монома: единичные разряды номера - это переменные, которые входят в слагаемое. Строка 5 в двоичной записи даёт 101, то есть единицы стоят на местах и , и коэффициент этой строки относится к моному . Нулевая строка не содержит ни одной единицы, значит её коэффициент - свободный член.
Шаг 4. Собираем полином. В левом столбце единицы оказались в строках 0, 1, 2, 5, 6 и 7, а нули - в строках 3 и 4. Значит, мономы и в ответ не входят, а остальные шесть складываются по модулю два:
Порядок слагаемых произволен: сложение по модулю два коммутативно, поэтому запись обычно упорядочивают по возрастанию степени монома, как здесь.
Шаг 5. Проверяем подстановкой. Полином обязан давать исходный вектор, и проверка занимает минуту, если подставлять «крайние» наборы. На наборе 000 все мономы с переменными обнуляются и остаётся свободный член: , что совпадает с первым разрядом вектора. На наборе 111 работают все шесть слагаемых: , и последний разряд вектора тоже нулевой. Для надёжности берут ещё один набор со смешанными значениями, скажем 101: остаются слагаемые , и , их сумма , а в векторе на пятой позиции стоит единица.
Шаг 6. Отвечаем про линейность. Функция линейна тогда и только тогда, когда в её полиноме Жегалкина нет мономов длиннее одной переменной. Здесь есть , и , поэтому условие нарушено. Степень полинома - это длина самого длинного монома, у нас это , то есть степень 3.
Ответ: ; степень полинома 3, функция нелинейна и классу не принадлежит.
Формула и откуда она берётся
Полином Жегалкина от переменных - это сумма по модулю два произведений переменных без повторений, взятых с коэффициентами 0 или 1:
Существование такой записи доказывается конструктивно. Любую функцию можно записать формулой через отрицание, конъюнкцию и дизъюнкцию, а эти операции выражаются через и : и . Подставляем замены, раскрываем скобки и сокращаем одинаковые слагаемые по правилам и - остаётся полином нужного вида.
Единственность следует из подсчёта. Мономов ровно (каждое подмножество переменных даёт свой), коэффициенты независимы, значит различных полиномов - ровно столько же, сколько булевых функций от переменных. Отображение «полином - функция» сюръективно, а множества равномощны, поэтому оно взаимно однозначно: у каждой функции полином Жегалкина ровно один.
Коэффициент при мономе выражается напрямую через значения функции. Обозначим набор индексов монома через маску ; тогда
то есть складываются значения функции на всех наборах, которые «вкладываются» в по единицам. Это преобразование Мёбиуса, и треугольник Паскаля вычисляет именно его. Элемент строки на нулевой позиции равен сумме , взятых с биномиальными коэффициентами , а по теореме Люка нечётен ровно тогда, когда - подмаска . Отсюда и совпадение: левый край строки есть коэффициент при мономе с номером .
Метод неопределённых коэффициентов
Второй школьный способ не требует треугольника. Записываем полином общего вида с восемью неизвестными коэффициентами и подставляем наборы по возрастанию числа единиц, начиная с нулевого:
Набор 000 обнуляет всё, кроме свободного члена, поэтому сразу. На наборах с одной единицей выживают свободный член и один линейный моном: из получаем , то есть ; аналогично даёт , а даёт .
Наборы с двумя единицами добавляют по одному парному моному к уже известным величинам. Из следует , подставляем найденное и получаем . Точно так же приводит к , а - к . Последний набор 111 включает все слагаемые: сумма известных семи коэффициентов равна 1, а значение функции равно 0, поэтому .
Итог совпадает с треугольником: . Метод медленнее, но нагляднее и полезен, когда нужно найти всего один-два коэффициента, а не весь полином. Порядок подстановки менять нельзя: каждый следующий набор обязан добавлять ровно одно новое неизвестное, иначе уравнение не решится в одно действие.
Если функция задана формулой, а не вектором
Когда дана готовая формула, таблицу можно не строить: достаточно подставить тождества , и , после чего раскрыть скобки. Работать при этом нужно по обычным правилам алгебры, но с двумя поправками: одинаковые слагаемые уничтожаются парами, а степень переменной всегда падает до первой.
Возьмём импликацию как пример. Замена даёт , а дизъюнкция раскрывается в . Слагаемые и сокращаются, остаётся - этот вариант есть среди чипов калькулятора сверху, и треугольник даёт для него тот же ответ. Путь через формулу короче, если исходная запись компактна, и заметно длиннее, если в ней много вложенных дизъюнкций: тогда проще выписать вектор значений и вернуться к треугольнику.
Тот же приём работает и от совершенной дизъюнктивной нормальной формы. Конъюнкции в СДНФ попарно ортогональны, то есть одновременно истинными быть не могут, поэтому дизъюнкцию между ними разрешено заменить на сложение по модулю два без поправочных слагаемых. Дальше остаётся раскрыть отрицания внутри конъюнкций и привести подобные.
Частые ошибки
- Путают порядок переменных в наборе. Если вектор выписан для порядка , треугольник даст верные коэффициенты, но отнесёт их к другим мономам. Порядок фиксируют один раз и держат до конца задачи.
- Складывают соседей обычным сложением. В строке треугольника допустимы только 0 и 1: результат равен нулю, а не двойке.
- Снимают коэффициенты с правого края или с последней строки. Ответ даёт только левый столбец, прочитанный сверху вниз.
- Теряют степень при раскрытии скобок. Произведение равно , а не : в булевой алгебре квадратов не бывает.
- Забывают сократить повторяющиеся слагаемые. Пара одинаковых мономов даёт ноль, и если её не убрать, полином перестанет быть единственным представлением функции.
- Считают линейной функцию с большим числом слагаемых. Линейность определяется длиной мономов, а не их количеством: линейна, а короткое уже нет.
FAQ
Чем полином Жегалкина отличается от СДНФ? СДНФ собирается из конъюнкций, соединённых дизъюнкцией, и содержит отрицания переменных. Полином Жегалкина использует только конъюнкцию и сложение по модулю два, отрицаний в нём нет вообще. При этом обе формы однозначны: у каждой функции, кроме тождественного нуля, своя СДНФ и свой полином.
Можно ли получить полином Жегалкина после упрощения формулы? Да, и это часто быстрее: чем короче исходная запись, тем меньше скобок придётся раскрывать. Сначала сводят формулу к компактному виду, как в разборе про упрощение логических выражений, и только потом подставляют тождества для отрицания и дизъюнкции.
Зачем вообще проверять линейность? Линейные функции образуют замкнутый класс - один из пяти предполных классов в критерии Поста. Система функций полна тогда и только тогда, когда она не вкладывается целиком ни в один из этих классов, и полином Жегалкина отвечает на вопрос про мгновенно. Подробный разбор самих классов есть в материале про классы Поста.
Что делать с функцией от четырёх и более переменных? Схема не меняется, растёт только размер: вектор длины 16 даёт треугольник из шестнадцати строк, а мономов становится 16. Руками это ещё считается, а начиная с пяти переменных удобнее быстрое преобразование Мёбиуса, которое делает то же самое за операций вместо квадратичного перебора.
Коротко
- Выписать вектор значений функции в порядке наборов 000, 001, ..., 111; для трёх переменных это восемь разрядов.
- Построить треугольник Паскаля: каждая следующая строка - поразрядные суммы соседей по модулю два, длина строки уменьшается на единицу.
- Снять коэффициенты с левого столбца сверху вниз; номер строки в двоичной записи указывает, какие переменные входят в моном.
- Для вектора 10011110 получается ; проверка подстановкой наборов 000, 101 и 111 даёт 1, 1 и 0, как в исходном векторе.
- Степень полинома равна 3, мономы , и длиннее одной переменной, поэтому функция нелинейна и в класс не входит.
Похожие задачи
Как найти двойственную функцию: решение по шагам
Как найти двойственную функцию булевой алгебры: определение через отрицание аргументов и результата, вектор значений наоборот, замена операций в формуле и проверка на самодвойственность.
Дискретная математикаКак составить СКНФ по таблице: пошаговое решение
СКНФ по таблице истинности: разбор задачи с числами. Строки с нулём дают макстермы, отрицание ставится на единицах, ответ проверяется подстановкой. Внутри калькулятор и сравнение с СДНФ.
Дискретная математикаКак найти матрицу инцидентности графа: пошаговое решение
Как найти матрицу инцидентности графа: строки вершины, столбцы рёбра, пошаговый разбор примера на 5 вершинах и 6 рёбрах, знаки для орграфа, проверка по степеням вершин и связь с матрицей смежности.
Дискретная математикаКак найти мощность множества: пошаговое решение
Как найти мощность множества: разбор задачи о 30 студентах по формуле включений исключений, мощность булеана 2 в степени n, счётные и континуальные множества, частые ошибки.
Дискретная математикаКак построить карту Карно: решение по шагам
Как построить карту Карно на четыре переменные: разметка осей кодом Грея, перенос единиц из таблицы истинности, склейка соседних клеток в группы и запись МДНФ с проверкой.
Дискретная математикаКак разложить бином Ньютона: формула и разбор примера
Разбираем, как разложить бином Ньютона: общий член, биномиальные коэффициенты, пошаговое раскрытие выражения в шестой степени, поиск члена без x, проверка и частые ошибки.