Диз'юнкція (логіка)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Диз'юнкція (лат. disjunctio — розділення) (операція OR) — двомісна логічна операція, що має значення «істина», якщо хоча б один з операндів має значення «істина». Операція відображає вживання сполучника «або» в логічних висловлюваннях. Диз'юнкція є бінарною операцією, тобто, має два операнда. Запис може бути префіксним — знак операції стоїть перед операндами, інфіксним — знак операції стоїть між операндами або постфіксним — знак операції стоїть після операндів. При числі операндів більше 2-х префіксна і постфіксна записи економніше.

Позначається: в математиці та логіці як \lor, в програмуванні як | чи or. Найчастіше зустрічаються такі варіанти запису: a||b, a|b, a\lorb, a+b, a or b.

Визначення[ред.ред. код]

Діаграма Венна для операції A \lor B

В булевій алгебрі диз'юнкція — це функція двох, трьох або більше змінних (вони ж — операнди операції, вони ж — аргументи функції). Правило: результат дорівнює 0, Якщо всі операнди рівні 0; У всіх інших випадках результат дорівнює1 .

Таблиця істинності виглядає таким чином:

~A ~B A \lor B
хибність хибність хибність
хибність істина істина
істина хибність істина
істина істина істина

Відповідною операцією в теорії множин є об'єднання множин.

Властивості[ред.ред. код]

a \lor (b \lor c) \equiv (a \lor b) \lor c
a \lor  b \equiv b \lor a
a \land (b \lor c) \equiv (a \land b) \lor (a \land c)
a \lor (b \land c) \equiv (a \lor b) \land (a \lor c)
a \lor (b \leftrightarrow c) \equiv (a \lor b) \leftrightarrow (a \lor c)
a \lor a \equiv a
(a \rightarrow b) \rightarrow ((a \lor c) \rightarrow (b \lor c))

Функціональна повнота[ред.ред. код]

Множина операцій \{ \lor, \lnot \} є функціонально повною:

a \land b \equiv \lnot (\lnot a \lor \lnot b)
a \rightarrow b \equiv \lnot a \lor b
a \;|\; b \equiv \lnot a \lor \lnot b
a \downarrow b \equiv \lnot (a \lor b)

Двійкові операції[ред.ред. код]

Диз'юнкція часто використовується для двійкових операцій. Наприклад: Логічний елемент 2АБО AB f (A B)

  • 0 \lor 0 = 0
  • 0 \lor 1 = 1
  • 1 \lor 0 = 1
  • 1 \lor 1 = 1
  • 1010 \lor 1110 = 1110

Мнемонічне правило для диз'юнкції з будь-якою кількістю входів звучить так: На виході буде: «1» тоді і тільки тоді, коли хоча б на одному вході є «1», «0» тоді і тільки тоді, коли на всіх входах «0»

Багатозначна логіка[ред.ред. код]

В багатозначній логіці операція диз'юнкції може визначатися іншими способами. Найчастіше застосовується схема: a\lorb= max(a, b), де a, b[0,1]. Можливі й інші варіанти. Як правило, намагаються зберегти сумісність з булевою алгеброю для значень операндів 0, 1.

Програмування[ред.ред. код]

У комп'ютерних мовах використовуються два основні варіанти диз'юнкції: логічне «АБО» і побітове «АБО». Наприклад, у мовах C / C++ логічне «АБО» позначається символом "||«, а побітове — символом »|". У мовах Pascal / Delphi обидва види диз'юнкції позначаються з використанням ключового слова «or», а результат дії визначається типом операндів. Якщо операнди мають логічний тип (наприклад, Boolean) — виконується логічна операція, якщо цілочисельний (наприклад, Byte) — порозрядне. Логічне «АБО» застосовується в операторах умовного переходу або в аналогічних випадках, коли потрібне отримання результату false або true. Наприклад:

if  (a || b) {/* Якісь дії */}; 

Результат буде дорівнювати false, якщо обидва операнда рівні false або 0. У будь-якому іншому випадку результат буде дорівнювати true. При цьому застосовують стандартну угоду: якщо значення лівого операнда є true, то значення правого операнда не обчислюється (замість b може стояти будь-яка складна формула). Така угода прискорює виконання програми і служить корисним прийомом в деяких випадках. Побітове «АБО» виконує звичайну операцію булевої алгебри для всіх бітів лівого і правого операнда попарно. Наприклад, якщо a = 01100101 b = 00101001, то a АБО b = 01101101

Див. також[ред.ред. код]