Конъюнкция

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск

Конъю́нкция (от лат. conjunctio - союз, связь) — логическая операция, по своему применению максимально приближённая к союзу "и". Синонимы: логи́ческое "И", логи́ческое умноже́ние, иногда просто "И".

Конъюнкция может быть бинарной операцией, то есть, иметь два операнда, тринарной операцией, т.е. иметь три операнда или n-арной операцией, т.е. иметь n операндов.
Запись может быть префиксной - знак операции ставится перед операндами (польская запись), инфиксная - знак операции ставится между операндами или постфиксной - знак операции ставится после операндов.
Чаще всего встречаются следующие варианты записи:
<math>~a</math> && <math>~b, ~a</math> & <math>~b, a \land b, a \cdot b, ~a~\mbox{AND} ~b</math>.
По аналогии с умножением в алгебре знак логического умножения может быть пропущен: <math>~a b</math>.

Содержание

Булева алгебра

В булевой алгебре конъюнкция - это функция двух, трёх или более переменных (они же - операнды операции, они же - аргументы функции). Переменные могут принимать значения из множества <math>~\{0, 1\}</math>. Результат также принадлежит множеству <math>~\{0, 1\}</math>. Вычисление результата производится по простому правилу, либо по таблице истинности. Вместо значений <math>~0, 1</math> может использоваться любая другая пара подходящих символов, например <math>~false, true</math> или <math>~F, T</math> или "ложь", "истина".
Правило: результат равен <math>~1</math>, если все операнды равны <math>~1</math>; во всех остальных случаях результат равен <math>~0</math>.

Таблицы истинности:
для бинарной конъюнкции

<math>~a</math> <math>~b</math> <math>~a \land b</math>
<math>~0</math> <math>~0</math> <math>~0</math>
<math>~0</math> <math>~1</math> <math>~0</math>
<math>~1</math> <math>~0</math> <math>~0</math>
<math>~1</math> <math>~1</math> <math>~1</math>

бинарной конъюнкции соответствует бинарная функция f(10,1,1000)2(x,y)=f(2,1,08)10(x,y); для тринарной конъюнкции

XYZ X <math>\land</math> Y <math>\land</math> Z
000 0
100 0
010 0
110 0
001 0
101 0
011 0
111 1

тринарной конъюнкции соответствует тринарная функция f(11,1,10000000)2(x,y)=f(3,1,128)10(x,y).

Многозначная логика

В многозначной логике операция конъюнкции может определяться другими способами. Чаще всего применяется схема: <math>a \land b = min(a, b)</math>, где <math>~a, b \in [0, 1]</math>. Возможны и другие варианты. Как правило, стараются сохранить совместимость с булевой алгеброй для значений операндов

Классическая логика

В классическом исчислении высказываний свойства конъюнкции определяются с помощью аксиом. Классическое исчисление высказываний может быть задано разными системами аксиом, и некоторые из них будут описывать свойства конъюнкции. Один из самых распространённых вариантов включает 3 аксиомы для конъюнкции:
<math>~a \land b \to a</math>
<math>~a \land b \to b</math>
<math>~a \to (b \to (a \land b))</math>

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

Программирование

В компьютерных языках используется два основных варианта конъюнкции: логическое "И" и побитовое (поразрядное) "И". Например, в языках C/C++ логическое "И" обозначается символом "&&", а побитовое - символом "&". В языках Pascal/Delphi оба вида конъюнкции обозначается с использованием ключевого слова "and", а результат действия определяется типом операндов. Если операнды имеют логический тип (например, Boolean) - выполняется логическая операция, если целочисленный (например, Byte) - поразрядная.

Логическое "И" применяется в операторах условного перехода или в аналогичных случаях, когда требуется получение результата <math>~false</math> или <math>~true</math>. Например:

if (a && b) 
{
    /* какие-то действия */
};

Результат будет равен <math>~true</math>, если оба операнда равны <math>~true</math> (для числовых типов не равны <math>~0</math>). В любом другом случае результат будет равен <math>~false</math>.

При этом применяется стандартное соглашение: если значение левого операнда равно <math>~false</math>, то значение правого операнда не вычисляется (вместо <math>~b</math> может стоять сложная формула). Такое соглашение ускоряет исполнение программы и служит полезным приемом в некоторых случаях. Компилятор Delphi поддерживает специальную директиву, включающую
{$B-}
или выключающую
{$B+}
подобное поведение. Например, если левый операнд проверяет возможность вычисления правого операнда:
if (a != 0 && b / a > 3) 
{
    /* какие-то действия */
};

В этом примере, благодаря проверке в левом операнде, в правом операнде никогда не произойдет деления на ноль.

Побитовое "И" выполняет обычную операцию булевой алгебры для всех битов левого и правого операнда попарно. Например,

если
a = <math>~01100101_2</math>
b = <math>~00101001_2</math>
то
a И b = <math>~00100001_2</math>

Связь с естественным языком

Часто указывают на сходство между конъюнкцией и союзом "и" в естественном языке. Составное утверждение "A и B" считается истинным, когда истинны оба утверждения A и B, в противном случае составное утверждение ложно. Это в точности соответствует определению конъюнкции в булевой алгебре, если "истину" обозначать как <math>1</math>, а "ложь" как <math>0</math>. При этом часто делают стандартную оговорку о неоднозначности естественного языка. Например, в зависимости от контекста союз "и" может нести дополнительный оттенок "и тогда", "и поэтому", "и потом"..."И" также несет в себе оттенок неопределенного смысла. Отличие логики естественного языка от математической остроумно выразил американский математик Стивен Клини, заметив, что в естественном языке "Мэри вышла замуж и родила ребенка" - не то же самое, что "Мэри родила ребенка и вышла замуж".

См. также

cs:Konjunkce (matematika) da:Konjunktion (logik) de:Konjunktion (Logik) en:Logical conjunction eo:Konjunkcio (logiko) et:Konjunktsioon (loogika) fa:عطف منطقی fi:Konjunktio (logiikka) fr:Conjonction logique he:וגם (לוגיקה) hu:Konjunkció id:Logika konjungsi it:Congiunzione logica ja:論理積 ko:논리곱 mk:Логичка конјункција nl:Logische conjunctie no:Konjunksjon (logikk) pl:Koniunkcja (matematyka) pt:Conjunção lógica simple:Logical conjunction sk:Konjunkcia (logika) sv:Konjunktion (logik) tr:Ve kapısı uk:Кон'юнкція zh:逻辑与

Личные инструменты

Served in 0.130 secs.