O funcție booleană (sau o funcție logică , sau o funcție a algebrei logicii ) [1] de n argumente - în matematică discretă - o mapare B n → B , unde B = {0,1} este o mulțime booleană . Elementele mulțimii booleene {1, 0} sunt de obicei interpretate ca valori logice „adevărat” și „fals”, deși în cazul general sunt considerate simboluri formale care nu poartă o semnificație specifică. Un întreg nenegativ n , care denotă numărul de argumente, se numește aritatea sau localitatea funcției, în cazul lui n = 0, funcția booleană se transformă într-o constantă booleană . Elementele produsului cartezian ( a n- a putere directă) B n se numesc vectori booleeni . Mulțimea tuturor funcțiilor booleene a oricărui număr de argumente este adesea notat cu P 2 , iar a n argumente cu P 2 ( n ). Variabilele care preiau valori dintr-un set boolean se numesc variabile booleene [2] . Funcțiile booleene sunt numite după matematicianul George Boole .
Când se lucrează cu funcții booleene, există o abstractizare completă din sensul semnificativ care este asumat în algebra propozițiilor [2] . Cu toate acestea, o corespondență unu-la-unu poate fi stabilită între funcțiile booleene și formulele de algebră propozițională dacă [3] :
Fiecare funcție booleană a arității n este complet definită prin stabilirea valorilor sale pe domeniul său de definire, adică pe toți vectorii booleeni de lungime n . Numărul de astfel de vectori este egal cu 2 n . Deoarece o funcție booleană poate lua fie 0, fie 1 pe fiecare vector, numărul tuturor funcțiilor booleene n -are este 2 (2 n ) . Prin urmare, în această secțiune sunt luate în considerare doar cele mai simple și mai importante funcții booleene.
Aproape toate funcțiile booleene ale ariităților inferioare (0, 1, 2 și 3) au primit nume istorice. Dacă valoarea funcției nu depinde de una dintre variabile (adică, de fapt, pentru oricare doi vectori booleeni care diferă doar prin valoarea acestei variabile, valoarea funcției pe ei este aceeași), atunci aceasta variabilă, fără a juca vreo „valoare”, se numește fictiv .
O funcție booleană este definită printr-un set finit de valori, care îi permite să fie reprezentată ca un tabel de adevăr , de exemplu [4] :
x 1 | x2 _ | … | xn - 1 | x n | f ( x 1 , x 2 , …, x n ) |
---|---|---|---|---|---|
0 | 0 | … | 0 | 0 | 0 |
0 | 0 | … | 0 | unu | 0 |
0 | 0 | … | unu | 0 | unu |
0 | 0 | … | unu | unu | 0 |
unu | unu | … | 0 | 0 | unu |
unu | unu | … | 0 | unu | 0 |
unu | unu | … | unu | 0 | 0 |
unu | unu | … | unu | unu | 0 |
Pentru n = 0, numărul de funcții booleene se reduce la două 2 2 0 = 2 1 = 2, prima dintre ele este identic egală cu 0, iar a doua este 1. Se numesc constante booleene - identic zero și identic unul .
Tabel de valori și nume ale funcțiilor booleene nule:
Sens | Desemnare | Nume | |
---|---|---|---|
0 | F0,0 = 0 | zero identic | |
unu | F0,1 = 1 | unitate identică, tautologie |
Pentru n = 1, numărul de funcții booleene este 2 2 1 = 2 2 = 4. Aceste funcții sunt definite în tabelul următor.
Tabel de valori și nume ale funcțiilor booleene dintr-o variabilă:
x0 = x | unu | 0 | Desemnare | Nume |
---|---|---|---|---|
0 | 0 | 0 | F1.0 = 0 | zero identic |
unu | 0 | unu | F1,1 = x = ¬ x = x' = NU(x) | negație, logic „NU”, „NU”, „NOR”, invertor , SWAP (schimb) |
2 | unu | 0 | F1,2 = x | funcție de identitate, logic „DA”, repetor |
3 | unu | unu | F1.3=1 | unitate identică, tautologie |
Pentru n = 2, numărul de funcții booleene este 2 2 2 = 2 4 = 16.
Tabel de valori și nume ale funcțiilor booleene din două variabile:
x0 = x | unu | 0 | unu | 0 | Notarea funcției | Numele funcției |
---|---|---|---|---|---|---|
x 1 =y | unu | unu | 0 | 0 | ||
0 | 0 | 0 | 0 | 0 | F2.0=0 | zero identic |
unu | 0 | 0 | 0 | unu | F2,1 = x ↓ y = x NOR y = NOR( x , y ) = x NOR y = NOR ( x , y ) = NOT(MAX(X,Y)) | Săgeată străpunge - „↓” ( pumnalul lui Quine - „†”), funcție Webb - „°” [5] , NON-SAU, 2SAU-NU, antidisjuncție, inversare maximă |
2 | 0 | 0 | unu | 0 | F2,2 = x > y = x GT y = GT( x , y ) = x → y = x ↛ y | funcția de comparație „primul operand este mai mare decât al doilea operand”, inversul implicației directe , coiplicație [6] |
3 | 0 | 0 | unu | unu | F2,3 = y = y' = ¬ y = NOT2( x , y ) = NOT2( x , y ) | negația (negația, inversarea) celui de-al doilea operand |
patru | 0 | unu | 0 | 0 | F2,4 = x < y = x LT y = LT( x , y ) = x ← y = x ↚ y | funcția de comparație „primul operand este mai mic decât al doilea operand”, implicație inversă, coimplicație inversă [6] |
5 | 0 | unu | 0 | unu | F2,5 = x = x' = ¬ x = NOT1( x , y ) = NOT1( x , y ) | negația (negația, inversarea) primului operand |
6 | 0 | unu | unu | 0 | F2,6 = x >< y = x <> y = x NE y = NE(x, y) = x ⊕ y = x XOR y = XOR( x , y ) | funcția de comparație „operanzii nu sunt egali”, adăugarea modulo 2 excluzând „sau” , suma lui Zhegalkin [7] |
7 | 0 | unu | unu | unu | F2.7 = x | y = x NAND y = NAND( x , y ) = x NAND y = NAND ( x , y ) = NOT(MIN(X,Y)) | AVC lui Schaeffer , linia punctată a lui Chulkov [8] , NAND, 2I-NOT, anticonjuncție, inversare minimă |
opt | unu | 0 | 0 | 0 | F2,8 = x ∧ y = x y = xy = x & y = x AND y = AND( x , y ) = x AND y = AND( x , y ) = min ( x , y ) | conjuncție , 2I, minim |
9 | unu | 0 | 0 | unu | F2.9 = ( x ≡ y ) = x ~ y = x ↔ y = x EQV y = EQV( x , y ) | funcția de comparație „operanzii sunt egali”, echivalență |
zece | unu | 0 | unu | 0 | F2,10 = DA1( x , y ) = DA1( x , y ) = x | primul operand |
unsprezece | unu | 0 | unu | unu | F2,11 = x ≥ y = x >= y = x GE y = GE( x , y ) = x ← y = x ⊂ y | funcție de comparație „primul operand nu este mai mic decât al doilea operand”, implicație inversă (de la al doilea argument la primul) |
12 | unu | unu | 0 | 0 | F2,12 = DA2( x , y ) = DA2( x , y ) = y | al doilea operand |
13 | unu | unu | 0 | unu | F2.13 = x ≤ y = x <= y = x LE y = LE( x , y ) = x → y = x ⊃ y | funcția de comparație „primul operand nu este mai mare decât al doilea operand”, implicație directă (materială) (de la primul argument la al doilea) |
paisprezece | unu | unu | unu | 0 | F2,14 = x ∨ y = x + y = x SAU y = SAU( x , y ) = x SAU y = SAU( x , y ) = max( x , y ) | disjuncție , 2OR, max |
cincisprezece | unu | unu | unu | unu | F2.15=1 | unitate identică, tautologie |
Cu două argumente , notația prefix , infix și postfix sunt aproape aceleași din punct de vedere economic.
Unele funcții care au sens în tehnologia digitală , cum ar fi funcțiile de comparație, minime și maxime, nu au sens în logică, deoarece în logică , în general, valorile booleene TRUE și FALSE nu au o legătură solidă cu valorile numerice. (de exemplu, în TurboBasic , pentru a simplifica unele calcule, TRUE = -1 și FALSE = 0) și este imposibil să se determine ce este mai mare decât TRUE sau FALSE, în timp ce implicațiile și altele au sens atât în tehnologia digitală, cât și în logică.
Pentru n = 3, numărul de funcții booleene este 2 (2 3 ) = 2 8 = 256. Unele dintre ele sunt definite în următorul tabel:
Tabel de valori și denumiri ale unor funcții booleene din trei variabile cu nume propriu :
x0 = x | unu | 0 | unu | 0 | unu | 0 | unu | 0 | Notaţie | Titluri |
---|---|---|---|---|---|---|---|---|---|---|
x 1 =y | unu | unu | 0 | 0 | unu | unu | 0 | 0 | ||
x 2 \u003d z | unu | unu | unu | unu | 0 | 0 | 0 | 0 | ||
unu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | unu | F3,1 = x ↓ y ↓ z = ↓(x,y,z) = Webb 2 (x,y,z) = NOR(x,y,z) | 3SAU-NU, funcție Webb, săgeata lui Pierce , pumnalul lui Quine - „†” |
23 | 0 | 0 | 0 | unu | 0 | unu | unu | unu | F3,23 = = ≥2(x,y,z) | Comutator majoritar cu inversare, 3PPB-NE, ventil majoritar cu inversare |
71 | 0 | unu | 0 | 0 | 0 | unu | unu | unu | F3.71= | Disjuncția condiționată |
126 | 0 | unu | unu | unu | unu | unu | unu | 0 | F3.126 = (x≠y≠z) = [≠(x,y,z)] = NE(x,y,z) | Inegalitate |
127 | 0 | unu | unu | unu | unu | unu | unu | unu | F3,127 = x|y|z = |(x,y,z) = NAND(x,y,z) | 3I-NU, accident vascular cerebral Schaeffer |
128 | unu | 0 | 0 | 0 | 0 | 0 | 0 | 0 | F3,128 = x&y&z = &(x,y,z) = (x AND y AND z) = AND(x,y,z) = (x AND y AND z) = AND(x,y,z) = min (x,y,z) | 3I, minim |
129 | unu | 0 | 0 | 0 | 0 | 0 | 0 | unu | F3.129 = (x=y=z) = [=(x,y,z)] = EQV(x,y,z) | Egalitatea |
150 | unu | 0 | 0 | unu | 0 | unu | unu | 0 | F3,150 = x⊕y⊕z = x⊕ 2 y⊕ 2 z = ⊕ 2 (x,y,z) | Adunarea ternară modulo 2 |
216 | unu | unu | 0 | unu | unu | 0 | 0 | 0 | F3.216 = f 1 | Împrumut cu scădere ternară |
232 | unu | unu | unu | 0 | unu | 0 | 0 | 0 | F3,232 = f 2 = [>=2(x,y,z)] = ≥2(x,y,z) = (x AND y) SAU (y AND z) SAU (z AND x) | Bit de transport pentru adăugare ternară, comutator majoritar, 3PPB, supapă majoritară |
254 | unu | unu | unu | unu | unu | unu | unu | 0 | F3,254 = (x+y+z) = +(x,y,z) = (x SAU y SAU z) = SAU(x,y,z) = (x SAU y SAU z) = SAU(x, y,z) = max(x,y,z) | SAU, maxim |
Cu trei sau mai multe argumente, notația prefix (și postfix) este mai economică decât notația infix.
Modul obișnuit de a scrie funcții este prefixul (înainte de operanzi). Cu notația infixă (între operanzi) a funcțiilor, funcțiile sunt numite operatori, iar argumentele funcției sunt numite operanzi.
Rezultatul evaluării unei funcții booleene poate fi folosit ca unul dintre argumentele unei alte funcții. Rezultatul unei astfel de operații de suprapunere poate fi privit ca o nouă funcție booleană cu propria sa tabelă de adevăr. De exemplu, o funcție (suprapunerea conjuncției, a disjuncției și a două negații) va corespunde următorului tabel:
0 | 0 | 0 | unu | |
0 | 0 | unu | unu | |
0 | unu | 0 | unu | |
0 | unu | unu | unu | |
unu | 0 | 0 | 0 | |
unu | 0 | unu | 0 | |
unu | unu | 0 | unu | |
unu | unu | unu | 0 |
Se spune că un set de funcții este închis sub operația de suprapunere dacă orice suprapunere de funcții dintr-o mulțime dată este de asemenea inclusă în aceeași mulțime. Seturile închise de funcții sunt numite și clase închise .
Ca cele mai simple exemple de clase închise de funcții booleene , se poate numi o mulțime formată dintr-o funcție identică, sau o mulțime , toate funcțiile din care sunt identic egale cu zero, indiferent de argumentele lor. Setul de funcții și setul tuturor funcțiilor unare sunt de asemenea închise. Dar unirea claselor închise poate să nu mai fie așa. De exemplu, combinând clasele și , putem folosi suprapunerea pentru a obține constanta 1, care a fost absentă în clasele originale.
Desigur, setul tuturor funcțiilor booleene posibile este de asemenea închis.
Două funcții booleene sunt identice una cu cealaltă dacă iau valori egale pe orice seturi identice de argumente. Identitatea funcțiilor f și g poate fi scrisă, de exemplu, după cum urmează:
Privind tabelele de adevăr ale funcțiilor booleene, este ușor să obțineți următoarele identități:
Și verificarea tabelelor construite pentru unele suprapuneri va da următoarele rezultate:
( legile lui de Morgan ) |
( distributivitatea conjuncției și a disjuncției)
Funcția se numește funcție duală dacă . Este ușor de arătat că în această egalitate f și g pot fi interschimbate, adică funcțiile f și g sunt duale între ele. Dintre cele mai simple funcții, constantele 0 și 1 sunt duale între ele, iar dualitatea conjuncției și disjuncției rezultă din legile lui De Morgan. Funcția identică, ca și funcția de negație, este duală cu ea însăși.
Dacă într-o identitate booleană înlocuim fiecare funcție cu duala ei, obținem din nou identitatea corectă. În formulele de mai sus, este ușor să găsiți perechi duble între ele.
Un sistem de funcții booleene se numește complet dacă este posibil să se construiască suprapunerea lor, care este identică cu orice funcție predefinită. Ei mai spun că închiderea unui sistem dat coincide cu mulțimea .
Matematicianul american Emil Post a introdus următoarele clase închise de funcții booleene:
El a demonstrat că orice clasă închisă de funcții booleene care nu coincide cu este conținută în întregime în una dintre aceste cinci așa-numite clase precomplete , dar niciuna dintre cele cinci nu este conținută în întregime în uniunea celorlalte patru. Astfel, criteriul lui Post pentru completitudinea unui sistem se rezumă la a afla dacă întregul sistem este cuprins în întregime într-una dintre clasele precomplete. Dacă pentru fiecare clasă din sistem există o funcție care nu este inclusă în ea, atunci un astfel de sistem va fi complet și, cu ajutorul funcțiilor incluse în acesta, se va putea obține orice altă funcție booleană. Post a demonstrat că setul de clase închise de funcții booleene este o mulțime numărabilă .
Rețineți că există funcții care nu sunt incluse în niciuna dintre clasele Post. Orice astfel de funcție formează în sine un sistem complet. Exemplele includ lovitura lui Schaeffer sau săgeata lui Pierce .
Teorema lui Post deschide calea pentru reprezentarea funcțiilor booleene într-un mod sintactic care în unele cazuri se dovedește a fi mult mai convenabil decât tabelele de adevăr. Punctul de plecare aici este găsirea unui sistem complet de funcții . Apoi, fiecare funcție booleană poate fi reprezentată printr-un anumit termen din semnătură , care în acest caz este numit și formulă . În ceea ce privește sistemul de funcții ales, este util să cunoaștem răspunsurile la următoarele întrebări:
Răspunsurile pozitive la aceste și alte întrebări cresc semnificativ valoarea aplicată a sistemului de funcții ales.
O conjuncție simplă sau conjuncție este o conjuncție a unui set finit de variabile sau a negațiilor acestora, fiecare variabilă aparând cel mult o dată. Forma normală disjunctivă sau DNF este disjuncția conjuncțiilor simple. Conjuncția elementară
De exemplu - este un DNF.
O formă normală disjunctivă perfectă sau SDNF în raport cu un anumit set finit de variabile este un DNF astfel încât fiecare conjuncție conține toate variabilele mulțimii date și în aceeași ordine. De exemplu: .
Este ușor de observat că fiecare funcție booleană corespunde unui DNF și unei alte funcții decât zeroul identic, chiar și unui SDNF. Pentru a face acest lucru, este suficient să găsiți în tabelul de adevăr al acestei funcții toți vectorii booleeni pe care valoarea sa este egală cu 1 și pentru fiecare astfel de vector să construiți o conjuncție , unde . Disjuncția acestor conjuncții este SDNF-ul funcției originale, deoarece pe toți vectorii booleeni valorile sale coincid cu valorile funcției originale. De exemplu, pentru o implicație , rezultatul este , care poate fi simplificat la .
Forma normală conjunctivă (CNF) este definită dual la DNF. O disjuncție simplă sau disjuncție este o disjuncție a uneia sau mai multor variabile sau a negațiilor acestora și fiecare variabilă este inclusă în ea nu mai mult de o dată. CNF este o conjuncție de disjuncții simple.
O formă normală conjunctivă perfectă (PCNF), în raport cu un anumit set finit de variabile, este un astfel de CNF, în care fiecare disjuncție include toate variabilele acestei mulțimi și în aceeași ordine. Deoarece (C)CNF și (C)DNF sunt reciproc duale, proprietățile (C)CNF repetă toate proprietățile (C)DNF, aproximativ vorbind, „exact opusul”.
CNF poate fi convertit în DNF echivalent prin deschiderea parantezelor conform regulii:
care exprimă distributivitatea conjuncţiei faţă de disjuncţie. După aceea, este necesar să se elimine variabilele repetate sau negațiile lor în fiecare conjuncție și, de asemenea, să se elimine din disjuncție toate conjuncțiile în care variabila apare împreună cu negația ei. În acest caz, rezultatul nu va fi neapărat SDNF, chiar dacă CNF inițial a fost SKNF. În mod similar, se poate trece întotdeauna de la DNF la CNF. Pentru a face acest lucru, utilizați regula
exprimând distributivitatea disjuncției față de conjuncție. Rezultatul trebuie transformat în modul descris mai sus, înlocuind cuvântul „conjuncție” cu „disjuncție” și invers.
Forma normală algebrică (nume comun în literatura străină) sau polinomul Zhegalkin (nume folosit în literatura internă) este o formă de reprezentare a unei funcții logice ca polinom cu coeficienți de forma 0 și 1, în care operația de conjuncție („ȘI” , AND), și ca adunare - adiție modulo 2 (exclusiv "OR", XOR). Pentru a obține polinomul Zhegalkin, procedați după cum urmează:
O variabilă a unei funcții booleene este numită esențială dacă pentru o funcție booleană există două seturi de valori ale argumentelor sale care diferă doar prin valoarea acestei variabile și valorile funcției booleene pe acestea diferă. Dacă valorile acestei funcții coincid cu ele, atunci variabila se numește dummy. O variabilă este esențială dacă și numai dacă intră într-un DNF perfect al unei funcții booleene sau într-un polinom Zhegalkin al unei funcții booleene.
Două funcții booleene se numesc egale dacă seturile variabilelor lor esențiale sunt egale, iar valorile funcțiilor coincid cu oricare două seturi egale de valori ale variabilelor esențiale. [9]
Dicționare și enciclopedii | |
---|---|
În cataloagele bibliografice |