diff --git a/KMA DMA/Otázky ke zkoušce/10. Booleovy algebry.md b/KMA DMA/Otázky ke zkoušce/10. Booleovy algebry.md index 1d01208..b3c3d49 100644 --- a/KMA DMA/Otázky ke zkoušce/10. Booleovy algebry.md +++ b/KMA DMA/Otázky ke zkoušce/10. Booleovy algebry.md @@ -2,7 +2,7 @@ **Distributivní komplementární svaz** se nazývá **Booleův svaz** nebo **Booleova algebra**. -Operace spojení $\wedge$ se značí symbolem $+$, operace průsek symbolem $\cdot$. +Operace spojení $\vee$ se značí symbolem $+$, operace průsek $\wedge$ symbolem $\cdot$. Obsahuje $2^n$ prvků. (2, 4, 8, 16, ...) @@ -27,12 +27,16 @@ Nechť $X$ je Booleova algebra, $a, b, c \in X$. Potom platí: ## Atom Nechť $X$ je Booleova algebra. Nenulový prvek $a \in X$ takový, že pro každý prvek $x \in X, x\neq a$ platí $x \wedge a = 0$ nebo $x \wedge a = a$, se nazývá atom algebry $X$. +- tedy dolní hranice prvku $a$ a libovolného $x$ je tedy $0$ nebo $a$ Atomy existují v každé Booleově algebře. Existovat nemusí pouze v nekonečných Booleových algebrách. Nechť $X$ je Booleova algebra, $x \in X$. Potom existují prvky $y, z \in X$ takové, že $y\neq x, z\neq x,y \vee z = x$ právě tehdy, když $x$ není ani nulový prvek ani atom $X$. +- prvky $x, y, z$ jsou rozdílné a horní hranice $y, z$ je $x$ tehdy, pokud $x$ není nulový ani atom Nechť $X$ je konečná Booleova algebra a $x \in X$ je libovolný nenulový prvek, potom platí, že - $x = a_{1} \vee a_{2} \vee \dots \vee a_{k}$, -kde $a_{1}, \dots, a_{k}$ jsou všechny atomy $X$, pro které $a_{i} \leq x, i =1, \dots, k$. \ No newline at end of file +kde $a_{1}, \dots, a_{k}$ jsou všechny atomy $X$, pro které $a_{i} \leq x, i =1, \dots, k$. + +TODO: 5. přednáška \ No newline at end of file diff --git a/KMA DMA/Otázky ke zkoušce/12. Booleovské funkce.md b/KMA DMA/Otázky ke zkoušce/12. Booleovské funkce.md index 4ae69dc..d2b0d42 100644 --- a/KMA DMA/Otázky ke zkoušce/12. Booleovské funkce.md +++ b/KMA DMA/Otázky ke zkoušce/12. Booleovské funkce.md @@ -1,7 +1,7 @@ # Booleovské funkce -**Definice** -- Booleovská funkce n proměnných je libovolná funkce $f: B^n_{2} \to B_{2}$. + +**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$. @@ -9,6 +9,11 @@ Množina $F_{n}$ všech booleovských funkcí n proměnných s uspořádáním $ 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. @@ -28,7 +33,7 @@ Zapisují se do tabulky, kde je jeden řádek pro každou kombinaci hodnot prom ## 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, každá proměnná $x_{i}, (i=1,\dots,n)$ je Booleův polynom, +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. @@ -46,10 +51,14 @@ Polynomy ve tvaru $y_{1} \vee y_{2} \vee \dots \vee y_{n}$, resp. $y_{1} \wedge 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ě**. -- konstantní Booleova funkce - - 0 ... konjunktivní (kontradikce) - - 1 ... disjunktivní (tautologie) \ No newline at end of file + +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) \ No newline at end of file diff --git a/KMA DMA/Příklady/00. Písemná část.md b/KMA DMA/Příklady/00. Písemná část.md new file mode 100644 index 0000000..24df36d --- /dev/null +++ b/KMA DMA/Příklady/00. Písemná část.md @@ -0,0 +1,17 @@ +# Písemná část zkoušky + +4 úlohy z témat + 4 definice nebo znění vět (90 minut). (Z pojmové části je nutné získat alespoň jeden bod.) + +Homogenní rekurentní rovnice (stanovení řešení) + +Modulární počítání (hodnost matice, soustava rovnic, Eukleidův algoritmus, stanovení inverzního prvku) + +Relace (vlastnosti, reflexívně-tranzitivní uzávěr) + +Uspořádání, svazy, Booleovy algebry (suprema, infima, distributivita, komplementarita, Hasseův diagram) + +Počet koster grafu (Laplaceova matice, incidenční matice orientace grafu) + +Booleovské funkce (ÚDNF, ÚKNF, Quineho-McCluskeyho algoritmus) + +(Vážená) vzdálenost v grafech (mocninná metoda, Dijkstrův algoritmus, Floydův-Warshallův algoritmus) \ No newline at end of file diff --git a/KMA DMA/Příklady/07. Booleovské funkce.md b/KMA DMA/Příklady/07. Booleovské funkce.md new file mode 100644 index 0000000..b130c82 --- /dev/null +++ b/KMA DMA/Příklady/07. Booleovské funkce.md @@ -0,0 +1,34 @@ +# Nalezení UDNF a UKNF + +Př.: $f(x, y) = [\overline{(\overline{x} \wedge y)} \wedge \overline{x}] \vee y = [\overline{(\overline{x} \cdot y)} \cdot x] + y$ + +## 1. Tabulkou + +| $x$ | $y$ | $\overline{x} \wedge y$ | $a = \overline{(\overline{x} \wedge y)}$ | $b = a \wedge \overline{x}$ | $b \vee y$ | +| --- | --- | ----------------------- | ---------------------------------------- | --------------------------- | ---------- | +| 0 | 0 | 0 | 1 | 1 | **1** | +| 0 | 1 | 1 | 0 | 0 | **1** | +| 1 | 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 1 | 0 | **1** | + +Postup +1. vybereme řádky, kde funkce vyšla **1** (**ÚDNF**) nebo **0** (**ÚKNF**) +2. zapisujeme jednotlivé klauzule podle prvků ($x, y, z, \dots$) v řádcích + - prvek zapíšeme jako komplement, pokud je rovna **0** (**ÚDNF**) nebo **1** (**ÚKNF**) + - když je výsledek funkce **1**, čáru napíšeme nad prvkem s hodnotou **0** + +Výsledek +- ÚDNF: $f_{D}(x, y) = (\overline{x} \wedge \overline{y}) \vee (\overline{x} \wedge y) \vee (x \wedge y)$ +- ÚKNF: $f_{K}(x, y) = (\overline{x} \vee y)$ + +## 2. Pomocí Booleovského kalkulusu + +Využijeme pravidel Booleovského kalkulusu a pokusíme se funkci zjednodušit a roznásobit. + +$f(x, y) = [\overline{(\overline{x} \wedge y)} \wedge \overline{x}] \vee y = [(x \vee \overline{y}) \wedge \overline{x}] \vee y = [(x \wedge \overline{x}) \vee (\overline{y} \wedge \overline{x})] \vee y = (\overline{y} \wedge \overline{x}) \vee y = (\overline{y} \vee y) \wedge (\overline{x} \vee y) = \overline{x} \vee y$ +- máme jedinou spojovou klauzuli, ve které je spojení, jedná se tedy o ÚKNF + +Zkusíme získat i ÚDNF: + +$f(x, y) = (\overline{y} \wedge \overline{x}) \vee y = (\overline{y} \wedge \overline{x}) \vee (y \wedge 1) = (\overline{y} \wedge \overline{x}) \vee [y \wedge (\overline{x} \vee x)] = (\overline{y} \wedge \overline{x}) \vee (\overline{x} \wedge y) \vee (x \wedge y)$ +- máme spojení 3 průsekových klauzulí, jedná se tedy o ÚDNF diff --git a/KMA DMA/Příklady/Booleovské funkce.md b/KMA DMA/Příklady/Booleovské funkce.md new file mode 100644 index 0000000..b130c82 --- /dev/null +++ b/KMA DMA/Příklady/Booleovské funkce.md @@ -0,0 +1,34 @@ +# Nalezení UDNF a UKNF + +Př.: $f(x, y) = [\overline{(\overline{x} \wedge y)} \wedge \overline{x}] \vee y = [\overline{(\overline{x} \cdot y)} \cdot x] + y$ + +## 1. Tabulkou + +| $x$ | $y$ | $\overline{x} \wedge y$ | $a = \overline{(\overline{x} \wedge y)}$ | $b = a \wedge \overline{x}$ | $b \vee y$ | +| --- | --- | ----------------------- | ---------------------------------------- | --------------------------- | ---------- | +| 0 | 0 | 0 | 1 | 1 | **1** | +| 0 | 1 | 1 | 0 | 0 | **1** | +| 1 | 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 1 | 0 | **1** | + +Postup +1. vybereme řádky, kde funkce vyšla **1** (**ÚDNF**) nebo **0** (**ÚKNF**) +2. zapisujeme jednotlivé klauzule podle prvků ($x, y, z, \dots$) v řádcích + - prvek zapíšeme jako komplement, pokud je rovna **0** (**ÚDNF**) nebo **1** (**ÚKNF**) + - když je výsledek funkce **1**, čáru napíšeme nad prvkem s hodnotou **0** + +Výsledek +- ÚDNF: $f_{D}(x, y) = (\overline{x} \wedge \overline{y}) \vee (\overline{x} \wedge y) \vee (x \wedge y)$ +- ÚKNF: $f_{K}(x, y) = (\overline{x} \vee y)$ + +## 2. Pomocí Booleovského kalkulusu + +Využijeme pravidel Booleovského kalkulusu a pokusíme se funkci zjednodušit a roznásobit. + +$f(x, y) = [\overline{(\overline{x} \wedge y)} \wedge \overline{x}] \vee y = [(x \vee \overline{y}) \wedge \overline{x}] \vee y = [(x \wedge \overline{x}) \vee (\overline{y} \wedge \overline{x})] \vee y = (\overline{y} \wedge \overline{x}) \vee y = (\overline{y} \vee y) \wedge (\overline{x} \vee y) = \overline{x} \vee y$ +- máme jedinou spojovou klauzuli, ve které je spojení, jedná se tedy o ÚKNF + +Zkusíme získat i ÚDNF: + +$f(x, y) = (\overline{y} \wedge \overline{x}) \vee y = (\overline{y} \wedge \overline{x}) \vee (y \wedge 1) = (\overline{y} \wedge \overline{x}) \vee [y \wedge (\overline{x} \vee x)] = (\overline{y} \wedge \overline{x}) \vee (\overline{x} \wedge y) \vee (x \wedge y)$ +- máme spojení 3 průsekových klauzulí, jedná se tedy o ÚDNF