Disjunktio

**Disjunktio** on propositiologiikassa kaksipaikkainen looginen konnektiivi, joka vastaa yleiskielen sanaa *[[tai]]*. Sillä muodostettu yhdistetty lause on tosi, jos ainakin yksi sen yhdistämistä lauseista on tosi, muussa tapauksessa epätosi. Lauseiden *A* ja *B* disjunktiolle käytetään merkintää A \lor B.

Näin määritellystä disjunktiosta käytetään myös nimitystä *inklusiivinen tai* eli *inklusiivinen disjunktio* erotukseksi eksklusiivisesta disjunktiosta ("joko A tai B, mutta ei molemmat"), joka on tosi vain silloin, jos vain toinen sen yhdistämistä lauseista on tosi. Koska sanaa *tai* käytetään tavallisessa kielessä eri yhteyksissä kummassakin merkityksessä, inklusiivista disjunktiota tarkoitettaessa käytetään mahdollisen väärin­käsityksen välttämiseksi nykyisin joskus ilmaisua *[[ja/tai]]*.

Disjunktioon läheisesti liittyviä käsitteitä muissa yhteyksissä ovat:

* joukko-opissa unioni eli yhdiste
* predikaattilogiikassa eksistenssikvanttori eli olemassaolokvanttori
* elektroniikassa disjunktiota vastaa OR-portti.

## Merkinnät

Loogiselle disjunktiolle käytetään kirjallisuudessa useita eri symboleja. Sanan "tai" () ohella sille käytetään yleisesti symbolia "\lor", joka on muodostettu latinan sanan *vel* ("tai") alkukirjaimesta. Esi­merkiksi "*A* \lor *B*&nbsp;" luetaan "*A* tai *B*". Tällainen disjunktio on epä­tosi vain jos sekä *A* että *B* ovat epä­tosia lauseita, muussa tapauksessa se on tosi.

Kaikki seuraavat ovat disjunktiota:
: A \lor B
: \neg A \lor B
: A \lor \neg B \lor \neg C \lor D \lor \neg E.

Boolen algebrassa disjunktiolle käytetään merkintää A + B. Jan Lukasiewiczin prefiksinotaatiossa disjunktion merkkinä käytetään A-kirjainta, joka on lyhenne puolan kielen sanasta *alternatywa*. Tällöin lauseiden *p* ja *q* disjunktio merkitään A*pq*.

Eri ohjelmointikielissä disjunktiota vastaava operaattori merkitään tavallisimmin joko sanalla `or` tai kahdella pystyviivalla (`||`).

## Totuustaulu

Operaation ~A \lor B totuustaulu on seuraava:

## Ominaisuudet

Looginen disjunktio noudattaa lasku­lakeja, jotka pitkälti ovat analogisia esi­merkiksi reaalilukujen lasku­säännöille. Se on vaihdannainen ja liitännäinen, ja sille pätee myös osittelulaki, kun toisena lasku­toimituksena on looginen konjunktio. Disjunktio on lisäksi idem­potentti eli minkä tahansa lauseen disjunktiolla itsensä kanssa on sama totuus­arvo kuin alku­peräisellä lauseella. Tätä havainnollistavat seuraavat kaaviot:

* **Vaihdannaisuus**

* **Liitännäisyys**

* **Osittelulaki loogisen konjunktion suhteen**

* **Idempotenssi**

* **[[Monotoninen funktio|Monotonisuus]]**

* **Totuuden säilyttävä validiteetti**
Kun kaikki disjunktiolla yhdistettävät lauseet ovat tosia, disjunktio on tosi.

* **Epätotuuden säilyttävä validiteetti**
Kun kaikki disjunktiolla yhdistettävät lauseet ovat epätosia, disjunktio on epätosi.

* **[[Hadamardin muunnos|Walshin spektri]]: (3,-1,-1,-1)**

* **Epälineaarisuus: 1** (funktio on taivutettu)

Jos totuusarvoille käytetään binäärilukumerkintöjä tosi (1) ja epätosi (0), looginen disjunktio toimii lähes samoin kuin binäärinen yhteen­lasku. Erona on vain se, että 1\lor 1=1, kun taas binääri­järjestelmässä 1+1=10.

## Sovellukset tietotekniikassa

Useimmissa ohjelmointikielissä on disjunktiota vastaava operaattori. Se merkitään monissa ohjelmointikielissä varatulla sanalla `or`, mutta esimerkiksi C:ssä ja siihen pohjautuvissa ohjelmointikielissä kahdella pystyviivalla (`||`).

Looginen disjunktio suoritetaan yleensä minimaalisella evaluaatiolla. Tämä merkitsee, että jos sen ensimmäinen (vasemmanpuoleinen) operandi on arvoltaan *tosi*, ohjelma ei edes tarkista, mikä sen jälkimmäisen operandin arvo on.

Useimmissa ohjelmointi­kielissä looginen disjunktio antaa tulokseksi aina boolean-tyyppisen muuttujan, jolla on vain kaksi mahdollista arvoa: tosi (1) tai epätosi (0). Monissa vahvasti tyypitetyissä kielissä disjunktio voidaan sitä paitsi suorittaa vain, jos molemmat sillä yhdistettävät operanditkin ovat boolean-tyyppisiä. Joissakin heikosti tyypitetyissä kielissä, esimerkiksi C:ssä, disjunktio voidaan kuitenkin suorittaa silloinkin, kun operandit ovat esimerkiksi kokonais- tai reaaliluku­tyyppisiä; tällöin tuloksena on 0 (epätosi) vain, jos molemmat operandit ovat nollia, mulloin tuloksena on 1 (tosi). Tällöin siis operandien kaikkien muiden arvon kuin nollan katsotaan vastaavan totuus­arvoa tosi.

Muutamissa ohjelmointikielissä kuten Pythonissa ja JavaScriptissä disjunktio-operaattori voi kuitenkin palauttaa muitakin arvoja kuin 1 tai 0. Tällöin se saa arvokseen operaattorin ensimmäisen operandin arvon, jos se on "tosi" eli ei ole nolla, muussa tapauksessa jälkimmäisen operandin arvon.

Disjunktiota vastaava looginen portti on OR-portti.

### Biteittäinen operaatio

Joissakin ohjelmointikielissä on määritelty myös *biteittäinen disjunktio*'. Tällöin operandit, jotka voivat olla esimerkiksi binäärisiä kokonaislukuja, käydään läpi bitti bitiltä ja suoritetaan disjunktio-operaatiot kummankin operandin vastaavien bittien välillä. Tuloksena saadaan muuttuja, jossa kunkin bitin arvo riippuu operandien bittien arvoista seuraavasti:

* 0 `or` 0 = 0
* 0 `or` 1 = 1
* 1 `or` 0 = 1
* 1 `or` 1 = 1

Käymällä bitit läpi esimerkiksi binääriluvuista 11001010 ja 10100011 saadaan tulokseksi 11101011.

Biteittäinen disjunktio on käytettävissä muun muassa C-kielessä, jossa se merkitään yhdellä pystyviivalla (`|`).

Biteittäisellä disjunktiolla voidaan muun muassa asettaa halutulle bitille arvo 1 muiden bittien pysyessä ennallaan. Esimerkiksi lauseella `x = x | 0b00000001` saadaan muuttujan x viimeinen bitti ykköseksi.

## Unioni

Disjunktiota vastaava operaatio joukko-opissa on unioni. Kahden joukon unioni määritelläänkin disjunktion avulla:  a \in A \cup B, jos ja vain jos  a \in A \lor a \in B. Toisin sanoen alkio *a* kuuluu joukkojen *A* ja *B* unioniin, jos ja vain jos se kuuluu näistä joukoista ainakin toiseen. Tämän vuoksi joukko-opillinen unioni noudattaa pitkälti samoja sääntöjä kuin disjunktiokin: sillekin pätevät vaihdanta-, liitäntä-, osittelu- ja de Morganin lait.

## Luonnolliset kielet

Matemaattisessa logiikassa määritellyt käsitteet ovat merkitykseltään erilaisia kuin luonnollisen kielen sanat yleensä ovat. Suomen kielessä disjunktiota vastaa lähinnä sana *tai*, jota käytetään kuitenkin ainakin kahdessa toisistaan poikkeavassa merkityksessä, kuten sen vastineita useissa muissakin kielissä. Jos joku esimerkiksi pyytää: "Soita minulle tai lähetä sähköpostia", tällöin tarkoitetaan toden­näköisesti: "tee toinen, mutta älä molempia." Jos taas josta­kusta sanotaan: "Kun hän sai niin korkea arvo­sanat, hän selvästikin on hyvin lahjakas tai opiskelee ahkerasti"; tällöin ei suljeta pois sitä mahdollista, että molemmat vaihto­ehdot ovat tosia. Toisin sanoen sana "tai" voi tarkoittaa sekä inklu­siivista että eksklu­siivista disjunktiota. Silloin kun kyseessä on inklu­siivinen disjunktio, käytetään nykyisin toisinaan asian selventämiseksi ilmaisua "ja/tai".

## Katso myös

* Konjunktio (logiikka)
* OR-portti
* Propositiologiikka
* Boolen algebra

## Lähteet

## Aiheesta muualla
*