АЛГ-LOG-005КарноКуайнревизия 2026-05-04

Упростить логическое выражение

Упрощение булевых функций методами Карно, Куайна-Маккласки. СДНФ, СКНФ. Минимизация для FPGA/ASIC.

⏱ ~30 сек · алгоритм · O(N)
Отчёт · АЛГ-LOG-005|алгоритм / численный метод
calcal.ru / uprostit-logicheskoe-vyrazhenie-onlajn
Загрузка калькулятора…
1953
Карно
2-6
Перем. для Карно
СДНФ/СКНФ
Канонические формы
Espresso
EDA стандарт

Методы упрощения логических выражений

Булевы функции упрощаются для уменьшения числа логических элементов в схеме. Меньше транзисторов = меньше площади чипа, ниже задержки, меньше потребление энергии.

  1. Алгебра Буля: применение законов (де Морган, дистрибутивность, поглощение). Подходит для простых выражений.
  2. Карты Карно: графический метод для 2-6 переменных. Самый популярный в учебной программе.
  3. Куайна-Маккласки: табличный, формализованный. Для большего числа переменных.
  4. Эспрессо: эвристика, используется в EDA-инструментах синтеза FPGA/ASIC.

Карты Карно

Изобретены Морисом Карно в 1953 г. Графический метод для 2-6 переменных. Таблица, где соседние клетки отличаются ровно одним битом (код Грея).

Алгоритм:

  1. Построить таблицу истинности.
  2. Перенести «1» в карту Карно.
  3. Объединить «1» в группы размером 2, 4, 8, 16 (степени 2). Группы могут «оборачиваться» по краям таблицы.
  4. Каждая группа даёт упрощённое слагаемое: переменные, которые меняют значение в группе, исчезают.
  5. Сумма слагаемых = упрощённая функция.

СДНФ vs СКНФ

  • СДНФ (совершенная дизъюнктивная нормальная форма): F = ∨ (минтермы). Каждый минтерм — это «И» всех переменных (с инверсией или без), соответствует «1» в таблице. Пример: F = ABC ∨ ¬ABC ∨ AB¬C.
  • СКНФ (совершенная конъюнктивная нормальная форма): F = ∧ (макстермы). Каждый макстерм — это «ИЛИ» всех переменных, соответствует «0» в таблице. Пример: F = (A∨B∨C) · (A∨B∨¬C) · (A∨¬B∨C).

Любая функция представима в обеих формах. Выбор между ними зависит от количества «0» и «1» в таблице — берут ту форму, которая даёт меньше слагаемых.

Применение упрощения

  • FPGA / ASIC синтез: компилятор переводит описание на VHDL/Verilog в логические элементы. Минимизация уменьшает число LUT (Look-Up Tables) или транзисторов.
  • Управляющие схемы: автоматизация, контроллеры стиральных машин, лифтов.
  • Криптография: упрощение S-box в шифрах (DES, AES).
  • Цифровая обработка сигналов: фильтры, алгоритмы кодирования.
  • SAT-solvers: для решения проблемы выполнимости булевых формул (используются в верификации железа и ПО).
ИСТОЧНИКИ
  1. Karnaugh M. — The Map Method for Synthesis of Combinational Logic Circuits. Maurice Karnaugh. 1953.
  2. Hennessy J.L., Patterson D.A. — Computer Architecture: A Quantitative Approach. Hennessy & Patterson. 2017.
  3. Brayton R., Hachtel G. — Logic Minimization Algorithms (Espresso). Brayton, Hachtel et al.. 1984.
ЧАСТЫЕ ВОПРОСЫ

Часто задаваемые вопросы

Несколько методов: 1) Алгебра Буля — применение законов (де Морган, дистрибутивность, поглощение). 2) Карты Карно — графический метод для 2-6 переменных. 3) Метод Куайна-Маккласки — табличный, для большего числа переменных. 4) Эспрессо — программная эвристика, используется в синтезе FPGA/ASIC.
Графический метод упрощения булевых функций. Изобретён Морисом Карно в 1953 г. Это таблица 2D или 4D, где соседние клетки отличаются ровно одним битом (код Грея). Объединение «1» в группах размером 2, 4, 8, 16 даёт упрощённые слагаемые. Идеально для 2-4 переменных, для 5-6 — сложнее, для 7+ — лучше Куайна-Маккласки.
СДНФ (совершенная дизъюнктивная нормальная форма): дизъюнкция конъюнкций — F = (A·B·C) ∨ (A·¬B·C) ∨ ... Каждый минтерм соответствует «1» в таблице истинности. СКНФ (совершенная конъюнктивная): конъюнкция дизъюнкций — F = (A∨B∨C)·(A∨¬B∨C)·... Каждый макстерм соответствует «0» в таблице. Связь: F_СДНФ = ¬F_СКНФ.
Минимизация булевых функций → меньше логических элементов → 1) Меньше площади чипа (FPGA/ASIC). 2) Меньше задержек распространения. 3) Меньше потребление энергии. 4) Дешевле производство. Например, выражение из 10 термов после минимизации может стать 3 термами, что в 3 раза меньше транзисторов.
Табличный алгоритм минимизации, формализующий карты Карно. Шаги: 1) Записать минтермы (или макстермы). 2) Группировать по числу единиц. 3) Объединять пары, отличающиеся 1 битом. 4) Повторять до неупрощаемых импликант. 5) Найти существенные импликанты. 6) Покрыть все минтермы. Сложность экспоненциальная, но детерминированная.
Эвристический алгоритм минимизации, разработан в Беркли в 1980-х. Используется в Synopsys Design Compiler, Cadence Genus и других EDA-инструментах для синтеза FPGA и ASIC. Работает с десятками и сотнями переменных за секунды (там где Куайна-Маккласки бесполезен из-за экспоненциальной сложности). Не всегда находит абсолютный минимум, но очень близок.
Лиана Арифметова
АВТОРverifiedред. calcal.ru

Лиана Арифметова

Создатель и главный редактор

Миссия: демократизировать сложные расчёты. Превратить страх перед числами в ясность и контроль. Девиз: «Любая повторяющаяся задача заслуживает своего калькулятора».

Mathematical Engineering · МФТИ · редактирует каталог с 2012 года

Был ли этот калькулятор полезен?

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

Инструмент справочный — не заменяет эксперта

Только для информационных целей. Все расчёты, результаты и данные, предоставляемые инструментом, носят исключительно ознакомительный и справочный характер. Они не являются профессиональной консультацией — медицинской, юридической, финансовой, инженерной или иной.

Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.

Профессиональные решения — медицинские, финансовые, инженерные — должны приниматься только после консультации с квалифицированным специалистом. Не используйте автоматический расчёт как единственное основание для важных решений.

Ограничение ответственности. Авторы и разработчики сервиса не несут ответственности за прямой или косвенный ущерб, возникший из-за использования данных расчётов. Пользователь принимает на себя всю ответственность за интерпретацию результатов.