ЕГЭ · Информатика · Алгебра логики
Законы алгебры логики
Упрощать выражения — это половина успеха в заданиях 2 и 15.
🎯 ЕГЭ информатика: этот урок закрывает задание(я) 2, 15.
- ⚠Неверно строят отрицание импликации: ¬(A→B) = A ∧ ¬B
- ⚠Проверяют не все участки числовой прямой — теряют границы отрезков
Зачем преобразовывать формулы
Задача, которую нельзя решить перебором
Вот формула из настоящего задания 15: ДЕЛ(x, A) → (¬ДЕЛ(x, 21) ∨ ДЕЛ(x, 35)). Сколько строк в её таблице истинности?
Ответ: бесконечно много. Переменная x пробегает все натуральные числа, и таблицу построить нельзя в принципе. Перебор здесь не инструмент, а тупик.
Значит, нужен другой способ работы с формулой — такой, который смотрит на саму запись, а не на значения. Именно это и даёт алгебра логики: набор равенств, по которым громоздкое выражение переписывается в короткое, а короткое читается глазами.
Это ровно то, чем занимается обычная школьная алгебра. Никто не проверяет (a + b)² = a² + 2ab + b² подстановкой чисел — формулу преобразуют по правилам. Разница в том, что в булевой алгебре правил меньше, они проще, и есть несколько таких, аналогов которым в арифметике нет вовсе. Их-то и надо выучить.
Зачем нужны законы: упростить, а не перебирать
Таблицу истинности для пяти переменных придётся строить на 32 строки, для десяти — на 1024. Законы алгебры логики позволяют свернуть формулу и решить задачу без перебора. Это не украшение курса: в заданиях 2 и 15 упрощение экономит большую часть времени.
Переместительный (коммутативный) закон: A∧B = B∧A, A∨B = B∨A. Сочетательный (ассоциативный): (A∧B)∧C = A∧(B∧C), (A∨B)∨C = A∨(B∨C). Распределительный (дистрибутивный): — A∧(B∨C) = (A∧B)∨(A∧C) — привычен, он как раскрытие скобок в алгебре; — A∨(B∧C) = (A∨B)∧(A∨C) — непривычен, второго такого в арифметике нет. Именно он чаще всего нужен.
Законы де Моргана — главный инструмент при работе с отрицанием: — ¬(A∧B) = ¬A∨¬B; — ¬(A∨B) = ¬A∧¬B.
Словами: отрицание меняет операцию на противоположную и переносится внутрь на каждый операнд. «Неверно, что идёт дождь и холодно» означает «нет дождя или не холодно».
Законы идемпотентности: A∧A = A, A∨A = A. Законы поглощения: A∨(A∧B) = A, A∧(A∨B) = A. Законы склеивания: (A∧B)∨(A∧¬B) = A, (A∨B)∧(A∨¬B) = A. Двойное отрицание: ¬¬A = A. Законы противоречия и исключённого третьего: A∧¬A = 0, A∨¬A = 1. Операции с константами: A∧1 = A, A∧0 = 0, A∨1 = 1, A∨0 = A.
Два последних набора — самые полезные на практике: как только в формуле появилось A∧¬A, всё выражение обнуляется, а A∨1 сразу даёт единицу.
| Двойное отрицание | ¬¬A = A |
|---|---|
| Идемпотентность | A∧A=A, A∨A=A |
| Поглощение | A∨(A∧B)=A, A∧(A∨B)=A |
| Дистрибутивность | A∧(B∨C)=(A∧B)∨(A∧C) |
| Законы де Моргана | ¬(A∧B)=¬A∨¬B, ¬(A∨B)=¬A∧¬B |
| Константы | A∧1=A, A∧0=0, A∨1=1, A∨0=A |
| Через равносильности | A→B = ¬A∨B; A≡B = ¬(A⊕B) |
Как доказать закон таблицей
Любое тождество проверяется механически: строим таблицу для левой части, строим для правой, сравниваем столбцы. Если они совпали во всех строках — тождество верно.
Проверим закон де Моргана ¬(A ∨ B) = ¬A ∧ ¬B.
При A=0, B=0: слева ¬(0∨0) = ¬0 = 1; справа 1 ∧ 1 = 1. Совпало.
При A=0, B=1: слева ¬(0∨1) = ¬1 = 0; справа 1 ∧ 0 = 0. Совпало.
При A=1, B=0: слева ¬1 = 0; справа 0 ∧ 1 = 0. Совпало.
При A=1, B=1: слева ¬1 = 0; справа 0 ∧ 0 = 0. Совпало.
Четыре строки — закон доказан.
Почему это работает. В алгебре логики переменных конечное число значений, поэтому полный перебор является строгим доказательством. В обычной алгебре так нельзя: проверить (a+b)² = a² + 2ab + b² на четырёх парах чисел не значит доказать.
Практический вывод для экзамена. Если вы забыли закон или не уверены в преобразовании, проверьте его на таблице из четырёх строк. Это занимает полминуты и полностью снимает вопрос. Особенно полезно для законов поглощения и распределительного закона для дизъюнкции — они самые неинтуитивные.
И обратный приём. Иногда проще не преобразовывать формулу, а подставить конкретные значения и посмотреть, что получится. Если при A=1 выражение становится тождественно истинным независимо от остальных переменных, значит, в нём есть кусок вида A ∨ ….
Де Морган и его два равенства
Огастес де Морган: человек, который всё делал из принципа
Имя, которое вы будете произносить чаще всех в этой теме, принадлежит математику с очень характерной биографией.
Огастес де Морган родился в 1806 году на юге Индии, где служил его отец; в младенчестве он потерял зрение на один глаз. Учился в Кембридже, но кафедры там не получил: занять место преподавателя можно было, только принеся религиозную присягу, а де Морган отказался. В 1828 году, двадцати двух лет, он стал первым профессором математики только что открытого Университетского колледжа Лондона — единственного заведения в Англии, где для этого ничего подписывать не требовалось.
Из этого колледжа он дважды уходил в отставку в знак протеста против решений руководства. Он отказался от почётной учёной степени и от избрания в Королевское общество, считая и то и другое несправедливо устроенным. На похоронах его почти никого не было — он сам просил, чтобы не было.
При этом именно он учил математике Аду Лавлейс — ту самую, которая написала первую программу для аналитической машины Бэббиджа. И именно он в книге «Формальная логика» 1847 года — в том же году, что и Буль свою первую работу, — сформулировал два равенства, которые вы будете применять чаще всех остальных.
Де Морган и Буль переписывались и читали друг друга. Из их двух книг, вышедших одна за другой, и выросла современная математическая логика.

Де Морган по-человечески: что он на самом деле говорит
Формулы ¬(A ∧ B) = ¬A ∨ ¬B и ¬(A ∨ B) = ¬A ∧ ¬B запоминаются быстрее, если один раз понять их смысл.
Возьмём утверждение: «Идёт дождь и холодно». Когда оно ложно? Когда нарушено хотя бы одно из двух условий: либо дождя нет, либо не холодно (или и то и другое). Опровергнуть «и» легко — достаточно опровергнуть одну половину. Это и есть первый закон.
Теперь: «Я поеду на поезде или на автобусе». Когда это ложно? Только если оба варианта отпали: и на поезде не поехал, и на автобусе. Опровергнуть «или» тяжело — нужно опровергнуть всё. Это второй закон.
Отсюда правило в одну строку: отрицание проходит внутрь скобки и по дороге переворачивает связку. И наоборот, если вы «сворачиваете» выражение обратно, связка переворачивается снова.
Где это нужно каждый день. Программист пишет условие if not (age >= 18 and has_passport). Читать такое неудобно, и его переписывают: if age < 18 or not has_passport — «либо несовершеннолетний, либо без паспорта». Это буквально закон де Моргана, применённый вручную. Компилятор делает то же самое автоматически, чтобы схема получилась короче.
И типичная ошибка экзамена. Отрицая скобку, забывают поменять операцию: пишут ¬(A ∧ B) = ¬A ∧ ¬B. Проверьте на наборе A = 1, B = 0: слева ¬(1 ∧ 0) = ¬0 = 1, справа 0 ∧ 1 = 0. Не совпало — значит, равенство неверно. Тридцать секунд проверки спасают всю задачу.
Ловушка де Моргана: отрицая скобку, меняй И на ИЛИ (и наоборот) И отрицай каждый операнд. ¬(A∧B) — это ¬A∨¬B, а не ¬A∧¬B.
Приёмы упрощения
Поглощение и склеивание: как схема худеет
Два закона выглядят похоже и оба экономят больше всего работы.
Поглощение: A ∨ (A ∧ B) = A.
Почему? Если A = 1, то левая часть равна 1 сразу, по первому слагаемому. Если A = 0, то первое слагаемое 0, а второе 0 ∧ B = 0, и вся дизъюнкция равна 0. Итого левая часть всегда равна A, что бы ни делало B. Второе слагаемое лишнее — оно «поглощается».
Парный вариант: A ∧ (A ∨ B) = A. Проверяется так же.
Склеивание: (A ∧ B) ∨ (A ∧ ¬B) = A.
Здесь общий множитель A, а B встречается и с отрицанием, и без. Выносим: A ∧ (B ∨ ¬B) = A ∧ 1 = A. Иначе говоря, если значение B не влияет на результат, переменную B выбрасывают.
Что это значит для железа. Каждое лишнее слагаемое — это лишний вентиль, а вентиль это транзисторы, площадь кристалла, задержка и тепло. Когда вы сворачиваете A ∨ (A ∧ B) в A, вы убираете из схемы элемент И целиком. В процессоре такие сокращения применяются к схемам из тысяч вентилей, и результат считают автоматически — но по тем же законам.
Как их замечать в формуле. Ищите повторяющуюся букву. Если одна и та же переменная стоит и снаружи, и внутри скобки, почти наверняка сработает поглощение. Если два слагаемых отличаются ровно одной буквой — одно с отрицанием, другое без, — сработает склеивание.
Как упрощать формулу: рабочий порядок действий
Порядок, который почти всегда приводит к результату:
Шаг 1. Избавиться от импликаций и эквивалентностей. Заменяем A→B на ¬A∨B, а A≡B на (A∧B)∨(¬A∧¬B) либо на ¬(A⊕B), если так удобнее. После этого в формуле остаются только ¬, ∧, ∨ — и все законы применимы.
Шаг 2. Опустить отрицания вниз по де Моргану, пока каждое отрицание не встанет перед отдельной переменной. Заодно убираем двойные отрицания.
Шаг 3. Раскрыть скобки или, наоборот, вынести общий множитель — смотря что короче. Ориентир: если после раскрытия появляются пары вида X и ¬X, раскрывать стоит, дальше сработают законы противоречия.
Шаг 4. Применить поглощение и склеивание. Ищите фрагменты A∨(A∧B) и (A∧B)∨(A∧¬B) — они схлопываются в один член.
Шаг 5. Проверить результат на одном-двух наборах значений. Подставьте, например, все нули и все единицы в исходную и упрощённую формулы. Если значения совпали, вероятность ошибки резко падает; если нет — ошибка точно есть.
Пример разбора. Упростим ¬(A→B)∨(A∧B).
Шаг 1: A→B заменяем на ¬A∨B, получаем ¬(¬A∨B)∨(A∧B). Шаг 2: по де Моргану ¬(¬A∨B) = A∧¬B. Формула принимает вид (A∧¬B)∨(A∧B). Шаг 4: это в точности закон склеивания — общий A, а второй множитель встречается и с отрицанием, и без. Результат: A.
Проверка: при A=1, B=0 исходная формула равна ¬(1→0)∨(1∧0) = ¬0∨0 = 1, и A=1. При A=0, B=1 исходная равна ¬(0→1)∨(0∧1) = ¬1∨0 = 0, и A=0. Совпало.
Разбор: упрощение выражения по шагам
Упростим (A → B) ∧ (A → ¬B).
Шаг 1. Избавляемся от импликаций: A → B = ¬A ∨ B.
Получаем (¬A ∨ B) ∧ (¬A ∨ ¬B).
Шаг 2. Замечаем общий член ¬A и применяем распределительный закон в обратную сторону:
(¬A ∨ B) ∧ (¬A ∨ ¬B) = ¬A ∨ (B ∧ ¬B).
Шаг 3. По закону противоречия B ∧ ¬B = 0.
Получаем ¬A ∨ 0.
Шаг 4. По закону с константой X ∨ 0 = X.
Итог: ¬A.
Проверка таблицей. При A = 0 исходное выражение: (0→B) ∧ (0→¬B) = 1 ∧ 1 = 1. И ¬A = 1. При A = 1: (1→B) ∧ (1→¬B) = B ∧ ¬B = 0. И ¬A = 0. Совпало на всех наборах.
Смысл результата. Исходная формула утверждает: «из A следует B, и из A следует не-B». Это возможно только если A ложно — иначе получилось бы противоречие. Алгебра пришла к тому же выводу, что и здравый смысл, но механически.
Второй пример. Упростим ¬(¬A ∧ B) ∨ B.
По де Моргану: (A ∨ ¬B) ∨ B.
По сочетательному закону: A ∨ (¬B ∨ B).
По закону исключённого третьего: A ∨ 1.
По закону с константой: 1.
Выражение тождественно истинно: оно верно при любых значениях переменных.
Разбор примера
Упрощение выражения
Упростить ¬(A∨B) ∨ (¬A∧B).
Показать решение по шагам
- 1. К первой скобке применяем де Моргана: ¬(A∨B) = ¬A∧¬B.
- 2. Выражение: (¬A∧¬B) ∨ (¬A∧B).
- 3. Выносим ¬A за скобку (дистрибутивность): ¬A∧(¬B∨B).
- 4. ¬B∨B = 1, значит ¬A∧1 = ¬A.
Ответ: ¬A
Зачем упрощать до таблицы: число строк таблицы растёт как 2ⁿ. При 5 переменных это уже 32 строки. Равносильные преобразования часто сводят выражение к паре переменных или к константе.
Формула, схема и проверка
Как упрощение убирает перебор в задании 15
Посмотрим, что даёт алгебра на настоящем экзаменационном сюжете.
Пусть требуется, чтобы выражение (x ∈ A) → ((x ∈ P) → (x ∈ Q)) было истинно при любом x. Перебирать нечего: x пробегает всю числовую прямую.
Шаг 1. Убираем импликации, начиная с внутренней: (x ∈ P) → (x ∈ Q) превращается в ¬(x ∈ P) ∨ (x ∈ Q).
Внешняя импликация даёт ¬(x ∈ A) ∨ (¬(x ∈ P) ∨ (x ∈ Q)).
Шаг 2. Скобки внутри дизъюнкции не нужны — по сочетательному закону: ¬(x ∈ A) ∨ ¬(x ∈ P) ∨ (x ∈ Q).
Шаг 3. Читаем результат словами. Выражение ложно только тогда, когда все три слагаемых ложны, то есть когда x одновременно принадлежит A, принадлежит P и не принадлежит Q.
Шаг 4. Требование «истинно при любом x» означает, что такого x не существует. Значит, пересечение A и P целиком лежит внутри Q.
Перебор исчез. Осталось геометрическое условие на отрезки, которое проверяется по числовой прямой за минуту. Ровно так устроено большинство заданий 15: алгебра переводит логику в условие на множества, а дальше работает картинка.
Общее правило, которое стоит запомнить. Импликация (x ∈ P) → (x ∈ Q) тождественно истинна тогда и только тогда, когда P ⊆ Q: всякий элемент P лежит в Q. Это не отдельный факт, а прямое следствие того, что импликация ложна лишь при «истинно → ложно».
Функциональная полнота: почему хватает трёх операций
Операций в алгебре логики пять, вентилей в схемотехнике десятки. Но для того, чтобы выразить любую логическую функцию, достаточно трёх: И, ИЛИ, НЕ. Такой набор называют функционально полным.
Почему трёх хватает? Доказательство простое и конструктивное: любую функцию можно задать таблицей истинности, а по таблице всегда строится СДНФ — дизъюнкция, слагаемые которой — конъюнкции переменных с отрицаниями. Больше ничего для неё не нужно. Значит, и схема соберётся только из этих трёх элементов.
Дальше — удивительное. Полон даже один элемент: И-НЕ, то есть ¬(A ∧ B) (его называют штрихом Шеффера). Убедимся:
отрицание — ¬A = ¬(A ∧ A), то есть подаём A на оба входа;
конъюнкция — A ∧ B = ¬(¬(A ∧ B)), то есть И-НЕ и следом ещё один И-НЕ в роли инвертора;
дизъюнкция — по де Моргану A ∨ B = ¬(¬A ∧ ¬B), то есть два инвертора и один И-НЕ.
Всё выражается. То же верно для одного только элемента ИЛИ-НЕ (стрелка Пирса).
Зачем это на производстве. Микросхему проще и дешевле делать, когда на кристалле повторяется одна и та же ячейка. Поэтому целые семейства логики строились на одних вентилях И-НЕ: технология отлажена под единственный элемент, а из него собирается всё остальное.
Чего не хватает по отдельности. Набор {И, ИЛИ} без отрицания не полон: сколько ни соединяй такие элементы, из нулей никогда не получится единица на всех нулевых входах. Инверсия принципиально необходима — это единственная операция, которая умеет «переворачивать».
Совершенные нормальные формы: как формула строится по таблице
Элемент 2.8 кодификатора ЕГЭ формулируется так: «совершенные дизъюнктивные и конъюнктивные нормальные формы, алгоритмы их построения по таблице истинности». Это обратная задача: не «дана формула — постройте таблицу», а «дана таблица — постройте формулу».
- • СДНФ (совершенная дизъюнктивная нормальная форма). Алгоритм:
- • выбрать все строки, где функция равна 1;
- • для каждой такой строки написать конъюнкцию всех переменных: переменная берётся без отрицания, если в строке она равна 1, и с отрицанием, если 0;
- • соединить полученные конъюнкции дизъюнкциями.
Пример. Функция от двух переменных равна 1 в строках (A=0, B=1) и (A=1, B=1).
Первая строка даёт ¬A ∧ B, вторая — A ∧ B.
СДНФ: (¬A ∧ B) ∨ (A ∧ B).
Её, кстати, можно упростить по распределительному закону: (¬A ∨ A) ∧ B = 1 ∧ B = B. Действительно, функция равна единице ровно тогда, когда B = 1.
- • СКНФ (совершенная конъюнктивная нормальная форма). Алгоритм зеркальный:
- • выбрать все строки, где функция равна 0;
- • для каждой написать дизъюнкцию всех переменных: переменная берётся с отрицанием, если в строке она равна 1, и без отрицания, если 0 (всё наоборот по сравнению с СДНФ);
- • соединить дизъюнкции конъюнкциями.
Зачем это нужно. Любая логическая функция, заданная хоть таблицей, хоть словами, может быть записана формулой и, значит, собрана из вентилей И, ИЛИ и НЕ. Это фундаментальный факт: трёх операций достаточно для всего. Именно поэтому процессор, умеющий только И, ИЛИ и НЕ, способен вычислить что угодно.
На экзамене СДНФ прямо не спрашивают, но понимание её алгоритма помогает в задании 2: вы видите, как строка таблицы соответствует набору значений, и наоборот.
Как проверить упрощение программой
Упрощение — место, где ошибаются чаще всего: один потерянный знак отрицания рушит всё решение, а заметить его глазами трудно. Но проверка занимает четыре строки.
``` from itertools import product
for a, b, c in product([0, 1], repeat=3):
left = (not a or b) and (not a or not b) or c
right = (not a) or c
if left != right:
print('расходятся на', a, b, c)```
Если программа ничего не напечатала, равенство верно на всех наборах, то есть верно вообще: переменных конечное число, перебор полный, и это строгое доказательство.
Чем это отличается от обычной алгебры. Проверить (a + b)² = a² + 2ab + b² на восьми парах чисел ничего не докажет: чисел бесконечно много. В булевой алгебре наборов ровно 2ⁿ, поэтому полный перебор является доказательством. Это редкая роскошь, и ею надо пользоваться.
На экзамене. В заданиях 2 и 15 компьютер под рукой. Разумная тактика: упростить формулу на бумаге, а потом проверить своё упрощение перебором. Если расхождение нашлось — вы узнали об этом за десять секунд, а не после объявления баллов.
Разбор примера
Упрощение с проверкой по таблице
Упростить выражение ¬(A ∨ B) ∧ (A ∨ ¬B) и доказать, что упрощение верно.
Показать решение по шагам
- 1. Шаг 1. Первым делом снимаем внешнее отрицание со скобки по закону де Моргана: ¬(A ∨ B) = ¬A ∧ ¬B. Помним правило целиком: отрицание переворачивает связку и отрицает каждое слагаемое.
- 2. Шаг 2. Выражение стало (¬A ∧ ¬B) ∧ (A ∨ ¬B).
- 3. Шаг 3. Раскрываем скобку по распределительному закону: конъюнкция распределяется по дизъюнкции. Получаем (¬A ∧ ¬B ∧ A) ∨ (¬A ∧ ¬B ∧ ¬B).
- 4. Шаг 4. Разбираем первое слагаемое. В нём стоят рядом A и ¬A, а их конъюнкция всегда ложна: A ∧ ¬A = 0. Значит, всё слагаемое равно 0.
- 5. Шаг 5. Разбираем второе слагаемое. В нём ¬B встречается дважды, а по закону идемпотентности ¬B ∧ ¬B = ¬B. Остаётся ¬A ∧ ¬B.
- 6. Шаг 6. Складываем: 0 ∨ (¬A ∧ ¬B) = ¬A ∧ ¬B (дизъюнкция с нулём ничего не меняет).
- 7. Шаг 7. Проверяем таблицей по всем четырём наборам. A = 0, B = 0: исходное ¬(0∨0) ∧ (0∨1) = 1 ∧ 1 = 1; упрощённое 1 ∧ 1 = 1 ✔
- 8. A = 0, B = 1: исходное ¬(0∨1) ∧ (0∨0) = 0 ∧ 0 = 0; упрощённое 1 ∧ 0 = 0 ✔
- 9. A = 1, B = 0: исходное ¬(1∨0) ∧ (1∨1) = 0 ∧ 1 = 0; упрощённое 0 ∧ 1 = 0 ✔
- 10. A = 1, B = 1: исходное ¬(1∨1) ∧ (1∨0) = 0 ∧ 1 = 0; упрощённое 0 ∧ 0 = 0 ✔
- 11. Шаг 8. Совпали все четыре строки — упрощение верное. Ответ: ¬A ∧ ¬B, то есть «ни A, ни B».
- 12. Шаг 9. Полезное наблюдение: результат можно было угадать сразу. Первый множитель требует, чтобы оба были ложны, и этого достаточно — второй множитель при A = 0 и B = 0 истинен автоматически. Привычка спрашивать «а не определяет ли один множитель всё?» экономит половину преобразований.
Ответ: ¬A ∧ ¬B
Разбор примера
Де Морган на длинной формуле
Раскрыть отрицание: ¬((A ∧ ¬B) ∨ (¬C ∧ D)).
Показать решение по шагам
- 1. Шаг 1. Смотрим на верхнюю связку под отрицанием. Это дизъюнкция двух скобок, значит применяем правило: ¬(X ∨ Y) = ¬X ∧ ¬Y. Дизъюнкция превращается в конъюнкцию, а отрицание уходит внутрь к каждой части.
- 2. Шаг 2. Получаем ¬(A ∧ ¬B) ∧ ¬(¬C ∧ D). Отрицания опустились на один уровень.
- 3. Шаг 3. Разбираем первую скобку. Под отрицанием конъюнкция, значит ¬(X ∧ Y) = ¬X ∨ ¬Y: получаем ¬A ∨ ¬¬B. Двойное отрицание снимается: ¬¬B = B. Итого ¬A ∨ B.
- 4. Шаг 4. Разбираем вторую скобку тем же правилом: ¬(¬C ∧ D) = ¬¬C ∨ ¬D = C ∨ ¬D.
- 5. Шаг 5. Собираем всё вместе: (¬A ∨ B) ∧ (C ∨ ¬D).
- 6.
Шаг 6. Проверка программой по всем шестнадцати наборам:
from itertools import product
vse_sovpalo = True for A, B, C, D in product([0, 1], repeat=4): levo = not ((A and not B) or ((not C) and D)) pravo = ((not A) or B) and (C or (not D)) if bool(levo) != bool(pravo): vse_sovpalo = False print('расхождение на', A, B, C, D) print(vse_sovpalo) - 7. Шаг 7. Программа печатает
True— расхождений нет ни на одном из шестнадцати наборов, значит преобразование верное ✔ - 8. Шаг 8. Две ошибки, которые здесь делают чаще всего. Первая — поменять связку, но забыть отрицать части: получается ¬(X ∨ Y) = ¬X ∧ Y, и формула ломается. Вторая — снять отрицание со скобки, не переворачивая связку. Проверяйте себя на одном наборе: подставьте A = 1, B = 0, C = 1, D = 0. Исходное: ¬((1 ∧ 1) ∨ (0 ∧ 0)) = ¬1 = 0. Результат: (0 ∨ 0) ∧ (1 ∨ 1) = 0 ∧ 1 = 0 ✔ Одна подстановка ловит обе ошибки.
Ответ: (¬A ∨ B) ∧ (C ∨ ¬D)
Разбор примера
Склеивание: три слагаемых схлопываются в два
Упростить (A ∧ B) ∨ (A ∧ ¬B) ∨ (¬A ∧ B).
Показать решение по шагам
- 1. Шаг 1. Смотрим на первые два слагаемых: они отличаются только знаком B. Выносим общий множитель: (A ∧ B) ∨ (A ∧ ¬B) = A ∧ (B ∨ ¬B).
- 2. Шаг 2. По закону исключённого третьего B ∨ ¬B = 1, а конъюнкция с единицей ничего не меняет: A ∧ 1 = A. Это и называется склеиванием: две конъюнкции, различающиеся одной переменной, склеиваются в одну без неё.
- 3. Шаг 3. Выражение стало A ∨ (¬A ∧ B).
- 4. Шаг 4. Здесь работает ещё одно тождество, которое стоит выучить: A ∨ (¬A ∧ B) = A ∨ B. Доказать его можно распределительным законом: A ∨ (¬A ∧ B) = (A ∨ ¬A) ∧ (A ∨ B) = 1 ∧ (A ∨ B) = A ∨ B.
- 5. Шаг 5. Ответ: A ∨ B. Из трёх конъюнкций осталась одна дизъюнкция — для схемы это означает два входа вместо шести и один вентиль вместо четырёх.
- 6. Шаг 6. Проверка по всем четырём наборам. A = 0, B = 0: исходное 0 ∨ 0 ∨ 0 = 0, упрощённое 0 ✔ A = 0, B = 1: исходное 0 ∨ 0 ∨ 1 = 1, упрощённое 1 ✔ A = 1, B = 0: исходное 0 ∨ 1 ∨ 0 = 1, упрощённое 1 ✔ A = 1, B = 1: исходное 1 ∨ 0 ∨ 0 = 1, упрощённое 1 ✔
- 7. Шаг 7. Как увидеть склеивание быстро. Выпишите слагаемые столбиком и ищите пары, отличающиеся ровно одной буквой: их всегда можно склеить. В нашем случае такая пара нашлась сразу, а дальше сработало табличное тождество. Именно так из совершенной нормальной формы, полученной по таблице истинности, получают короткую формулу.
Ответ: A ∨ B
Вопрос с развёрнутым ответом
Объясни, зачем в задачах на логику сначала упрощать выражение, а не сразу строить таблицу истинности на все переменные.
Ответить и проверить себя — после бесплатной регистрации.
Задание №2 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Задание №15 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.