Eksklusiivinen disjunktio
Lausetta vastaava Venn-diagrammi |
Lausetta vastaava Venn-diagrammi |
Eksklusiivinen disjunktio eli eksklusiivinen tai on looginen konnektiivi, jolla muodostettu yhdistetty lause on tosi, jos ja vain jos yhdistettävillä lauseilla on eri totuusarvot (toinen on tosi ja toinen epätosi). Sen merkkinä käytetään etuliitettä J tai lauseiden väliin merkittyä operaattoria XOR, EOR, EXOR, ⊻, ⊕, ↮ tai ≢. Eksklusiivisen disjunktion negaatio on lauseiden looginen ekvivalenssi, joka on tosi, jos ja vain jos molemmilla lauseilla on sama totuusarvo.
Eksklusiivinen disjunktio vastaa tavanomaisen kielen ilmaisua "joko... tai... mutta ei molemmat". Myös sanaa tai käytetään usein vastaavassa merkityksessä. Määritettä eksklusiivinen eli poissulkeva käytetään, koska sanan "tai" merkitys tavanomaisessa kielessä ei ole yksiselitteinen, kun molemmat lauseet ovat tosia. Eksklusiivinen disjunktio sulkee pois tämän mahdollisuuden, toisin kuin propositiologiikassa yleisemmin käytetty inklusiivinen disjunktio, joka on tosi myös, jos molemmat lauseet ovat tosia.
Kun eksklusiivisella disjunktiolla yhdistetään useampia kuin kaksi lausetta, yhdistetty lause on tosi vain, jos yhdistettävistä lauseista pariton määrä on tosia. Niinpä lause a XOR b XOR c XOR d on tosi, jos lauseista a, b, c ja d pariton määrä on tosia, ja epätosi, jos niistä parillinen määrä on tosia.
Elektroniikassa ja tietotekniikassa eksklusiivista disjunktiota vastaava looginen portti on XOR-portti.
Totuustaulu
[muokkaa | muokkaa wikitekstiä]Lauseen A XOR B totuustaulu osoittaa, että yhdistetty lause on tosi, jos yhdistettävillä lauseilla on eri totuusarvo
Yhdistettävät lauseet | Yhdistetty lause | |
---|---|---|
A | B | |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
jossa:
- 0 = epätosi
- 1 = tosi
Yhtäpitäviä muotoiluja
[muokkaa | muokkaa wikitekstiä]Eksklusiivinen disjunktio merkitsee oleellisesti: 'jompikumpi mutta ei molemmat'. Toisin sanoen se merkitsee, että toinen vaihtoehdoista toteutuu, jos ja vain jos toinen ei toteudu. Esimerkiksi kahdesta hevosesta jompikumpi voittaa ravikilpailussa, mutta eivät molemmat. Eksklusiivinen disjunktio eli Jpq, voidaan ilmaista loogisen konjunktion ("looginen ja", ) disjunktion ("looginen tai", ) ja negaation () avulla seuraavasti:
Eksklusiivinen disjunktio voidaan ilmaista myös seuraavasti:
Tämä esitysmuoto on usein hyödyllinen muodostettaessa loogisia piirejä tai verkkoja, koska siinä on vain yksi -operaatio ja pieni määrä - ja -operaatioita. Että tämä on yhtäpitävä eksklusiivisen disjunktion kanssa, voidaan todistaa seuraavasti:
Joskus on edullista kirjoittaa seuraavaan tapaan:
Tämä voidaan osoittaa yhtäpitäväksi eksklusiivisen disjunktion kanssa soveltamalla De Morganin lakeja kahteen kertaan edellisen todistuksen neljännelle riville.
Eksklusiivinen disjunktio on myös yhtäpitävä loogisen bikonditionaalin negaation kanssa.
Kaiken kaikkiaan matematiikassa ja insinööritieteissä käytettyjä merkintöjä käyttäen pätevät seuraavat tulokset:
Eksklusiivinen disjunktio ja moderni algebra
[muokkaa | muokkaa wikitekstiä]Propositiologiikassa lauseet muodostavat eräänlaisen algebrallisen struktuurin, jossa laskutoimituksina toimivat esimerkiksi (konjunktio) ja . Vaikka nämä kaksi laskutoimitusta ovat hyvin hyödyllisiä loogisissa systeemeissä, seuraavassa mielessä niistä ei muodostaa yleistettävämpää struktuuria.
Systeemit ja ovat molemmat monoideja, eivät ryhmiä. Tämän vuoksi näitä kahta ei voida yhdistää laajemmiksi struktuureiksi kuten renkaaksi.
Jos kuitenkin laskutoimitukseksi valitaan eksklusiivinen disjunktio, systeemi on Abelin ryhmä. Yhdessä laskutoimitukset ja joukossa muodostavat kunnan . Tämä kunta voi esittää mitä tahansa logiikkaa, joka saadaan systeemistä , ja lisäetuna on, että käytettävissä ovat kuntien algebrallisen analyysin tulokset.
Erityisesti jos totuusarvoa (epätosi) merkitään 0:lla ja arvoa 1:llä, looginen "JA"-operaatio voidaan tulkita kertolaskuksi ja eksklusiivinen disjunktio "XOR" yhteenlaskuksi kunnassa :
Kun Boolen algebraa käsitellään tältä pohjalta, puhutaan algebrallisesta normaalimuodosta.
Vaihtoehtoisia merkintöjä
[muokkaa | muokkaa wikitekstiä]Eksklusiiviselle disjunktiolle käytetään eri yhteydessä eri merkintöjä, jotka riippuvat siitäkin, mitä ominaisuuksia kulloinkin tähdennetään. Lyhenteen "XOR" ohella käytetään seuraavia merkintöjä:
- Plusmerkki (+). Tämä on matemaattisesti perusteltua, koska eksklusiivinen disjunktio vastaa yhteenlaskua
modulo 2, jolle pätee seuraava taulukko ja joka on selvästi isomorfinen edellä esitetyn kanssa:
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
- Plusmerkin käytöllä on se lisäetu, että kaikki matemaattisen renkaan ja kunnan algebralliset ominaisuudet pätevät sellaisenaan myös konjunktion ja eksklusiivisen disjunktion muodostamalle loogiselle systeemille. Kuitenkin joissakin yhteyksissä plusmerkillä tarkoitetaan myös inklusiivista disjunktiota.
- Eri tavoin muotoiltu, esimerkiksi ympyröity plusmerkki (). Tätä käytäntöä vastaan on huomautettu, että samaa symbolia käytetään matematiikassa myös algebrallisten systeemien suoralle summalle.
- Etuliite J, kuten merkinnässä pq.
- Inklusiivisen disjunktion symbolia () eri tavoin muotoiltuna, esimerkiksi alleviivattuna () tai lisäämällä sen yläpuolelle piste ().
- Joissakin ohjelmointikielissä kuten C:ssä, C++:ssa, C#:ssa, Javassa, Perlissä, Rubyssä ja Pythonissa biteittäisen eksklusiivisen disjunktion merkkinä käytetään "hattumerkkiä" (
^
). Tätä ei käytetä muissa yhteyksissä kuin ohjelmoinnissa, koska se voisi helposti sekaantua merkin muihin merkityksiin. - Symboli , joka joskus kirjoitetaan myös as >< tai as >-<.
- IEC symbologiassa eksklusiivisen disjunktion merkki on "=1".
Merkit Unicodessa ja HTML:ssä
[muokkaa | muokkaa wikitekstiä]Unicodessa alleviivatun disjunktiomerkin koodiarvo heksadesimaalilukuna on U+22BB, kun taas ympyröidyn plusmerkin koodiarvo on U+2295. Kymmenjärjestelmässä edellinen vastaa lukua 8891, jälkimmäinen lukua 8853, minkä vuoksi HTML:ssä ne voidaan merkitä koodeilla ⊻ ja ⊕. Jälkimmäiselle on HTML:ssä myös merkintä &⊕.
Ominaisuudet
[muokkaa | muokkaa wikitekstiä]Eksklusiivinen disjunktio noudattaa laskulakeja, jotka pitkälti ovat analogisia esimerkiksi reaalilukujen laskusäännöille. Niinpä sille pätevät vaihdanta- ja liitäntälaki. Tätä havainnollistavat seuraavat kaaviot:
Vaihdannaisuus
Liitännäisyys
Osittelulaki: Eksklusiivinen disjunktio ei ole ositeltavissa minkään toisen loogisen konnektiivin eikä myöskään itsensä kanssa, mutta looginen konjunktio on ositeltavissa eksklusiivisen disjunktion suhteen. Tämä seuraa siitä, että konjunktio ja eksklusiivinen disjunktio vastaavat kerto- ja yhteenlaskua kunnassa GF(2),
Idempotenssi ei päde:
Monotonisuus ei päde:
Totuuden säilyttävä validiteetti ei päde:
Kun kaikki yhdistettävät lauseet ovat tosia, eksklusiivinen disjunktio ei ole tosi.
Epätotuuden säilyttävä validiteetti pätee:
Kun kaikki yhdistettävät lauseet ovat epätosia, eksklusiivinen disjunktio on myös epätosi.
Walshin spektri: (2,0,0,-2)
Epälineaarisuus: 0 (funktio on lineaarinen)
Jos arvoille tosi ja epätosi käytetään binäärilukuarvoja 1 ja 0, eksklusiivinen tai toimii aivan samoin kuin yhteenlasku modulaariaritmetiikassa modulo 2.
Eksklusiivinen disjunktio tietotekniikassa
[muokkaa | muokkaa wikitekstiä]Biteittäinen operaatio
[muokkaa | muokkaa wikitekstiä]Eksklusiivista disjunktiota käytetään usein biteittäisiin laskutoimituksiin. Esimerkiksi:
- 1 xor 1 = 0
- 1 xor 0 = 1
- 0 xor 1 = 1
- 0 xor 0 = 0
- 1110 xor 1001 = 0111 (tämä vastaa yhteenlaskua ilman muistinumeroa.)
Kuten edellä todettiin, eksklusiivinen disjunktio vastaa täysin yhteenlaskua modulo 2. Tästä seuraa, että kahden n-bittisen jonon biteittäinen eksklusiivinen disjunktio vastaa vektorien yhteenlaskua vektoriavaruudessa .
Tietotekniikassa biteittäisellä eksklusiivisella disjunktiolla eli XOR-operaatiolla on useita käyttökohteita:
- Se kertoo, ovatko kahdella bitillä sama arvo.
- Sillä voidaan vaihtaa tiettyjen bittien arvot käyttämällä toisena syötteenä sopivasti valittua bittijonoa.
- Sillä voidaan selvittää bittijonon pariteetti eli onko tietyssä bittijonossa parillinen vai pariton määrä ykkösiä (koska on tosi, jos ja vain jos pariton määrä yhdistettävistä lauseista on tosia)
Loogisissa piireissä XOR-portin avulla voidaan rakentaa yksinkertainen summain lukujen yhteenlaskemiseksi. Muistinumeron huomioon ottaminen edellyttä kuitenkin, että piiriin on kytkettävä myös AND-, OR- ja NOT-portteja.
Joissakin tietokonearkkitehtuureissa on tehokkaampaa nollata rekisteri suorittamalla sen sisällöllä XOR-operaatio itsensä kanssa (jolloin tuloksena on aina nolla) kuin ladata ja tallentaa sinne suoraan arvo nolla.
Yksinkertaisissa kynnysaktivoiduissa neuroverkoissa 'XOR'-funktion mallintaminen kuuluu toiselle tasolle, koska 'XOR' ei ole lineaarisesti separoituva funktio.
Eksklusiivista disjunktiota käytetään joskus yksinkertaisena sekoitusfunktiona kryptografiasa, esimerkiksi One-time pad- ja Feistelin verkkojärjestelmissä.
Samaan tapaan XOR-operaatiolla voidaan generoida entropia-allas satunnaislukugeneraattoreja varten. XOR-operaatio säilyttää satunnaisuuden, mikä tarkoittaa, että jos satunnaisesti arvotulle bitille suoritetaan XOR-operaatio ei-satunnaisen bitin kanssa, tuloksena on satunnainen bitti. Eri lähteistä saatuja potentiaalisesti satunnaisia syötteitä voidaan yhdistää XOR-operaatiolla, ja tuloksen ennakoimattomuus on tällöin varmasti vähintään yhtä hyvä kuin parhaan yksittäisen lähteen.[1]
XOR-operaatiota käytetään RAID-levyjärjestelmissä RAID tasoilla 3–6 pariteettitiedon tuottamiseen. Esimerkiksi RAID voi "varmuuskopioida" tavut 10011100
ja 01101100
kahdelta kovalevyltä suorittamalla XOR-operaation vain näille tavuille, jolloin tuloksena on bittijono (11110000
), joka voidaan tallentaa toiselle levylle. Niinpä jos yksi kolmesta levystä katoaa tai vioittuu, kadonnut tavu voidaan palauttaa suorittamalla jäljellä olevien levyjen vastaavissa kohdissa oleville tavuille XOR. Jos esimerkiksi levy, jossa on tavu 01101100
, katoaa, tavut 10011100
ja 11110000
voidaan yhdistää XOR:lla kadonneen tavun palauttamiseksi.
XOR-operaatiota käytetään myös sen toteamiseen, onko jokin yksinkertainen laskutoimitus johtanut ylivuotoon.
XOR-operaatiota voidaan myös käyttää kahden luvun vaihtamiseen keskenään tietokoneen muistissa. Tällä XOR-vaihtoalgoritmilla on kuitenkin lähinnä kuriositeettiarvoa eikä sitä suositella käytännössä toteutettavaksi.
XOR-linkitetyissä listoissa käytetään hyväksi XOR-funktion ominaisuuksia tilan säästämiseksi esitettäessä kaksinkertaisesti linkitetyiksi listoiksi muodostettuja tietorakenteita.
Tietokonegrafiikassa XOR-pohjaisia piirustusmenetelmiä käytetään usein rajoitettujen laatikoiden ja kohdistimen käsittelyyn.
Katso myös
[muokkaa | muokkaa wikitekstiä]Lähteet
[muokkaa | muokkaa wikitekstiä]- ↑ Exclusive OR (XOR) and hardware random number generators robertnz.net. Viitattu 6.5.2015.