Перейти к содержанию

5. Алгебра логики. Таблицы истинности

Введение

Современные компьютеры, программы и электронные устройства работают на основе логических законов, описанных в алгебре логики. Этот раздел математики изучает, как можно представлять и обрабатывать информацию, выраженную в виде логических высказываний — то есть утверждений, которые могут быть истинными (1) или ложными (0).

Алгебра логики была создана в XIX веке английским математиком Джорджем Булем, поэтому её иногда называют булевой алгеброй. Именно благодаря работам Буля стало возможным математически описывать рассуждения, умозаключения и логические зависимости. Позже эти принципы легли в основу проектирования электронных схем и вычислительных машин.

Логика используется во всех областях информатики:

  • при создании программ (условия, ветвления, циклы),
  • в поисковых системах (логические операторы AND, OR, NOT),
  • при построении цифровых схем и микропроцессоров,
  • в алгоритмах искусственного интеллекта,
  • при обработке данных и фильтрации информации.

Пример из жизни:

  • Высказывание «Сегодня идёт дождь» может быть либо истинным, либо ложным — третьего не дано.
  • «Если идёт дождь, то я возьму зонт» — это логическое высказывание, в котором связаны две части: условие и следствие.

Пример из IT: В программировании логика используется повсюду. Например:

if (user_logged_in and not user_banned):
    print("Доступ разрешён")
else:
    print("Доступ запрещён")

Здесь выражение user_logged_in and not user_banned — это логическое условие, которое проверяет, выполнены ли оба требования: пользователь вошёл в систему и не заблокирован.

Таким образом, алгебра логики — это язык, на котором «думают» компьютеры. Понимание её основ необходимо каждому специалисту в области информационных технологий, ведь без неё невозможно понять, как работают программы, цифровые схемы и базы данных.


Основные логические операции

Отрицание (НЕ, NOT)

Обозначения: $\neg A$, $!A$, $Ā$

Смысл: операция отрицания меняет значение высказывания на противоположное.

Если A истинно (1) — отрицание $\neg A$ ложно (0); если $A$ ложно (0) — отрицание $¬A$ истинно (1).

A $¬A$
0 1
1 0

Примеры:

  • Если $A$ = «На улице светло», то $¬A$ = «На улице не светло».
  • Если $A$ = «Компьютер включён», то $¬A$ = «Компьютер выключен».
  • Если $A$ = «Студент сдал экзамен», то $¬A$ = «Студент не сдал экзамен».
  • Если $A$ = «Файл сохранён», то $¬A$ = «Файл не сохранён».

Разъяснение:

Отрицание — это базовая логическая операция, которая инвертирует значение высказывания.

В повседневной речи это выражается с помощью слов «не», «нет», «неверно», например:

  • «Не идёт дождь», «Не работает интернет», «Не открыт файл».

В программировании операция отрицания обозначается чаще всего символом ! (восклицательный знак) или ключевым словом NOT.

Она используется для проверки обратных условий.

Пример в программировании (Python):

logged_in = False
if not logged_in:
    print("Пользователь не вошёл в систему")

Здесь not logged_in — это логическое отрицание, которое делает выражение истинным, если logged_in равно False.

Конъюнкция (AND)

Обозначения: $A ∧ B$

Смысл: операция конъюнкции показывает, что результат будет истинным только тогда, когда оба высказывания истинны одновременно.

Если хотя бы одно из них ложно — всё выражение ложно.

A B A ∧ B
0 0 0
0 1 0
1 0 0
1 1 1

Разъяснение:

Конъюнкция отражает смысл слова «и» в логике и повседневной речи.

Чтобы результат был истинен, необходимо, чтобы выполнялись все условия сразу.

Примеры из жизни:

  • «Идёт дождь и я взял зонт» → я не промокну (оба высказывания истинны).
  • «Компьютер включён и монитор подключён» → изображение отображается.
  • «Есть интернет и работает сервер» → сайт доступен.
  • «Студент сдал экзамен и получил зачёт» → курс успешно пройден.

Пример из программирования:

В языке Python или C# оператор конъюнкции обозначается как and или &&:

user_logged_in = True
has_access = True
if user_logged_in and has_access:
    print("Доступ разрешён")

Если оба условия (user_logged_in и has_access) истинны, программа выполнит действие.

Если хотя бы одно из них ложно, результат выражения будет False, и код не выполнится.

Дизъюнкция (OR)

Обозначения: $A ∨ B$, $A + B$

Смысл: операция дизъюнкции показывает, что результат будет истинным, если хотя бы одно из выражений истинно.

Результат ложен только в случае, когда оба высказывания ложны.

A B A ∨ B
0 0 0
0 1 1
1 0 1
1 1 1

Разъяснение:

Дизъюнкция выражает смысл слова «или» в логике.

Она используется, когда достаточно, чтобы выполнялось хотя бы одно из условий.

Примеры из жизни:

  • «Сегодня идёт дождь или снег» — погода плохая в любом из случаев.
  • «Я сдам экзамен, если буду готовиться или если повезёт».
  • «Система работает, если питание есть или используется аккумулятор».
  • «Компьютер включится, если нажать кнопку питания или использовать команду с клавиатуры».

Пример из программирования:

В языках программирования оператор «ИЛИ» обозначается как or (Python) или || (C, C#, Java):

has_key = True
knows_password = False
if has_key or knows_password:
    print("Доступ разрешён")

Здесь условие выполнится, если хотя бы одно из двух утверждений истинно — либо у пользователя есть ключ, либо он знает пароль.

Исключающее ИЛИ (XOR)

Обозначения: $A ⊕ B$, $XOR(A, B)$

Смысл: операция исключающего ИЛИ показывает, что результат будет истинным, если только одно из выражений истинно, а другое — ложно.

Если оба высказывания истинны или оба ложны, результат — ложь.

A B A ⊕ B
0 0 0
0 1 1
1 0 1
1 1 0

Разъяснение:

XOR используется, когда необходимо определить различие между двумя условиями.

Она часто применяется там, где результат должен быть истинным только при несовпадении логических значений.

Примеры из жизни:

  • «На урок пришёл один из двух студентов» — истина, если пришёл только один.
  • «Лампочка горит, если включён ровно один из двух выключателей».
  • «Карта доступа сработает, если введён правильный пин, но не при одновременном вводе дублирующего ключа».

Пример из программирования:

В некоторых языках программирования оператор XOR обозначается ^ (в Python, C, C#, Java):

a = True
b = False
if a ^ b:
    print("Истина: только одно из условий выполнено")

Результат выражения будет True, если только одно из двух условий истинно.

Импликация (A → B)

Обозначения: $A → B$

Смысл: операция импликации показывает зависимость одного высказывания от другого.

Она читается как:

«Если A, то B».

Импликация ложна только в одном случае — когда A истинно, а B ложно.

Во всех остальных случаях она считается истинной.

A B A → B
0 0 1
0 1 1
1 0 0
1 1 1

Разъяснение:

Импликация выражает причинно-следственную связь между событиями.

A — это условие, а B — следствие.

Если условие выполнено, но следствие не наступило — утверждение ложно.

Если же условие не выполнено (A = 0), мы не можем обвинить высказывание во лжи — ведь ничего не обещалось.

Примеры из жизни:

  1. «Если идёт дождь (A), то земля мокрая (B)».

— Ложь только если дождь идёт, а земля сухая. 2. «Если я учусь (A), то сдам экзамен (B)».

— Если учусь и не сдал — импликация ложна.

— Если не учился, но вдруг сдал — это не противоречит высказыванию. 3. «Если нажать кнопку (A), то включится свет (B)».

— Если нажал, но свет не включился — условие нарушено.

Пример из программирования (Python):

A = True   # пользователь вошёл
B = True   # доступ разрешён

if A and not B:
    print("Импликация ложна: пользователь вошёл, но доступа нет")
else:
    print("Импликация истинна")

Импликация проверяет, что если выполняется A, то должно выполняться и B.

Если A истинно, а B ложно — программа сообщает, что логическая связь нарушена.

Эквиваленция (A ↔ B)

Обозначения: $A ↔ B$, $A ⇔ B$

Смысл: операция эквиваленции показывает, что два высказывания равнозначны, то есть принимают одинаковые значения — оба истинны или оба ложны.

Если одно истинно, а другое ложно — результат ложен.

A B A ↔ B
0 0 1
0 1 0
1 0 0
1 1 1

Разъяснение:

Эквиваленция отражает взаимную зависимость между двумя утверждениями:

  • Когда A истинно, B тоже истинно.
  • Когда A ложно, B тоже ложно.

Поэтому A ↔ B можно интерпретировать как:

«A тогда и только тогда, когда B».

Примеры из жизни:

  1. «Устройство включено ↔ горит индикатор».

— Истина, если лампочка горит только при включённом устройстве. 2. «Сегодня выходной ↔ магазины закрыты».

— Истина, если оба утверждения совпадают: или оба верны, или оба неверны. 3. «Студент сдал экзамен ↔ получил зачёт».

— Оба события происходят одновременно или не происходят вовсе. 4. «Загружен файл ↔ отображается на экране».

— Логическая зависимость, часто встречающаяся в системах управления.

Пример из программирования:

В программировании эквиваленция используется для сравнения логических значений.

Например, в Python:

A = True
B = False
if A == B:
    print("A и B равнозначны")
else:
    print("A и B различаются")

Эквиваленция фактически аналогична проверке A == B, т.е. истина, если оба значения одинаковы.

Её можно выразить через другие логические операции:

A ↔ B = (A → B) ∧ (B → A)

или

A ↔ B = (A ∧ B) ∨ (¬A ∧ ¬B)



Итоги

Операция Обозначение Смысл Когда результат = 1
НЕ ¬A Отрицание Когда A = 0
И A ∧ B Конъюнкция Когда A = 1 и B = 1
ИЛИ A ∨ B Дизъюнкция Когда A = 1 или B = 1
XOR A ⊕ B Исключающее ИЛИ Когда только одно из A, B = 1
A → B Импликация Когда A = 0 или B = 1
A ↔ B Эквиваленция Когда A и B равны