Конъюнкция
Конъю́нкция (от лат. conjunctio союз, связь) — логическая операция, по своему применению максимально приближённая к союзу "и". Синонимы: логи́ческое "И", логи́ческое умноже́ние, иногда просто "И".
Конъюнкция может быть бинарной операцией, то есть, иметь два операнда, тернарной операцией, т.е. иметь три операнда или n-арной операцией, т.е. иметь n операндов. Чаще всего встречаются следующие варианты инфиксной записи:
.
По аналогии с умножением в алгебре знак логического умножения может быть пропущен:
.
Содержание |
[править] Булева алгебра
В булевой алгебре конъюнкция — это функция двух, трёх или более переменных (они же — операнды операции, они же — аргументы функции). Переменные могут принимать значения из множества
. Результат также принадлежит множеству
. Вычисление результата производится по простому правилу, либо по таблице истинности. Вместо значений
может использоваться любая другая пара подходящих символов, например
или
или "ложь", "истина".
Правило: результат равен
, если все операнды равны
; во всех остальных случаях результат равен
.
Таблицы истинности:
для бинарной конъюнкции
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
для тернарной конъюнкции
| X | Y | Z | X Y Z |
|
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | |
| 1 | 0 | 0 | 0 | |
| 0 | 1 | 0 | 0 | |
| 1 | 1 | 0 | 0 | |
| 0 | 0 | 1 | 0 | |
| 1 | 0 | 1 | 0 | |
| 0 | 1 | 1 | 0 | |
| 1 | 1 | 1 | 1 |
Конъюнкция коммутативна, ассоциативна и дистрибутивна по отношению к слабой дизъюнкции[1].
[править] Многозначная логика
В многозначной логике операция конъюнкции может определяться другими способами. Чаще всего применяется схема:
, где
. Возможны и другие варианты. Как правило, стараются сохранить совместимость с булевой алгеброй для значений операндов
и
.
[править] Классическая логика
В классическом исчислении высказываний свойства конъюнкции определяются с помощью аксиом. Классическое исчисление высказываний может быть задано разными системами аксиом, и некоторые из них будут описывать свойства конъюнкции. Один из самых распространённых вариантов включает 3 аксиомы для конъюнкции:



С помощью этих аксиом можно доказать другие формулы, содержащие операцию конъюнкции. Обратите внимание, что в классическом исчислении высказываний не происходит вычисления результата по значениям операндов (как в булевой алгебре), а требуется доказать формулу как единое целое на основе аксиом и правил вывода.
[править] Схемотехника
![]() |
![]() |
![]() |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 1 | 1 |
Логический элемент, реализующий функцию конъюнкции, называется схемой совпадения[1]. Мнемоническое правило для конъюнкции с любым количеством входов звучит так: На выходе будет:
- "1" тогда и только тогда, когда на всех входах есть «1»,
- "0" тогда и только тогда, когда хотя бы на одном входе есть «0»
[править] Программирование
В компьютерных языках используется два основных варианта конъюнкции: логическое "И" и побитовое (поразрядное) "И". Например, в языках C/C++ логическое "И" обозначается символом "&&", а побитовое — символом "&". В терминологии, используемой в C#, операцию "&" принято называть логическим "И", а операцию "&&" - условным "И", поскольку значения операндов являются условиями для продолжения вычисления. В языках Pascal/Delphi оба вида конъюнкции обозначается с использованием ключевого слова "and", а результат действия определяется типом операндов. Если операнды имеют логический тип (например, Boolean) — выполняется логическая операция, если целочисленный (например, Byte) — поразрядная.
Логическое "И" применяется в операторах условного перехода или в аналогичных случаях, когда требуется получение результата
или
. Например:
if (a & b & c) { /* какие-то действия */ };
Сравнение в данном случае будет продолжаться до конца выражения, независимо от промежуточных результатов. Принцип работы условного "И" в аналогичной ситуации:
a = false; b = true; c = true; if (a && b && c) { /* какие-то действия */ };
Проверка истинности выражения в данном случае остановится после сравнения a и b, т.к. дальнейшее сравнение не имеет смысла.
Результат будет равен
, если оба операнда равны
(для числовых типов не равны
). В любом другом случае результат будет равен
.
При этом применяется стандартное соглашение: если значение левого операнда равно
, то значение правого операнда не вычисляется (вместо
может стоять сложная формула). Такое соглашение ускоряет исполнение программы и служит полезным приемом в некоторых случаях. Компилятор Delphi поддерживает специальную директиву, включающую
{$B-}
или выключающую
{$B+}
подобное поведение. Например, если левый операнд проверяет возможность вычисления правого операнда:
if (a != 0 && b / a > 3) { /* какие-то действия */ };
В этом примере, благодаря проверке в левом операнде, в правом операнде никогда не произойдет деления на ноль.
Побитовое "И" выполняет обычную операцию булевой алгебры для всех битов левого и правого операнда попарно. Например,
| если | |
| a = | ![]() |
| b = | ![]() |
| то | |
| a И b = | ![]() |
[править] Связь с естественным языком
Часто указывают на сходство между конъюнкцией и союзом "и" в естественном языке. Составное утверждение "A и B" считается истинным, когда истинны оба утверждения A и B, в противном случае составное утверждение ложно. Это в точности соответствует определению конъюнкции в булевой алгебре, если "истину" обозначать как
, а "ложь" как
. При этом часто делают стандартную оговорку о неоднозначности естественного языка. Например, в зависимости от контекста союз "и" может нести дополнительный оттенок "и тогда", "и поэтому", "и потом"..."И" также несет в себе оттенок неопределенного смысла. Отличие логики естественного языка от математической остроумно выразил американский математик Стивен Клини, заметив, что в естественном языке "Мэри вышла замуж и родила ребенка" — не то же самое, что "Мэри родила ребенка и вышла замуж".
[править] Примечания
- ↑ 1 2 Словарь по кибернетике /Под редакцией В. С. Михалевича. — 2-е издание — К.: 1989. — 751 с., ISBN 5-88500-008-5
.

Y 




