FAV-ZCU/KMA DMA/Příklady/06. Booleovské funkce.md

4.4 KiB

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

Quineho-McCluskeyho metoda

  • minimální disjunktivní forma, součet co nejmenšího počtu součinů

Příklad

ÚDNF: \overline{x} \overline{y} \overline{z} + \overline{x} \overline{y} z + x \overline{y} \overline{z} + x \overline{y} z + x y \overline{z}

x y z f(x,y,z)
0 0 0 1
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 0

Z tabulky vybereme koeficienty tam, kde vychází funkce 1:

  1. 0 0 0
  2. 0 0 1
  3. 1 0 0
  4. 1 0 1
  5. 1 1 0

Z těchto vybraných kombinací vybereme všechny dvojice, které se liší o jednu pozici a tu nahradíme pomlčkou:

  • 1, 2: 0 0 -
  • 1, 3: - 0 0
  • 2, 4: - 0 1
  • 3, 4: 1 0 -
  • 3, 5: 1 - 0

Pokračujeme stejným způsobem:

  • 1, 2, 3, 4: - 0 - ($\overline{y}$)
  • 1, 3, 2, 4: - 0 - (máme dvě stejné, jednu vyškrtneme)
  • pro 3, 5 nezbyla žádná dvojice, přepíšeme tedy do klauzule x \overline{z}

Výsledek je f(x, y, z) = x \overline{z} + \overline{y} (součet prostých implikantů).

  • vynechání některých součinů, takže výsledek je stále roven funkci f

Mějme Booleovy polynomy f, p. Součin literálů je implikantem funkce f, pokud p \leq f. Implikant je prostý, pokud součin vzniklý odstraněním libovolných literálů z p přestane být implikantem f.

Tabulka pokrytí

x y z 1 2 3 4 5 výsledek
1, 2, 3, 4 - 0 - [o] o o o \overline{y}
4, 5 1 - 0 o [o] x \overline{z}

Každý prvek množiny \{ 1, 2, 3, 4, 5 \} musí být obsažen alespoň v jedné množině vybraných podmnožin.

  • minimalizace počtu pokrývajících podmnožin
  • například jedna množina \{ 1, 2, 3, 4 \} a druhá \{ 5 \}, využijeme tedy oba výsledky v tabulce