Logické funkce

Prazdna tabulka, aby fungovaly styly – nemazat 🙁

Logické funkce n-proměnných

  • Logická funkce f:\{0,1\}^n \to \{0,1\} přiřazuje každé kombinaci (x_1,\dots,x_n) právě jednu výstupní hodnotu 0/1.
  • Arita (stupeň) = počet vstupních proměnných n.
  • Počet funkcí
    • Pro n vstupů existuje 2^n různých vstupních kombinací (vektorů)
    • Každé kombinaci přiřadíme výstup 0/1 nezávisle
      • Laicky: Pro každou vstupní kombinaci vytvoříme všechny možné výstupní kombinace
      • Celkem 2^{\,2^n} funkcí pro n proměnných, např.:
        • pro 1 vstup existuje 2^{2^1}=2^2=4 funkcí,
        • pro 2 vstupy existuje 2^{2^2}=2^4=16 funkcí,
        • pro 3 vstupy existuje 2^{2^3}=2^8=256 funkcí.
  • Indexové značení \mathrm{F}_k odpovídá pořadí funkce v tabulce.
    • Toto číslo se shoduje s binární hodnotou čísla vzniklého spojením výstupních hodnot ve sloupcích
      (např. \{0, 1, 1, 0\} = 0110_{(2)}=6)

Poznámky k tabulkám:

Normální forma je matematický zápis v minimální podobě jen z operátorů logického součtu (OR) a součinu (AND). Zde konkrétně se jedná o disjunktní normální formu, kterou budeme probírat později.

Zvýrazněné řádky označují nejpoužívanější funkce pro návrh logických obvodů, které existují i ve formě logických členů (součástek):

  • Unární
    • NOT = „opačná hodnota vstupu“
  • Binární
    • AND = „oba vstupy zároveň“
    • OR = „alespoň jeden vstup“
    • XOR = „vstupy se nerovnají“, „přesně jeden vstup“, „lichý počet vstupů“
    • XNOR = „vstupy se rovnají“, „sudý počet vstupů“
    • NAND = „maximálně jeden vstup“, „nejsou oba vstupy zároveň“
    • NOR = „žádný vstup“

Funkce jedné proměnné – unární (n=1)



Index
Vstup aOperátorNormální formaNázev
01
\mathrm{F}_{0}0000nulová konstanta
\mathrm{F}_{1}01aaidentita
\mathrm{F}_{2}10\lnot a\overline{a}negace / NOT
\mathrm{F}_{3}1111jednotková konstanta

Funkce dvou proměnných – binární (n=2)

Index Vstupní hodnoty Operátor Normální forma Název
a
b
0
0
0
1
1
0
1
1
\mathrm{F}_{0}000000nulová konstanta
\mathrm{F}_{1}0001a \land ba\cdot bkonjunkce / logický součin / AND
\mathrm{F}_{2}0010 a \nRightarrow b a\cdot \overline{b} přímá inhibice
\mathrm{F}_{3}0011aaprojekce na a / identita a
\mathrm{F}_{4}0100 b \nRightarrow a \overline{a}\cdot b zpětná inhibice
\mathrm{F}_{5}0101bbprojekce na b / identita b
\mathrm{F}_{6}0110a \oplus b\overline{a}b+a\overline{b}neekvivalence / exkluzivní součet / XOR
\mathrm{F}_{7}0111a \lor ba+bdisjunkce / logický součet / OR
\mathrm{F}_{8}1000a \downarrow b\overline{a+b}NOR / Piercova funkce
\mathrm{F}_{9}1001a \Leftrightarrow b\overline{a}\,\overline{b}+abekvivalence / XNOR
\mathrm{F}_{10}1010\lnot a\overline{a}negace a
\mathrm{F}_{11}1011 b \Rightarrow a \overline{b}+a zpětná implikace
\mathrm{F}_{12}1100\lnot b\overline{b}negace b
\mathrm{F}_{13}1101 a \Rightarrow b \overline{a}+b přímá implikace
\mathrm{F}_{14}1110a \uparrow b\overline{a \cdot b}NAND / Shefferova funkce
\mathrm{F}_{15}111111jednotková konstanta

Funkce tří proměnných – ternární (n=3)

Funkcí tří proměnných existuje celkem 256. Taková pravdivostní tabulka by byla značně nepraktická a tak je výhodné ji nějakým způsobem zjednodušit. K tomu lze využít zákonů booleovy algebry (které budeme probírat zanedlouho).

Myšlenka je snadná – namísto funkce tří proměnných f(x, y, z) můžeme chytře rozdělit situaci na dva případy:

  • x = 0 – vytvoříme tabulku funkcí f(0, y, z)
  • x = 1– vytvoříme tabulku funkcí f(1, y, z)

V obou případech nám zůstanou dvě proměnné tak můžeme situaci vyřešit pomocí funkcí dvou proměnných, kterých je jen 16.
Dostaneme tedy dvě tabulky po 16 funkcích – celkem 32 funkcí. Matematicky tyto případy spojíme následovně:

f(x, y, z) = x \cdot f(1, y, z) + \overline{x} \cdot f(0, y, z)

Zdůvodnění: Násobení je spojka AND – musí tedy platit současně správná hodnota x a výsledek funkce dvou proměnných. Jednotlivé případy sečteme (spojka OR) – stačí aby platil jeden z případů. Zamyslíme-li se nad tím, nemůžou platit oba současně, protože x nemůže být současně 0 a 1.

Tento postup lze použít i pro funkce více proměnných.