Booleovská funkce (nebo logická funkce nebo funkce algebry logiky ) [1] z n argumentů - v diskrétní matematice - zobrazení B n → B , kde B = {0,1} je booleovská množina . Prvky booleovské množiny {1, 0} jsou obvykle interpretovány jako logické hodnoty „true“ a „false“, i když v obecném případě jsou považovány za formální symboly, které nemají konkrétní význam. Nezáporné celé číslo n , označující počet argumentů, se nazývá arita nebo lokalita funkce, v případě n = 0 se booleovská funkce změní na booleovskou konstantu . Prvky kartézského součinu ( n-tá přímá mocnina) B n se nazývají booleovské vektory . Množina všech booleovských funkcí libovolného počtu argumentů je často označována P 2 a n argumentů P 2 ( n ). Proměnné, které přebírají hodnoty z booleovské množiny, se nazývají booleovské proměnné [2] . Booleovské funkce jsou pojmenovány po matematikovi George Boole .
Při práci s booleovskými funkcemi dochází k úplné abstrakci od smysluplného významu, který se předpokládá v algebře výroků [2] . Přesto lze mezi booleovskými funkcemi a formulemi výrokové algebry vytvořit korespondenci jedna ku jedné , pokud [3] :
Každá booleovská funkce arity n je kompletně definována nastavením jejích hodnot na její definiční doménu, tedy na všechny booleovské vektory délky n . Počet takových vektorů je roven 2 n . Protože booleovská funkce může mít na každém vektoru buď 0, nebo 1, počet všech n -árních booleovských funkcí je 2 (2 n ) . Proto jsou v této části uvažovány pouze ty nejjednodušší a nejdůležitější booleovské funkce.
Téměř všechny booleovské funkce nižších arit (0, 1, 2 a 3) dostaly historická jména. Pokud hodnota funkce nezávisí na jedné z proměnných (tedy ve skutečnosti pro libovolné dva booleovské vektory, které se liší pouze hodnotou této proměnné, je hodnota funkce na nich stejná), pak toto proměnná, aniž by hrála nějakou „hodnotu“, se nazývá fiktivní .
Booleovská funkce je definována konečnou množinou hodnot, což umožňuje, aby byla reprezentována jako pravdivostní tabulka , například [4] :
x 1 | x2 _ | … | xn - 1 | x n | f ( x 1 , x 2 , …, x n ) |
---|---|---|---|---|---|
0 | 0 | … | 0 | 0 | 0 |
0 | 0 | … | 0 | jeden | 0 |
0 | 0 | … | jeden | 0 | jeden |
0 | 0 | … | jeden | jeden | 0 |
jeden | jeden | … | 0 | 0 | jeden |
jeden | jeden | … | 0 | jeden | 0 |
jeden | jeden | … | jeden | 0 | 0 |
jeden | jeden | … | jeden | jeden | 0 |
Pro n = 0 se počet booleovských funkcí redukuje na dvě 2 2 0 = 2 1 = 2, první z nich je shodně rovna 0 a druhá 1. Říká se jim booleovské konstanty - shodně nula a shodně jedna .
Tabulka hodnot a názvů null booleovských funkcí:
Význam | Označení | název | |
---|---|---|---|
0 | F0,0 = 0 | identická nula | |
jeden | F0,1 = 1 | identická jednotka, tautologie |
Pro n = 1 je počet booleovských funkcí 2 2 1 = 2 2 = 4. Tyto funkce jsou definovány v následující tabulce.
Tabulka hodnot a názvů booleovských funkcí z jedné proměnné:
x0 = x | jeden | 0 | Označení | název |
---|---|---|---|---|
0 | 0 | 0 | F1,0 = 0 | identická nula |
jeden | 0 | jeden | F1,1 = x = ¬ x = x' = NE(x) | negace, logické "NE", "NE", "NOR", invertor , SWAP (výměna) |
2 | jeden | 0 | F1,2 = x | funkce identity, logické "ANO", opakovač |
3 | jeden | jeden | F1,3=1 | identická jednotka, tautologie |
Pro n = 2 je počet booleovských funkcí 2 2 2 = 2 4 = 16.
Tabulka hodnot a názvů booleovských funkcí ze dvou proměnných:
x0 = x | jeden | 0 | jeden | 0 | Zápis funkce | Název funkce |
---|---|---|---|---|---|---|
x 1 = y | jeden | jeden | 0 | 0 | ||
0 | 0 | 0 | 0 | 0 | F2,0=0 | identická nula |
jeden | 0 | 0 | 0 | jeden | F2,1 = x ↓ y = x NOR y = NOR( x , y ) = x NOR y = NOR ( x , y ) = NE(MAX(X,Y)) | Pierce arrow - "↓" ( Quineova dýka - "†"), Webbova funkce - "°" [5] , NON-OR, 2OR-NOT, antidisjunkce, maximální inverze |
2 | 0 | 0 | jeden | 0 | F2,2 = x > y = x GT y = GT( x , y ) = x → y = x ↛ y | porovnávací funkce "první operand je větší než druhý operand", inverzní k přímé implikaci , koimplikace [6] |
3 | 0 | 0 | jeden | jeden | F2,3 = y = y' = ¬ y = NOT2 ( x , y ) = NOT2 ( x , y ) | negace (negace, inverze) druhého operandu |
čtyři | 0 | jeden | 0 | 0 | F2,4 = x < y = x LT y = LT( x , y ) = x ← y = x ↚ y | porovnávací funkce "první operand je menší než druhý operand", inverzní implikace , inverzní koimplikace [6] |
5 | 0 | jeden | 0 | jeden | F2,5 = x = x' = ¬ x = NOT1( x , y ) = NOT1 ( x , y ) | negace (negace, inverze) prvního operandu |
6 | 0 | jeden | jeden | 0 | F2,6 = x >< y = x <> y = x NE y = NE(x, y) = x ⊕ y = x XOR y = XOR( x , y ) | porovnávací funkce "operandy se nerovnají", sčítání modulo 2 s výjimkou "nebo" , Zhegalkinův součet [7] |
7 | 0 | jeden | jeden | jeden | F2,7 = x | y = x NAND y = NAND( x , y ) = x NAND y = NAND ( x , y ) = NE(MIN(X,Y)) | Schaefferův zdvih , Chulkovova tečkovaná čára [8] , NAND, 2I-NOT, antikonjunkce, minimální inverze |
osm | jeden | 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 ) | konjunkce , 2I, minimum |
9 | jeden | 0 | 0 | jeden | F2.9 = ( x ≡ y ) = x ~ y = x ↔ y = x EQV y = EQV ( x , y ) | srovnávací funkce "operandy se rovnají", ekvivalence |
deset | jeden | 0 | jeden | 0 | F2,10 = ANO1 ( x , y ) = ANO1 ( x , y ) = x | první operand |
jedenáct | jeden | 0 | jeden | jeden | F2,11 = x ≥ y = x >= y = x GE y = GE( x , y ) = x ← y = x ⊂ y | porovnávací funkce "první operand není menší než druhý operand", obrácená implikace (od druhého argumentu k prvnímu) |
12 | jeden | jeden | 0 | 0 | F2,12 = ANO2( x , y ) = ANO2( x , y ) = y | druhý operand |
13 | jeden | jeden | 0 | jeden | F2.13 = x ≤ y = x <= y = x LE y = LE( x , y ) = x → y = x ⊃ y | porovnávací funkce "první operand není větší než druhý operand", přímá (materiální) implikace (z prvního argumentu do druhého) |
čtrnáct | jeden | jeden | jeden | 0 | F2,14 = x ∨ y = x + y = x NEBO y = OR( x , y ) = x OR y = OR( x , y ) = max( x , y ) | disjunkce , 2OR, max |
patnáct | jeden | jeden | jeden | jeden | F2,15=1 | identická jednotka, tautologie |
Se dvěma argumenty jsou prefix , infix a postfixová notace z ekonomického hlediska téměř stejné.
Některé funkce, které dávají smysl v digitální technologii , jako jsou porovnávací funkce, minimum a maximum, nedávají smysl v logice, protože v logice obecně booleovské hodnoty TRUE a FALSE nemají pevnou vazbu na číselné hodnoty (například v TurboBasic , pro zjednodušení některých výpočtů, TRUE = -1 a FALSE = 0) a není možné určit, co je větší než TRUE nebo FALSE, zatímco implikace a další dávají smysl jak v digitální technologii, tak v v logice.
Pro n = 3 je počet booleovských funkcí 2 (2 3 ) = 2 8 = 256. Některé z nich jsou definovány v následující tabulce:
Tabulka hodnot a názvů některých booleovských funkcí ze tří proměnných s vlastním názvem :
x0 = x | jeden | 0 | jeden | 0 | jeden | 0 | jeden | 0 | Notový zápis | Tituly |
---|---|---|---|---|---|---|---|---|---|---|
x 1 = y | jeden | jeden | 0 | 0 | jeden | jeden | 0 | 0 | ||
x 2 \u003d z | jeden | jeden | jeden | jeden | 0 | 0 | 0 | 0 | ||
jeden | 0 | 0 | 0 | 0 | 0 | 0 | 0 | jeden | F3,1 = x ↓ y ↓ z = ↓(x,y,z) = Webb 2 (x,y,z) = NOR(x,y,z) | 3OR-NOT, funkce Webb, Pierceův šíp , Quineova dýka - "†" |
23 | 0 | 0 | 0 | jeden | 0 | jeden | jeden | jeden | F3,23 = = ≥2(x,y,z) | Většinový spínač s inverzí, 3PPB-NE, většinový ventil s inverzí |
71 | 0 | jeden | 0 | 0 | 0 | jeden | jeden | jeden | F3,71= | Podmíněná disjunkce |
126 | 0 | jeden | jeden | jeden | jeden | jeden | jeden | 0 | F3.126 = (x≠y≠z) = [≠(x,y,z)] = NE(x,y,z) | Nerovnost |
127 | 0 | jeden | jeden | jeden | jeden | jeden | jeden | jeden | F3,127 = x|y|z = |(x,y,z) = NAND(x,y,z) | 3I-NE, Schaefferův zdvih |
128 | jeden | 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, minimum |
129 | jeden | 0 | 0 | 0 | 0 | 0 | 0 | jeden | F3.129 = (x=y=z) = [=(x,y,z)] = EQV(x,y,z) | Rovnost |
150 | jeden | 0 | 0 | jeden | 0 | jeden | jeden | 0 | F3,150 = x⊕y⊕z = x⊕ 2 y⊕ 2 z = ⊕ 2 (x,y,z) | Ternární sčítací modul 2 |
216 | jeden | jeden | 0 | jeden | jeden | 0 | 0 | 0 | F3,216 = f 1 | Ternární odčítání výpůjčky |
232 | jeden | jeden | jeden | 0 | jeden | 0 | 0 | 0 | F3,232 = f 2 = [>=2(x,y,z)] = ≥2(x,y,z) = (x AND y) NEBO (y AND z) NEBO (z AND x) | Ternární přídavný nosný bit, majoritní přepínač, 3PPB, majoritní ventil |
254 | jeden | jeden | jeden | jeden | jeden | jeden | jeden | 0 | F3,254 = (x+y+z) = +(x,y,z) = (x OR y OR z) = OR(x,y,z) = (x OR y OR z) = OR(x, y,z) = max(x,y,z) | NEBO, maximum |
Se třemi nebo více argumenty je předponová (a postfixová) notace ekonomičtější než infixová notace.
Obvyklý způsob zápisu funkcí je prefix (před operandy). S infixovým (mezi operandy) zápisem funkcí se funkce nazývají operátory a argumenty funkcí se nazývají operandy.
Výsledek vyhodnocení booleovské funkce lze použít jako jeden z argumentů jiné funkce. Na výsledek takové operace superpozice lze pohlížet jako na novou booleovskou funkci s vlastní pravdivostní tabulkou. Například funkce (superpozice konjunkce, disjunkce a dvou negací) bude odpovídat následující tabulce:
0 | 0 | 0 | jeden | |
0 | 0 | jeden | jeden | |
0 | jeden | 0 | jeden | |
0 | jeden | jeden | jeden | |
jeden | 0 | 0 | 0 | |
jeden | 0 | jeden | 0 | |
jeden | jeden | 0 | jeden | |
jeden | jeden | jeden | 0 |
O množině funkcí se říká, že je uzavřena operací superpozice, pokud je ve stejné množině také zahrnuta jakákoli superpozice funkcí z dané množiny. Uzavřené sady funkcí se také nazývají uzavřené třídy .
Jako nejjednodušší příklady uzavřených tříd booleovských funkcí lze pojmenovat množinu sestávající z jedné identické funkce nebo množinu , z nichž jsou všechny funkce shodně rovny nule, bez ohledu na jejich argumenty. Uzavřená je také množina funkcí a množina všech unárních funkcí. Ale unie uzavřených tříd už taková být nemusí. Například spojením tříd a můžeme pomocí superpozice získat konstantu 1, která v původních třídách chyběla.
Uzavřená je samozřejmě i množina všech možných booleovských funkcí.
Dvě booleovské funkce jsou navzájem identické, pokud mají stejné hodnoty v jakékoli identické sadě argumentů. Identitu funkcí f a g lze zapsat například takto:
Při pohledu na pravdivostní tabulky booleovských funkcí je snadné získat následující identity:
A kontrola tabulek vytvořených pro některé superpozice poskytne následující výsledky:
( de Morganovy zákony ) |
( distributivita konjunkce a disjunkce)
Funkce se nazývá duální funkce if . Je snadné ukázat, že v této rovnosti mohou být f a g zaměněny, to znamená, že funkce f a g jsou navzájem duální. Z nejjednodušších funkcí jsou konstanty 0 a 1 navzájem duální a dualita konjunkce a disjunkce vyplývá z De Morganových zákonů. Identická funkce, stejně jako funkce negace, je sama o sobě duální.
Pokud v booleovské identitě nahradíme každou funkci jejím duálem, dostaneme opět správnou identitu. Ve výše uvedených vzorcích je snadné najít dvojice duální k sobě.
Systém booleovských funkcí se nazývá úplný , pokud je možné sestrojit jejich superpozici, která je shodná s jakoukoli předdefinovanou funkcí. Také říkají, že uzavření daného systému se shoduje se souborem .
Americký matematik Emil Post představil následující uzavřené třídy booleovských funkcí:
Dokázal, že jakákoli uzavřená třída booleovských funkcí, která se neshoduje s, je celá obsažena v jedné z těchto pěti takzvaných předkompletních tříd , ale žádná z těchto pěti není obsažena celá ve spojení ostatních čtyř. Postovo kritérium úplnosti systému se tedy scvrkává na zjištění, zda je celý systém zcela obsažen v jedné z předkompletních tříd. Pokud pro každou třídu v systému existuje funkce, která v ní není obsažena, pak bude takový systém kompletní a pomocí funkcí v něm obsažených bude možné získat jakoukoli jinou booleovskou funkci. Post dokázal, že množina uzavřených tříd booleovských funkcí je spočetná množina .
Všimněte si, že existují funkce, které nejsou zahrnuty v žádné z Postových tříd. Každá taková funkce sama o sobě tvoří kompletní systém. Příklady zahrnují Schaefferův tah nebo Pierceův šíp .
Postův teorém otevírá cestu k reprezentaci booleovských funkcí syntaktickým způsobem, který se v některých případech ukazuje jako mnohem pohodlnější než pravdivostní tabulky. Výchozím bodem je zde najít nějaký kompletní systém funkcí . Pak může být každá booleovská funkce reprezentována nějakým výrazem v podpisu , který se v tomto případě také nazývá vzorec . Ohledně zvoleného systému funkcí je užitečné znát odpovědi na následující otázky:
Kladné odpovědi na tyto a další otázky výrazně zvyšují aplikovanou hodnotu zvoleného systému funkcí.
Jednoduchá konjunkce nebo konjunkce je konjunkce nějaké konečné množiny proměnných nebo jejich negací, přičemž každá proměnná se vyskytuje nejvýše jednou. Disjunktivní normální forma nebo DNF je disjunkce jednoduchých spojek. Elementární konjunkce
Například - je DNF.
Dokonalá disjunktivní normální forma nebo SDNF s ohledem na nějakou danou konečnou množinu proměnných je DNF taková, že každá konjunkce obsahuje všechny proměnné dané množiny a ve stejném pořadí. Například: .
Je snadné vidět, že každá booleovská funkce odpovídá nějakému DNF a jiné funkci, než je identická nula, dokonce i SDNF. K tomu stačí najít v pravdivostní tabulce této funkce všechny booleovské vektory, na kterých je její hodnota rovna 1, a pro každý takový vektor sestrojit spojku , kde . Disjunkce těchto konjunkcí je SDNF původní funkce, protože na všech booleovských vektorech se její hodnoty shodují s hodnotami původní funkce. Například pro implikaci je výsledkem , což lze zjednodušit na .
Konjunktivní normální forma (CNF) je definována duálně k DNF. Jednoduchá disjunkce nebo disjunkce je disjunkce jedné nebo více proměnných nebo jejich negací a každá proměnná je v ní zahrnuta nejvýše jednou. CNF je konjunkce jednoduchých disjunkcí.
Dokonalá konjunktivní normální forma (PCNF) s ohledem na nějakou danou konečnou množinu proměnných je taková CNF, ve které každá disjunkce zahrnuje všechny proměnné této množiny, a to ve stejném pořadí. Protože (C)CNF a (C)DNF jsou vzájemně duální, vlastnosti (C)CNF opakují všechny vlastnosti (C)DNF, zhruba řečeno „přesně naopak“.
CNF lze převést na ekvivalentní DNF otevřením závorek podle pravidla:
který vyjadřuje distributivitu spojky vzhledem k disjunkci. Poté je nutné odstranit opakované proměnné nebo jejich negace v každé konjunkci a také vyřadit z disjunkce všechny konjunkce, ve kterých se proměnná vyskytuje spolu s její negací. V tomto případě výsledek nemusí být nutně SDNF, i když původní CNF byl SKNF. Podobně lze vždy přejít od DNF k CNF. K tomu použijte pravidlo
vyjadřující distributivitu disjunkce vzhledem ke spojce. Výsledek musí být transformován výše popsaným způsobem, přičemž slovo „konjunkce“ se nahradí výrazem „disjunkce“ a naopak.
Algebraická normální forma (v zahraniční literatuře běžný název) nebo Zhegalkinův polynom (název používaný v domácí literatuře) je forma vyjádření logické funkce jako polynom s koeficienty tvaru 0 a 1, ve kterém je spojková operace („AND“ , AND), a jako sčítání - sčítání modulo 2 (výhradně "OR", XOR). Chcete-li získat Zhegalkinův polynom, postupujte takto:
Proměnná booleovské funkce se nazývá podstatná, pokud pro booleovskou funkci existují dvě sady hodnot jejích argumentů, které se liší pouze hodnotou této proměnné a liší se hodnoty booleovské funkce na nich. Pokud se na nich hodnoty této funkce shodují, pak se proměnná nazývá dummy. Proměnná je podstatná tehdy a jen tehdy, když vstupuje do dokonalého DNF booleovské funkce nebo vstupuje do Zhegalkinova polynomu booleovské funkce.
Dvě booleovské funkce se nazývají rovné, pokud jsou množiny jejich základních proměnných stejné a hodnoty funkcí se shodují na jakýchkoli dvou stejných množinách hodnot základních proměnných. [9]
Slovníky a encyklopedie | |
---|---|
V bibliografických katalozích |