# Booleovské funkce


**Definice**: Booleova funkce $n$ proměnných je libovolná funkce (zobrazení) $f: B^n_{2} \to B_{2}$ pro $n \geq 1$.

Může jí být například Booleovská funkce dvou proměnných $+$ nebo  $\cdot$.

Množina $F_{n}$ všech booleovských funkcí n proměnných s uspořádáním $\leq$ daným předpisem $f \leq g$, pokud pro každé $x \in B^n_{2}$ platí $f(x) \leq g(x)$, je Booleova alebra.

Základní booleovské funkce je možné kombinovat do složitějších funkcí.

## Počítání

- $f \vee g \space (x_{1}, x_{2}, \dots, x_{n}) = f(x_{1}, x_{2}, \dots, x_{n}) \vee g(x_{1}, x_{2}, \dots, x_{n})$
- $f \wedge g \space (x_{1}, x_{2}, \dots, x_{n}) = f(x_{1}, x_{2}, \dots, x_{n}) \wedge g(x_{1}, x_{2}, \dots, x_{n})$
- $\overline f (x_{1}, x_{2}, \dots, x_{n}) = \overline{f(x_{1}, x_{2}, \dots, x_{n})}$
## Pravdivostní tabulky

Zapisují se do tabulky, kde je jeden řádek pro každou kombinaci hodnot proměnných.

| $x$ | $y$ | $x+y$ | $x\cdot y$ |
| --- | --- | ----- | ---------- |
| 0   | 0   | 0     | 0          |
| 0   | 1   | 1     | 0          |
| 1   | 0   | 1     | 0          |
| 1   | 1   | 1     | 1          |

| $x$ | $\overline x$ |
| --- | ------------- |
| 0   | 1             |
| 1   | 0             | 

## Booleovské polynomy

**Booleův polynom** v proměnných $x_{1}, x_{2}, \dots, x_{n}$ je každá Booleova funkce, v proměnných $x_{1}, x_{2}, \dots, x_{n}$, která vznikne podle následujících pravidel:
1) konstanty 0 a 1, a každá proměnná $x_{i}, (i=1,\dots,n)$ je Booleův polynom,
2) jsou-li $a, b$ Booleovy polynomy, potom i funkce $\overline a, a \vee b$ a $a \wedge b$ jsou Booleovy polynomy.

Dva Booleovy polynomy jsou si **rovny**, pokud definují tutéž Booleovu funkci.

### Klauzule

Polynomy ve tvaru $y_{1} \vee y_{2} \vee \dots \vee y_{n}$, resp. $y_{1} \wedge y_{2} \wedge \dots y_{n}$, kde $y_{i} = x_{i}$ nebo $y_{i} = \overline{x_{i}}$ se nazývají **spojová**, resp. **průseková klauzule v proměnných** $x_{1}, \dots, x_{n}$. Pro každé $i=1,\dots,n$ nazveme $y_{i}$ **literálem** proměnné $x_{i}$.

- $x_{1} \vee x_{2} \vee \overline{x_{3}} \vee x_{4} \vee \overline{x_{5}}$ - spojová klauzule
- $\overline{x_{1}} \wedge x_{2} \wedge x_{3} \wedge x_{4} \wedge \overline{x_{5}}$ - průseková klauzule
- $x_{1} \vee \overline{x_{2}} \wedge x_{3}$ - ani spojová, ani průseková klauzule

### Formy

O Booleově polynomu, který je **spojením průsekových**, resp. **průsekem spojových** klauzulí říkáme, že je zapsán v **disjunktivní (spojové)** resp. **konjunktivní (průsekové)** **normální formě**.
- značíme **DNF**, resp. **KNF**

+ DNF (spojová): $(x_{1} \wedge \overline{x_{2}}) \vee (x_{1} \wedge x_{3}) \vee (x_{1} \wedge x_{2} \wedge x_{3})$
+ KNF (průseková): $(x_{1} \vee x_{3}) \wedge (x_{2} \vee \overline{x_{3}}) \wedge (x_{1} \vee \overline{x_{2}} \vee \overline{x_{3}})$

Jestliže navíc každá klauzule obsahuje literály všech proměnných, potom tyto formy nazýváme úplnými formami.
- značíme **ÚDNF**, resp. **ÚKNF**

Každou nekonstantní Booleovu funkci n proměnných lze vyjádřit Booleovým polynomem n proměnných v **úplné disjunktivní i konjunktivní normální formě**.

Pozn.: Konstantní Booleova funkce znamená, že funkce nabývá stále hodnoty 0 nebo stále hodnoty 1. Potom lze udělat pouze jednu úplnou normální formu:
- pro 0 konjunktivní (kontradikce)
- pro 1 disjunktivní (tautologie)