Disjuncție

Disjuncție
SAU

diagrama Venn
Definiție
tabelul de adevăr
poarta logica
forme normale
Disjunctiv
conjunctivala
polinomul Zhegalkin
Calitatea de membru la cursuri precompletate
Salvează 0 da
Salvează 1 da
Monoton da
liniar Nu
Auto-dual Nu

Disjuncție (din lat.  disjunctio  - „disjuncție”), adiție logică , SAU logic , inclusiv SAU ; uneori doar SAU  este o operație logică , în aplicarea ei cât mai apropiată de uniunea „sau” în sensul „ori aceasta, ori aceea, sau ambele deodată” [1] .

O disjuncție poate fi fie binară (având doi operanzi) fie -ary (având operanzi) pentru un .

Intrarea poate fi prefix  - semnul operației vine înaintea operanzilor ( notație poloneză ), infix  - semnul operației vine între operanzi sau postfix  - semnul operației vine după operanzi. Când numărul de operanzi este mai mare de doi, notațiile de prefix și postfix sunt mai economice.

Notație

Cea mai comună notație pentru operația de disjuncție este:

|| |

În același timp , notația recomandată de standardul internațional ISO 31-11 este cea mai utilizată în matematica și logica matematică modernă [2] . Nu a apărut imediat: George Boole , care a pus bazele aplicării sistematice a metodei simbolice la logică, nu a lucrat cu disjuncție (folosind în schimb disjuncția strictă , pe care a notat-o ​​cu semnul + ), iar William Jevons a propus semnul. pentru disjuncție . Ernst Schroeder și P. S. Poretsky au folosit din nou semnul + , dar în raport cu disjuncția obișnuită [3] . Simbolul ca desemnare a disjuncției apare mai întâi în articolul „Logica matematică bazată pe teoria tipurilor” [4] de Bertrand Russell (1908); este derivat din lat. vel , care înseamnă „sau” [5] [6] . ·|·  

Notația ⋁pentru disjuncție a fost folosită și în limbajul timpuriu de programare Algol 60 [7] . Cu toate acestea, din cauza absenței unui caracter corespunzător în seturile de caractere standard (de exemplu, în ASCII sau EBCDIC ) utilizate pe majoritatea computerelor , cele mai utilizate limbaje de programare au furnizat alte notații pentru disjuncție. Astfel, în Fortran IV și respectiv PL/I s-au folosit denumirile .OR.și |(cu posibilitatea înlocuirii acestuia din urmă cu cuvântul cheie OR ) [8] ; cuvântul rezervat [9] [10] este folosit în Pascal și Ada ; limbajele C și C++ folosesc notația pentru disjuncția pe biți și pentru disjuncția logică [11] ). or|||

În cele din urmă, sub ordonarea naturală a valorilor de adevăr ale logicii cu două valori (când se presupune că ), rezultă că. Astfel, disjuncția se dovedește a fi un caz special al operației de calcul a maximului ; aceasta deschide calea cea mai naturală de a defini operația de disjuncție în sisteme de logică multivalorică [12] [13] .

Algebră booleană

Funcția logică MAX în logica cu două valori (binară) se numește disjuncție ( „SAU” logic , adunare logică sau pur și simplu „SAU” ). Rezultatul este egal cu cel mai mare operand.

În algebra booleană , o disjuncție este o funcție a două, trei sau mai multe variabile (sunt și operanzii unei operații, sunt și argumentele unei funcții). Astfel, rezultatul este , dacă toți operanzii sunt egali ; în toate celelalte cazuri rezultatul este .

tabelul de adevăr

Tabelul de adevăr pentru disjuncția ternară (trei operanzi):

0 0 0 0
0 0 unu unu
0 unu 0 unu
0 unu unu unu
unu 0 0 unu
unu 0 unu unu
unu unu 0 unu
unu unu unu unu

Logica cu mai multe valori

Operația, numită disjuncție în logica binară , se numește maximă în logica cu mai multe valori : , unde , a  este valoarea logicii. Alte variante sunt posibile[ ce? ] . De regulă, ei încearcă să mențină compatibilitatea cu algebra booleană pentru valorile operanzilor .

Numele maximului acestei operații are sens în logica cu orice valoare, inclusiv în logica binară, iar denumirile disjuncție , „SAU” logic , adunare logică și pur și simplu „SAU” sunt caracteristice logicii binare și sunt utilizate mai rar atunci când treceți la logici cu mai multe valori.

Logica clasică

În calculul propozițional clasic, proprietățile unei disjuncții sunt definite folosind axiome . Calculul propozițional clasic poate fi dat de diferite sisteme de axiome, iar unele dintre ele vor descrie proprietățile disjuncției. Una dintre cele mai comune opțiuni include 3 axiome pentru disjuncție:

Aceste axiome pot fi folosite pentru a demonstra alte formule care conțin operația de disjuncție. Vă rugăm să rețineți că în calculul propozițional clasic, rezultatul nu este calculat din valorile operanzilor (ca în algebra booleană), dar este necesar să se demonstreze formula în ansamblu pe baza axiomelor și a regulilor de inferență.

Circuiterie

Regula mnemonică pentru disjuncția cu orice număr de intrări este: Ieșirea va fi:

Teoria multimilor

În ceea ce privește teoria mulțimilor , disjuncția este analogă cu operația de unire .

Programare

În limbajele de calculator, există două variante principale de disjuncție: „SAU” logic și „SAU” pe biți. De exemplu, în C/C++/Perl/PHP, „SAU” logic este notat cu simbolul „||”, iar „SAU” pe biți prin simbolul „|”. În limbajele Pascal/Delphi, ambele tipuri de disjuncție sunt notate folosind cuvântul cheie " sau " , iar rezultatul operației este determinat de tipul operanzilor. Dacă operanzii sunt de tip boolean (de exemplu, boolean), se efectuează o operație logică, dacă un număr întreg (de exemplu, octet) este o operație pe biți.

„SAU” logic este folosit în operatorii de sărituri condiționate sau în cazuri similare când un rezultat sau este necesar . De exemplu:

dacă ( a || b ) { /* unele acțiuni */ };

Rezultatul va fi egal dacă ambii operanzi sunt egali sau . În orice alt caz, rezultatul va fi .

În acest caz, se aplică convenția standard: dacă valoarea operandului din stânga este egală cu , atunci valoarea operandului din dreapta nu este calculată (în schimb, poate exista o formulă complexă). Această convenție accelerează execuția programului și este o tehnică utilă în unele cazuri. Compilatorul Delphi acceptă o directivă specială care include

{$B-}

sau oprire

{$B+}

comportament similar. De exemplu, dacă operandul din stânga verifică pentru a vedea dacă operandul din dreapta trebuie evaluat:

dacă ( a == NULL || a -> x == 0 ) { /* unele acțiuni */ };

În acest exemplu, din cauza verificării operandului din stânga, nu va apărea niciodată o dereferință de pointer nulă pe operandul din dreapta.

SAU pe biți efectuează operația obișnuită de algebră booleană pe toți biții operandului din stânga și din dreapta în perechi. De exemplu,

dacă
a =
b=
apoi
a SAU b =

Relația cu limbajul natural

Asemănarea dintre disjuncție și conjuncția „sau” în limbajul natural este adesea subliniată atunci când este folosită în sensul „ori aceasta, ori aceea, sau ambele deodată”. În actele juridice, ei scriu adesea: „și (sau)”, uneori „și/sau”, adică „ori asta, ori asta, sau ambele deodată”. Enunțul compus „A și/sau B” este considerat fals atunci când ambele afirmații A și B sunt false, în caz contrar afirmația compusă este adevărată. Aceasta corespunde exact cu definiția disjuncției din algebra booleană, dacă „adevărat” este notat cu , iar „fals” cu .

Ambiguitatea limbajului natural constă în faptul că uniunea „sau” este folosită în două sensuri: fie pentru a desemna disjuncție, apoi pentru o altă operație - disjuncție strictă ( exclusiv „SAU” ).

Vezi și

Note

  1. Gutnikov V. S. . Electronică integrată în instrumentele de măsură. - L . : Energie , 1974. - 144 p.  - S. 14-16.
  2. Kondakov, 1975 , p. 534.
  3. Styazhkin N. I. . Formarea logicii matematice. — M .: Nauka , 1967. — 508 p.  - S. 320, 349, 352, 368.
  4. Russell B.  Mathematical Logic as Based on theory of Types  // Jurnalul American de Matematică . - 1908. - Vol. 30, nr. 3. - P. 222-262.
  5. Primele utilizări ale simbolurilor teoriei și logicii mulțimilor . // Site Web Pagini Web Jeff Miller . Consultat la 5 februarie 2016. Arhivat din original pe 20 februarie 1999.
  6. Kondakov, 1975 , p. 149-150.
  7. Kondakov, 1975 , p. treizeci.
  8. Pratt T. Limbaje de programare: dezvoltare și implementare. — M .: Mir , 1979. — 574 p.  - S. 352, 439.
  9. Grogono P. . Programare in Pascal. — M .: Mir , 1982. — 384 p.  - S. 51.
  10. Wegner P. . Programare în limbajul Ada. — M .: Mir , 1983. — 240 p.  - S. 68.
  11. Ellis M. , Stroustrup B  .. Un ghid de referință pentru limbajul de programare C++ cu comentarii. — M .: Mir , 1992. — 445 p. — ISBN 5-03-002868-4 .  - S. 65, 86-87.
  12. Yablonsky S. V.  . Introducere în matematica discretă. — M .: Nauka , 1979. — 272 p.  - S. 9-10, 37.
  13. Rvachev V. L.  . Teoria funcţiilor R şi unele dintre aplicaţiile acesteia. - Kiev: Naukova Dumka , 1982. - 552 p.  - S. 38, 66.

Literatură