Построение логической схемы по выражению: алгоритм
Логическая схема, или схема из логических элементов, - это способ показать логическое выражение не формулой, а набором гейтов И, ИЛИ и НЕ, соединённых проводами. Задача «построить схему по выражению» встречается в информатике постоянно: от школьных задач ОГЭ до курсов цифровой схемотехники. Сложность в том, что схему нельзя рисовать как попало слева направо, - гейты нужно собирать строго в порядке приоритета операций, иначе провода перепутаются, а результат схемы разойдётся с исходной формулой. Ниже разберём, из каких элементов состоит схема, как приоритет операций задаёт порядок сборки, и где студенты чаще всего ошибаются. Чтобы сразу увидеть процесс сборки, покрути калькулятор ниже: он строит схему по выбранному выражению шаг за шагом, гейт за гейтом.
Из чего состоит логическая схема
В курсах информатики и по ГОСТ 2.743-91 логические элементы обозначаются не привычными по формулам символами , , , а короткими значками внутри прямоугольника:
- & (конъюнктор) - элемент И, на выходе 1 только если на всех входах 1;
- 1 (дизъюнктор) - элемент ИЛИ, на выходе 1, если хотя бы на одном входе 1;
- 1 с кружком на выходе (инвертор) - элемент НЕ, меняет значение входа на противоположное.
Здесь и кроется главная ловушка: у элемента НЕ внутри прямоугольника пишут ту же цифру 1, что и у ИЛИ. Единственное графическое отличие - маленький кружок-инверсия на выходной линии. Если его не заметить, инвертор легко спутать с дизъюнктором, а это меняет всю логику схемы. Поэтому при разборе готовой схемы первым делом ищут именно кружки на проводах, а не только надписи внутри прямоугольников.
Приоритет операций как порядок сборки
Формула и схема связаны напрямую: приоритет логических операций (отрицание сильнее конъюнкции, конъюнкция сильнее дизъюнкции) задаёт ровно тот порядок, в котором нужно рисовать гейты. Сборка идёт снизу вверх по дереву выражения:
- Сначала строятся элементы, которые берут на вход только исходные переменные, - это операции с самым высоким приоритетом в своей части выражения.
- Затем строятся элементы, которые берут на вход выход уже собранных гейтов.
- Так продолжается, пока не будет собран последний гейт, - его выход и есть результат всего выражения F.
Возьмём выражение . Внутри него нет вложенных скобок, поэтому первый шаг - сразу два независимых гейта: конъюнктор для и инвертор для . Оба они не зависят друг от друга, поэтому их можно рисовать в любом порядке между собой, но обязательно раньше финального элемента. Второй шаг - дизъюнктор, который объединяет выходы этих двух гейтов и выдаёт F. Всего два шага сборки и три элемента: это ровно то, что показывает калькулятор выше на первом пресете.
Как схема вычисляет значение выражения
Когда схема полностью собрана, она работает как калькулятор: подставляем значения на входы, и сигнал бежит по проводам через гейты к выходу. У каждого провода в любой момент есть конкретное значение - 0 или 1, - а не абстрактная переменная, и именно это значение красят зелёным (1) или красным (0) на калькуляторе выше. Такой пошаговый просчёт удобно проверять руками: возьмём , , . Конъюнктор получает на входы 1 и 0 и выдаёт 0. Инвертор получает 0 и выдаёт 1. Финальный дизъюнктор получает 0 и 1 и выдаёт итоговое значение F = 1. Ровно эти же числа встают на провода в анимации выше: сигнал последовательно проходит через уже построенные гейты, и результат на выходе совпадает со значением формулы, посчитанным вручную.
Разбор примера со вложенным отрицанием
Второй пресет калькулятора, , показывает более сложный случай: отрицание стоит не у одной переменной, а у целой скобки . Порядок сборки здесь такой:
- Шаг 1: конъюнктор и инвертор - оба берут только исходные переменные.
- Шаг 2: инвертор, который берёт на вход уже готовый выход конъюнктора (это и есть ), и второй конъюнктор, который берёт переменную C и выход инвертора .
- Шаг 3: финальный дизъюнктор объединяет результаты двух веток шага 2 и выдаёт F.
Частая ошибка - попытаться сразу инвертировать переменные A и B по отдельности вместо того, чтобы сначала собрать конъюнктор, а потом инвертировать уже его выход. и - это разные функции (первая равна по правилу де Моргана), и схема для них будет собрана по-разному: во втором случае инверторы стояли бы сразу на входах A и B, а не после конъюнктора.
Как из И, ИЛИ, НЕ собрать исключающее ИЛИ
Базовых элементов И, ИЛИ и НЕ достаточно, чтобы собрать любую логическую функцию, включая те, для которых на схемах иногда рисуют отдельный значок, например исключающее ИЛИ (XOR). Третий пресет калькулятора использует тождество : сначала два независимых гейта первого шага - дизъюнктор и два инвертора , ; на втором шаге инверторы объединяются дизъюнктором; на третьем шаге результат первого дизъюнктора и результат второго дизъюнктора соединяются конъюнктором, который и даёт исключающее ИЛИ.

Проверить тождество легко на конкретных значениях: при , дизъюнктор даёт 1, инверторы дают и , их дизъюнкция равна 1, а финальный конъюнктор - ровно то, что даёт исключающее ИЛИ для несовпадающих значений A и B.
Частые ошибки
- Перепутать элемент НЕ с ИЛИ. Внутри обоих прямоугольников пишут цифру 1, а различает их только маленький кружок-инверсия на выходном проводе. Пропустили кружок - прочитали схему неверно.
- Собирать гейты в произвольном порядке, а не по приоритету. Пока не построен гейт для операции с более высоким приоритетом, строить гейт, который берёт его выход, нельзя, - просто не с чего брать сигнал.
- Инвертировать переменные по отдельности вместо целой скобки. - это инвертор ПОСЛЕ конъюнктора, а не два инвертора ДО него на входах A и B.
- Забыть, что один и тот же провод может идти на несколько входов. Если переменная входит в выражение дважды, от неё проводят два провода к разным гейтам, а не дублируют саму переменную.
- Перепутать число входов у гейта. У элементов И и ИЛИ на схеме может быть больше двух входов, если операция применяется сразу к трём и более переменным подряд без скобок; у элемента НЕ всегда ровно один вход.
FAQ
Сколько логических элементов нужно для выражения ? Три: один конъюнктор для , один инвертор для и один дизъюнктор, который объединяет их выходы в F.
Как понять, в каком порядке рисовать гейты по выражению? Смотреть на приоритет операций: отрицание сильнее конъюнкции, конъюнкция сильнее дизъюнкции. Сначала строятся гейты для операций с самым высоким приоритетом в своей части выражения, а гейты, объединяющие их результаты, - позже.
Можно ли собрать любую логическую функцию только из И, ИЛИ и НЕ? Да, набор {И, ИЛИ, НЕ} функционально полон: любую логическую функцию, включая исключающее ИЛИ, импликацию и эквивалентность, можно выразить через эти три элемента.
Коротко
Логическая схема собирается снизу вверх по дереву выражения: сначала гейты, которые берут только исходные переменные, затем гейты, которые берут выходы уже построенных элементов, и так до финального гейта, чей выход равен F. Обозначения по ГОСТ - & для И, 1 для ИЛИ, 1 с кружком-инверсией на выходе для НЕ, и именно кружок отличает инвертор от дизъюнктора. Любое логическое выражение, сколь угодно длинное, раскладывается на такую последовательность шагов, если строго следовать приоритету операций.
Читайте также

Приоритет логических операций в выражении: порядок и правила
Приоритет логических операций: в каком порядке считаются НЕ, И, ИЛИ, импликация и эквивалентность, как расставлять скобки в выражении, строить таблицу истинности и где чаще всего ошибаются студенты.

Отношение эквивалентности: классы и фактор-множество
Отношение эквивалентности: классы и фактор-множество простыми словами. Разбираем рефлексивность, симметричность и транзитивность, разбиение на классы и построение фактор-множества с примерами.

Задача о рюкзаке: динамическое программирование
Разбор задачи о рюкзаке (0/1 Knapsack) методом ДП: таблица dp[i][w], рекуррентный переход, traceback-восстановление набора. Пошаговые примеры и анализ сложности O(n*W).

Число подмножеств множества из n элементов: формула 2^n
Как посчитать число подмножеств множества из n элементов: формула 2^n, откуда она берётся и как найти подмножества заданного размера через биномиальный коэффициент.

Декартово произведение множеств: примеры и формула
Декартово произведение множеств: что такое упорядоченная пара, как перечислить все элементы A x B, найти мощность и применить к координатной плоскости - с разбором типовых задач.

Формула Хартли: как посчитать количество информации
Формула Хартли простыми словами: как посчитать количество информации через число равновероятных исходов, зачем округлять log2(N) вверх и как найти объём сообщения по мощности алфавита.