Ciele
- Naštudovať potrebné pojmy z formálneho aparátu výrokovej logiky.
- Preštudovať vzorové príklady prezentované v rámci teoretickej časti.
- Vypracovať zadané úlohy.
Výroková logika - normálne tvary
Jazyk výrokovej logiky obsahuje mnoho redundancií. Jednotlivé logické spojky sa dajú definovať pomocou iných logických spojok. Opakovaným aplikovaním istých ekvivalencií (zákonov výrokovej logiky) je možné transformovať formulu na jej normálny tvar (niekedy nazývaný aj normálna forma).
Vo všeobecnosti normálny tvar eliminuje isté logické spojky a využíva iba niektoré, v predpísanom a obmedzenom tvare. Takýto tvar formuly umožňuje jej následné jednoduchšie spracovanie, avšak normálny tvar môže byť omnoho väčší ako pôvodná formula.
Normálne tvary vo výrokovej logike:
- Negatívny normálny tvar.
- Disjunktívny normálny tvar.
- Konjunktúrny normálny tvar.
Základné pojmy
Literál (l) - je výroková premenná alebo jej negácia v tvare: p alebo ¬p.
Literály sa nazývajú komplementárne, ak jeden je negáciou druhého.
Elementárna disjunkcia - disjunkcia literálov (nazývaná tiež klauzula) v tvare: $$ l_1 ∨ … ∨ l_n.$$
Elementárna konjunkcia - konjunkcia literálov v tvare: $$ l_1 ∧ … ∧ l_n.$$
Poznámka
Elementárna disjunkcia je tautológia práve vtedy, ak obsahuje komplementárne literály, napríklad:
$$ \underbrace{x ∨ ¬x}_{⊤} ∨ y ∨ ¬z ∨ … ≡ ⊤.$$
Elementárna konjunkcia je kontradikcia práve vtedy, ak obsahuje komplementárne literály, napríklad:
$$\underbrace{x ∧ ¬x}_{⊥} ∧ y ∧ ¬z ∧ … ≡ ⊥.$$
Negatívny normálny tvar (NNF z ang. Negation Normal Form) je formula v ktorej sa vyskytujú len operátory konjunkcie, disjunkcie a zároveň operátor negácie môže byť aplikovaný len na atomické výroky.
Disjunktívny normálny tvar (DNF z ang. Disjunctive Normal Form) je formula v tvare disjunkcií elementárnych konjunkcií: $$ (l_1 ∧ … ∧ l_n) ∨ (l_1 ∧ … ∧ l_m) ∨ … $$
Konjunktívny normálny tvar (CNF z ang. Conjunctive Normal Form) je formula v tvare konjunkcií klauzúl: $$ (l_1 ∨ … ∨ l_n) ∧ (l_1 ∨ … ∨ l_m) ∧ … $$
Poznámka
Atomický výrok $p$, literál $l$, klauzula aj elementárna konjunkcia sú v NNF, DNF, aj CNF.
Formuly ϕ, ψ sú sémanticky ekvivalentné (ϕ ≈ ψ) $$ ϕ(p_1, …, p_n) ≈ ψ(p_1, …, p_n) $$ ak pre každé pravdivostné ohodnotenie výrokových premenných platí, že $$ v(ϕ(p_1, …, p_n)) = v(ψ(p_1, …, p_n)).$$
Formula je v úplnom DNF ak každá elementárna konjunkcia obsahuje všetky výrokové premenné danej formuly.
Formula je v úplnom CNF ak každá elementárna disjunkcia obsahuje všetky výrokové premenné danej formuly.
Formula je v minimálnom DNF/CNF ak obsahuje najmenší počet literálov, elementárnych konjunkcií, alebo elementárnych disjunkcií.
Prepis formuly do normálneho tvaru
Každá formula môže byť prepísaná do ekvivalentného tvaru v NNF, DNF alebo CNF. Existuje viacero algoritmov pre prepis formuly do normálneho tvaru. V rámci tohto cvičenia sa budeme venovať tzv. naivnému prepisu formuly do NNF, DNF, CNF.
Naivný prepis formuly do NNF
je možné vykonať prostredníctvom nasledujúceho algoritmu:
Algoritmus: Prepis formuly $φ$ do NNF
Vstup: Formula výrokovej logiky
Výstup: Ekvivalentná formula výrokovej logiky v NNF
-
- Odstránenie logických ekvivalencií ⇔ a implikácií ⇒ opakovaným aplikovaním nasledujúcich zákonov výrokovej logiky: $$ \begin{align*} φ ⇔ ψ &≡ (φ ⇒ ψ) ∧ (ψ ⇒ φ)\\ φ ⇒ ψ &≡ ¬φ ∨ ψ \end{align*} $$
-
- Odstránenie dvojitej negácie, vloženie negácie do vnútra zátovriek aplikovaním nasledujúcich zákonov výrokovej logiky: $$ \begin{align*} ¬¬φ &≡ φ\\ ¬(φ ∧ ψ) &≡ ¬φ ∨ ¬ψ\\ ¬(φ ∨ ψ) &≡ ¬φ ∧ ¬ψ \end{align*} $$
Príklad
Prepíšte nasledujúcu formulu do NNF: $$ ¬(φ ⇔ ψ) $$
Riešenie
Každý krok prepisu je zvýraznený podčiarknutím textu.
Prvý krok odstránenie ekvivalencie. $$ ¬(\underline{φ ⇔ ψ}) ≡ ¬((φ ⇒ ψ) ∧ (ψ ⇒ φ))$$ Nasleduje odstránenie implikácií. $$ ¬((\underline{φ ⇒ ψ}) ∧ (\underline{ψ ⇒ φ})) ≡ ¬((¬φ ∨ ψ) ∧ (¬ψ ∨ φ))$$ Vloženie negácie do vnútra zátvoriek. $$\underline{¬((¬φ ∨ ψ) ∧ (¬ψ ∨ φ))} ≡ ¬(¬φ ∨ ψ) ∨ ¬(¬ψ ∨ φ)$$ Vloženie negácie do vnútra zátvoriek. $$\underline{¬(¬φ ∨ ψ)} ∨ \underline{¬(¬ψ ∨ φ)} ≡ (¬¬φ ∧ ¬ψ) ∨ (¬¬ψ ∧ ¬φ)$$ Odstránenie dvojitej negácie. $$(\underline{¬¬φ} ∧ ¬ψ) ∨ (\underline{¬¬ψ} ∧ ¬φ) ≡ (φ ∧ ¬ψ) ∨ (ψ ∧ ¬φ)$$ Vysledná formula v NNF: $$(φ ∧ ¬ψ) ∨ (ψ ∧ ¬φ)$$
Naivný prepis formuly do DNF
je možné vykonať prostredníctvom nasledujúceho algoritmu:
Algoritmus: Prepis formuly $φ$ do DNF
Vstup: Formula výrokovej logiky
Výstup: Ekvivalentná formula výrokovej logiky v DNF
-
- Odstránenie logických ekvivalencií $⇔$ a implikácií $⇒$ opakovaným aplikovaním nasledujúcich zákonov výrokovej logiky: $$ \begin{align*} φ ⇔ ψ &≡ (φ ⇒ ψ) ∧ (ψ ⇒ φ)\\ φ ⇒ ψ &≡ ¬φ ∨ ψ \end{align*} $$
-
- Odstránenie dvojitej negácie, vloženie negácie do vnútra zátvoriek aplikovaním nasledujúcich zákonov výrokovej logiky: $$ \begin{align*} ¬¬φ &≡ φ\\ ¬(φ ∧ ψ) &≡ ¬φ ∨ ¬ψ\\ ¬(φ ∨ ψ) &≡ ¬φ ∧ ¬ψ \end{align*} $$
-
- Vloženie konjunkcií do vnútra zátvoriek až kým nie sú aplikované na literály využitím nasledujúcich zákonov výrokovej logiky: $$ \begin{align*} φ ∧ (ψ ∨ θ) &≡ (φ ∧ ψ) ∨ (φ ∧ θ)\\ (ψ ∨ θ) ∧ φ &≡ (ψ ∧ φ) ∨ (θ ∧ φ)\\ (φ ∨ ψ) ∧ (θ ∨ ω) &≡ (φ ∧ θ) ∨ (φ ∧ ω) ∨ (ψ ∧ θ) ∨ (ψ ∧ ω) \end{align*} $$
-
- Zjednodušenie výslednej DNF:
- Odstránením elementárnej konjunkcie, ktorá obsahuje komplementárne literály ($p$ a zároveň $¬p$), keďže takáto elementárna konjunkcia je ekvivalentná $⊥$.
- Odstránením každej elementárnej konjunkcie, ktorá obsahuje inú elementárnu konjunkciu podľa zákona: $$(φ ∧ ψ) ∨ φ ≡ φ.$$
- Dve elementárne konjunkcie v tvaroch $(φ ∧ ψ)$ a $(φ ∧ ¬ ψ)$ zjednodušíme na $φ$: $$(φ ∧ ψ) ∨ (φ ∧ ¬ψ) ≡ φ.$$
Príklad
Prepíšte nasledujúcu formulu do DNF: $$ (φ ⇒ ψ) ⇒ θ $$
Riešenie
Každý krok prepisu je zvýraznený podčiarknutím textu.
Odstránenie implikácie. $$ \underline{(φ ⇒ ψ)} ⇒ θ ≡ (¬φ ∨ ψ) ⇒ θ $$ Odstránenie implikácie. $$ \underline{(¬φ ∨ ψ) ⇒ θ} ≡ ¬(¬φ ∨ ψ) ∨ θ $$ Vloženie negácie do vnútra zátvoriek. $$ \underline{¬(¬φ ∨ ψ)} ∨ θ ≡ (¬¬φ ∧ ¬ψ) ∨ θ $$ Odstránenie dvojitej negácie. $$(\underline{¬¬φ} ∧ ¬ψ) ∨ θ ≡ (φ ∧ ¬ψ) ∨ θ$$ Výsledná formula v DNF: $$(φ ∧ ¬ψ) ∨ θ$$
Naivný prepis formuly do CNF
je možné vykonať prostredníctvom nasledujúceho algoritmu:
Algoritmus: Prepis formuly $φ$ do CNF
Vstup: Formula výrokovej logiky
Výstup: Ekvivalentná formula výrokovej logiky v CNF
-
- Odstránenie logických ekvivalencií $⇔$ a implikácií $⇒$ opakovaným aplikovaním nasledujúcich zákonov výrokovej logiky: $$ \begin{align*} φ ⇔ ψ &≡ (φ ⇒ ψ) ∧ (ψ ⇒ φ)\\ φ ⇒ ψ &≡ ¬φ ∨ ψ \end{align*} $$
-
- Odstránenie dvojitej negácie, vloženie negácie do vnútra zátvoriek aplikovaním nasledujúcich zákonov výrokovej logiky: $$ \begin{align*} ¬¬φ &≡ φ\\ ¬(φ ∧ ψ) &≡ ¬φ ∨ ¬ψ\\ ¬(φ ∨ ψ) &≡ ¬φ ∧ ¬ψ \end{align*} $$
-
- Vloženie disjunkcií do vnútra zátvoriek až kým nie sú aplikované na literály využitím nasledujúcich zákonov výrokovej logiky: $$ \begin{align*} φ ∨ (ψ ∧ θ) &≡ (φ ∨ ψ) ∧ (φ ∨ θ)\\ (ψ ∧ θ) ∨ φ &≡ (ψ ∨ φ) ∧ (θ ∨ φ)\\ (φ ∧ ψ) ∨ (θ ∧ ω) &≡ (φ ∨ θ) ∧ (φ ∨ ω) ∧ (ψ ∨ θ) ∧ (ψ ∨ ω) \end{align*} $$
-
- Zjednodušenie výslednej CNF:
- Odstránením klauzúl, ktoré obsahuje komplementárne literály ($p$ a zároveň $¬p$), keďže takáto klauzula je ekvivalentná $⊤$.
- Odstránením každej elementárnej konjunkcie, ktorá obsahuje inú elementárnu konjunkciu podľa zákona: $$(φ ∨ ψ) ∧ φ ≡ φ.$$
- Dve elementárne disjunkcie v tvaroch $(φ ∨ ψ)$ a $(φ ∨ ¬ ψ)$ zjednodušíme na $φ$: $$(φ ∨ ψ) ∧ (φ ∨ ¬ψ) ≡ φ.$$
Príklad
Prepíšte nasledujúcu formulu do CNF: $$ (φ ⇒ ψ) ⇒ θ $$
Riešenie
Každý krok prepisu je zvýraznený podčiarknutím textu.
Odstránenie implikácie. $$ \underline{(φ ⇒ ψ)} ⇒ θ ≡ (¬φ ∨ ψ) ⇒ θ $$ Odstránenie implikácie. $$ \underline{(¬φ ∨ ψ) ⇒ θ} ≡ ¬(¬φ ∨ ψ) ∨ θ $$ Vloženie negácie do vnútra zátvoriek. $$ \underline{¬(¬φ ∨ ψ)} ∨ θ ≡ (¬¬φ ∧ ¬ψ) ∨ θ $$ Odstránenie dvojitej negácie. $$(\underline{¬¬φ} ∧ ¬ψ) ∨ θ ≡ (φ ∧ ¬ψ) ∨ θ$$ Distribúcia nad disjunkciou: $$\underline{(φ ∧ ¬ψ) ∨ θ} ≡ (φ ∨ θ) ∧ (¬ψ ∨ θ) $$ Výsledná formula v CNF: $$(φ ∨ θ) ∧ (¬ψ ∨ θ)$$
Prepis formuly do úplného normálneho tvaru
Každú výrokovú formulu je možné prepísať na ekvivalentnú formulu v úplnom normálnom tvare. Úplný DNF aj CNF je možné vypísať z pravdivostnej tabuľky.
Príklad
Prepíšte nasledujúcu formulu do úplného DNF a úplného CNF: $$ φ = (p ⇒ q) ⇒ r $$
Riešenie
V prvom kroku je potrebné vytvoriť pravdivostnú tabuľku pre formulu $(p ⇒ q) ⇒ r$:
$p$ | $q$ | $r$ | $p⇒q$ | $\mathbf{φ}$ |
---|---|---|---|---|
1 | 1 | 1 | 1 | 1 |
1 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 0 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 1 |
0 | 1 | 0 | 1 | 0 |
0 | 0 | 1 | 1 | 1 |
0 | 0 | 0 | 1 | 0 |
Úplný disjunktívny normálny tvar:
- Pre riadky v ktorých pravdivostné ohodnotenie $v$ premenných nadobúda hodnotu 1 zapíšeme elementárne konjunkcie v tvare ($\overset{\sim}{p}$ ∧ $\overset{\sim}{q}$ ∧ $\overset{\sim}{r}$) tak, že
- ak $v(p) = 1$, potom $\overset{\sim}{p} = p$,
- ak $v(p) = 0$, potom $\overset{\sim}{p} = ¬p$,
UDNF formuly φ: $$(p ∧ q ∧ r) ∨ (p ∧ ¬ q ∧ r) ∨ (p ∧ ¬q ∧ ¬r) ∨ (¬p ∧ q ∧ r) ∨ (¬p ∧ ¬q ∧ r)$$
Úplný Konjunktívny normálny tvar:
- Pre riadky v ktorých pravdivostné ohodnotenie $v$ premenných nadobúda hodnotu 0 zapíšeme elementárne disjunkcie (klauzuly) v tvare ($\overset{\sim}{p}$ ∧ $\overset{\sim}{q}$ ∧ $\overset{\sim}{r}$) tak, že
- ak $v(p) = 0$, potom $\overset{\sim}{p} = p$,
- ak $v(p) = 1$, potom $\overset{\sim}{p} = ¬p$.
UCNF formuly φ: $$ (¬p ∨ ¬q ∨ r) ∧ (p ∨ ¬q ∨ r) ∧ (p ∨ q ∨ r) $$
Prepis formuly do minimálneho normálneho tvaru
V ďalšom kroku sa budeme venovať určeniu čo najjednoduchšieho tvaru formúl. Takéto tvary sa nazývajú minimálne normálne tvary. K tomu budeme využívať Karnaughove mapy.
Karnaughove mapy predstavujú prehľadný spôsob zjednodušovania booleovských funkcií. Jedná sa o grafické znázornenie pravdivostnej tabuľky, pri ktorom sa využíva ľudská schopnosť rozpoznávať vizuálne objekty.
Karnaughova mapa booleovskej funkcie $n$ premenných je dvojrozmerná tabuľka, ktorá obsahuje $2^n$ buniek. Jednotlivé bunky sú indexované vstupnými premennými. Na základe toho, je možné každej bunke jednoznačne priradiť jeden riadok pravdivostnej tabuľky a vice versa. Ide teda o prehľadný spôsob zápisu príslušnej booleovskej funkcie do tabuľky (mapy). V prípade dvoch premenných sa jedná o mapu veľkosti 2x2, v prípade troch premenných je veľkosť mapy 2x4 a pri štyroch premenných je to 4x4.
Poznámka
Karnaughove mapy pre päť a viac premenných sa využívajú zriedkavo, keďže jednotlivé združovania jednotiek a núl nevytvárajú súvislé obrazce. Napr. pri piatich premenných je potrebné vytvoriť dve mapy o veľkosti 4x4, prípade šiestich sa jedná o štyri mapy o veľkosti 4x4, čo výrazne znižuje prehľadnosť.
Príklad
Prepíšte nasledujúcu formulu do minimálneho DNF a minimálneho CNF: $$ φ = (x ∧ y) ∨ (x ∧ ¬y).$$
Riešenie
Jednou z možností je pokúsiť sa aplikovať zákony výrokovej logiky a prepísať formulu do jej minimálneho normálneho tvaru. V tomto prípade sa jedná o jednoduchú formulu, ktorej minimálny normálny tvar je možné získať aplikovaním zákonov výrokovej logiky nasledovne: $$(x ∧ y) ∨ (x ∧ ¬y) ≡ x ∧ (y ∨ ¬y) ≡ x ∧ ⊤ ≡ x,$$ pričom $x$ je minimálny DNF aj minimálny CNF formuly $φ$.
Pri zložitejších formulách je vhodnejšie využiť Karnaughove mapy. V prvom kroku je potrebné zostrojiť pravdivostnú tabuľku formuly $φ = (x ∧ y) ∨ (x ∧ ¬y)$.
$x$ | $y$ | $x∧y$ | $¬y$ | $x∧¬y$ | $\mathbf{φ}$ |
---|---|---|---|---|---|
1 | 1 | 1 | 0 | 0 | 1 |
1 | 0 | 0 | 1 | 1 | 1 |
0 | 1 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 0 |
V ďalšom kroku je potrebné vytvoriť Karnaughovu mapu. Formula $φ$ obsahuje dve výrokové premenné, čo znamená, že mapa bude obsahovať $2^2$ buniek.
Na obrázku nižšie je zobrazená prázdna Karnaughova mapa formuly (booleovskej funkcie), ktorá obsahuje dve premenné, pričom:
- Horný index mapuje premennú $x$.
- Ľavý index mapuje premennú $y$.
- Pri indexoch je uvedené aké pravdivostné ohodnotenie v daných bunkách nadobúda príslušná premenná.
Karnaughovu mapu pre formulu $φ$ na základe jej pravdivostnej tabuľky je možné zostrojiť nasledujúcim spôsobom. Intuitívne na základe indexov bunka v ľavom hornom rohu reprezentuje pravdivostné ohodnotenie formuly $φ$, pri ohodnotení jej premenných $x=0, y=0$. V tomto prípade na základe pravdivostnej tabuľky zapíšeme do mapy hodnotu 0. Analogicky postupujeme pri ostatných bunkách. Napr. bunka v pravom hornom rohu reprezentuje pravdivostné ohodnotenie premenných $x=1, y=0$, z pravdivostnej tabuľky zapíšeme do mapy hodnotu 1.
V takto vytvorenej mape pokračujeme združovaním ("krúžkovaním") jednotiek resp. núl. Týmto určime jednotlivé konjunkcie resp. disjunkcie. Združovaním vytvárame štvorce resp. obdĺžniky o veľkosti $2^n$ (počet buniek). Cieľom je vytvoriť čo najväčšie štvorce resp. obdĺžniky. Môže nastať prípad, že jednotka resp. nula je samostatne združená (stále platí definícia veľkosti, keďže $2^0=1$). Združovanie vykonávame pokiaľ každá jednotka, resp. nula nie je pokrytá v združení a zároveň aby počet združení bol minimálny. Čím viac jednotiek resp. núl je združených, tým menší je výsledný konjunkt, resp. disjunkt. Zároveň časti združení sa môžu prekrývať.
Pri výpise MDNF postupujeme nasledovne.
- Hľadáme združenia jednotiek a vpisujeme odpovedajúce konjunkty. Ak združenie zasahuje do celého rozsahu pravdivostného ohodnotenia danej premennej, danú premennú vypíšeme do konjunktu v tvare $\overset{\sim}{p} ∧ … ∧ \overset{\sim}{r}$, tak že:
- ak $v(p) = 1$, potom $\overset{\sim}{p} = p$,
- ak $v(p) = 0$, potom $\overset{\sim}{p} = ¬p$.
- V prípade, že združenie zasahuje do oboch pravdivostných ohodnotení danej premennej, túto premennú pri výpise vynechávame.
V našej mape na obrázku vyššie, máme iba jedno združenie jednotiek, ktoré zasahuje do pravdivostného ohodnotenia $1$ premennej $x$. To znamená, že MDNF formuly $φ$ bude obsahovať iba jeden konjunkt v tvare: $$x.$$
Pri výpise MCNF postupujeme nasledovne.
- Hľadáme združenia núl a vypisujeme odpovedajúce disjunkty. Ak združenie zasahuje do celého rozsahu pravdivostného ohodnotenia danej premennej, danú premennú vypíšeme do disjunktu v tvare $\overset{\sim}{p} ∨ … ∨ \overset{\sim}{r}$, tak že:
- ak $v(p) = 1$, potom $\overset{\sim}{p} = ¬p$,
- ak $v(p) = 0$, potom $\overset{\sim}{p} = p$.
- V prípade, že združenie zasahuje do oboch pravdivostných ohodnotení danej premennej, túto premennú pri výpise vynechávame.
V našej mape na obrázku vyššie, máme iba jedno združenie núl, ktoré zasahuje do pravdivostného ohodnotenia $0$ premennej $x$. To znamená, že MCNF formuly $φ$ bude obsahovať iba jeden disjunkt v tvare: $$x.$$
Poznámka
Formula môže mať viacero minimálnych normálnych tvarov.
- V prípade formuly, ktorá je tautológia MDNF a MCNF je ⊤.
- V prípade formuly, ktorá je kontradikcia MDNF a MCNF je ⊥.
Príklad
Prepíšte nasledujúcu formulu do minimálneho DNF a minimálneho CNF: $$ ψ = (p ⇒ q) ⇒ r.$$
Riešenie
- Vytvorenie pravdivostnej tabuľky pre formulu $ψ$:
$p$ | $q$ | $r$ | $p⇒q$ | $\mathbf{ψ}$ |
---|---|---|---|---|
1 | 1 | 1 | 1 | 1 |
1 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 0 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 1 |
0 | 1 | 0 | 1 | 0 |
0 | 0 | 1 | 1 | 1 |
0 | 0 | 0 | 1 | 0 |
- Zostrojenie a vyplnenie Karnaughovej mapy podľa pravdivostnej tabuľky.
Karnaughova mapa formuly $ψ$
- V ďalšom kroku je potrebné v mape vyznačiť združenia jednotiek a núl.
Karnaughova mapa formuly $ψ$ so združeniami
- Výpis MDNF a MCNF formuly $ψ$:
-
MDNF výsledné elementárne disjunkcie:
- Bordové združenie - $r$.
- Zelené združenie - $p ∧ ¬q$.
-
MDNF výsledná formula: $$r ∨ (p ∧ ¬q).$$
-
MCNF výsledné klauzuly:
- Modré združenie - $r ∨ p$.
- Žlté združenie - $¬q ∨ r$.
-
MCNF výsledná formula: $$(r ∨ p) ∧ (¬q ∨ r).$$
Príklad
Nájdite úplné a minimálne CNF a DNF formuly $ω$: $$ ω = (p ⇒ q) ⇒ r ∨ s.$$
Riešenie
- Vytvorenie pravdivostnej tabuľky pre formulu $ψ$:
$p$ | $q$ | $r$ | $s$ | $\mathbf{ω}$ |
---|---|---|---|---|
1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 0 | 1 |
1 | 1 | 0 | 1 | 1 |
1 | 1 | 0 | 0 | 0 |
1 | 0 | 1 | 1 | 1 |
1 | 0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 0 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 1 |
0 | 1 | 1 | 0 | 1 |
0 | 1 | 0 | 1 | 1 |
0 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 1 |
0 | 0 | 1 | 0 | 1 |
0 | 0 | 0 | 1 | 1 |
0 | 0 | 0 | 0 | 0 |
- Výpis úplných normálnych tvarov:
- Úplný konjunktívny normálny tvar formuly $ω$: $$(¬p ∨ ¬q ∨ r ∨ s) ∧ (p ∨ ¬q ∨ r ∨ s) ∧ (p ∨ q ∨ r ∨ s)$$
- Úplný disjunktívny normálny tvar formuly $ω$:
$$ \begin{array} ~(p ∧ q ∧ r ∧ s) ∨ (p ∧ q ∧ r ∧ ¬s) ∨ (p ∧ q ∧ ¬r ∧ s) ∨ (p ∧ ¬q ∧ r ∧ s)\\ ∨~(p ∧ ¬q ∧ r ∧ ¬s) ∨ (p ∧ ¬q ∧ ¬r ∧ s) ∨ (p ∧ ¬q ∧ ¬r ∧ ¬s) ∨ (¬p ∧ q ∧ r ∧ s)\\ ∨~(¬p ∧ q ∧ r ∧ ¬s) ∨ (¬p ∧ q ∧ ¬r ∧ s) ∨ (¬p ∧ ¬q ∧ r ∧ s) ∨ (¬p ∧ ¬q ∧ r ∧ ¬s)\\ ∨~(¬p ∧ ¬q ∧ ¬r ∧ s) \end{array} $$
- Zostrojenie a vyplnenie Karnaughovej mapy podľa pravdivostnej tabuľky.
Karnaughova mapa formuly $ω$
- V ďalšom kroku je potrebné v mape vyznačiť združenia jednotiek a núl.
Karnaughova mapa formuly $ω$ so združeniami
- Výpis MDNF a MCNF formuly $ω$:
-
MDNF výsledné elementárne disjunkcie:
- Žlté združenie - $p ∧ ¬q$.
- Modré združenie - $s$.
- Fialové združenie - $r$.
-
MDNF výsledná formula: $$(p ∧ ¬q) ∨ s ∨ r.$$
-
MCNF výsledné klauzuly:
- Bordové združenie - $p ∨ r ∨ s$.
- Zelené združenie - $¬q ∨ r ∨ s$.
-
MCNF výsledná formula: $$(p ∨ r ∨ s) ∧ (¬q ∨ r ∨ s).$$
Tseitinová transformácia
Majme formulu $$φ_n = (p_1 ∧ q_1) ∨ (p_2 ∧ q_2) ∨ … ∨ (p_n ∧ q_n),$$ kde $n \in \mathbb{N}$. Prostredníctvom De Morganových zákonov a distributívneho zákona výrokovej logiky je možné previesť formulu $φ_n$ na $φ_n'$ v CNF. Avšak takýto prístup vytvorí formulu $φ_n'$, ktorá bude pozostávať z $2^n$ klauzúl, čo znamená exponenciálny nárast veľkosti formuly oproti pôvodnej formule $φ_n$. Napríklad ak $n=10$, potom $φ_{10}'$ pozostáva z $1024$ klauzúl, ak $n=20$ potom $φ_{20}'$ pozostáva z $1048576$ klauzúl. Inymi slovami, každá inkrementácia $n$ o jeden, vyústi do dvojnásobnej veľkosti výslednej formuly.
Algoritmus vyššie môže v najhoršom prípade zvačšiť formulu exponenciálne. Grigorij Samuilovitsch Tseitin (Григорий Самуилович Цейтин) navrhol algoritmus známy ako Tseitinová transformácia. Tento algoritmus berie ako vstup formulu $φ$ a vytvorí $φ'$ v CNF, ktorej veľkosť sa zväčší lineárne. Na rozdiel od predchádzajúceho algoritmu je však medzi $φ$ a $φ'$ slabšie spojenie. Vo všeobecnosti je zaručené $φ$ a $φ'$ budú ekvisplniteľné a nie ekvivalentné.
Ekvisplniteľnosť dvoch formúl: dve formuly sú ekvisplniteľné vtedy, ak prvá formula je splniteľná vtedy, tak aj druhá formula je splniteľná a vice versa. Inými slovami, buď sú splniteľné obidve formuly, alebo nie sú splniteľné obidve formuly. Avšak ekvisplniteľné formuly pri konkrétnom pravdivostnom ohodnotení premenných nemusia mať rovnakú výslednú pravdivostnú hodnotu. To znamená, že ekvisplniteľnosť je odlišná od logickej sémantickej ekvivalencie, keďže dve ekvivalentné formuly majú vždy rovnaké výsledné pravdivostné hodnoty, pri rovnakom pravdivostnom ohodnotení premenných.
Príklad
Výroková formula $$ a ∨ b,$$ môže byť transformovaná ako $$(a ∨ n)∧(b \vee ¬n),$$ kde $n$ je nová výroková premenná, pri ktorej je zachovaná splniteľnosť. Pôvodná a výsledná formula sú ekvisplniteľné.
Poznámka
Dve formuly, ktoré sú ekvivalentné sú aj ekvisplniteľné.
Pri Tseitinovej transformácii platí, že pre akékoľvek formulu $φ \in Prop$ existuje formula $φ'$, taká že:
- $φ$ a $φ'$ su ekvisplniteľné,
- $φ'$ je v CNF,
- $size(φ')≤ 16 × size(φ)$ (výsledná formula nie omnoho vačšia),
- akékoľvek pravdivostné ohodnotenie $φ'$ je taktiež pravdivostné ohodnotenie pre $φ$.
To znamená, že z každého modelu výslednej formuly $φ'$ je možné extrahovať model formuly $φ$.
Tseitinová transformácia - algoritmus
Algoritmus: Tseitinová transformácia
Vstup: Formula výrokovej logiky $φ$
Výstup: Ekvisplniteľné formula výrokovej logiky $φ'$ v CNF
- Výpočet abstraktného syntaktického stromu $ast(φ)$.
- Priradenie novej premennej každému internému uzlu.
- Označenie listov premennou, ktorú obsahuje daný list.
- Formula $φ'$ bude konjunkcia klauzúl, pričom v každý vnútorný uzol bude obsahovať dve alebo tri klauzuly.
- Ak je uzol negácia v tvare:
- Ak uzol je konjunkcia v tvare:
- Ak uzol je disjunkcia v tvare:
- Ak uzol je implikácia v tvare:
- V poslednom kroku pridáme do výslednej $φ'$ klauzulu, ktorá pozostáva z premennej priradenej koreňovému uzlu.
Tseitinová transformácia - príklad
Príklad
Využitím Tseitinovej transformácie preveďte formulu $φ$ na ekvisplniteľný tvar v CNF: $$ φ = ¬(p ∧ (q ∨ ¬r)).$$
Riešenie
- Vytvorenie abstraktného syntaktického stromu $φ$ a označenie príslušných uzlov novými premennými $x_1,x_2,x_3,x_4$:
- Výpis ekvivalencií a ich prevod na CNF:
-
Začíname koreňom stromu t.j. uzlom $x1$, ktorý obsahuje negáciu.
- Výsledná ekvivalencia $$x1 ⇔ ¬x2.$$
- Prevod na CNF: $$(x1 \vee x2) \wedge (\neg x1 \vee \neg x2).$$
-
Uzol stromu $x2$, obsahuje konjunkciu.
- Výsledná ekvivalencia $$x2 ⇔ p ∧ x3.$$
- Prevod na CNF: $$(\neg x2 \vee p) \wedge (\neg x2 \vee x3) \wedge (\neg p \vee \neg x3 \vee x2) .$$
-
Uzol stromu $x3$, obsahuje konjunkciu.
- Výsledná ekvivalencia $$x3 ⇔ q ∨ x4.$$
- Prevod na CNF: $$(\neg q \vee x3) \wedge (\neg x4 \vee x3) \wedge (\neg x3 \vee q \vee x4) .$$
-
Posledný uzol stromu $x4$, obsahuje negáciu.
- Výsledná ekvivalencia $$x4 ⇔ ¬r.$$
- Prevod na CNF: $$(x4 \vee r) \wedge (\neg x4 \vee \neg r) .$$
- Na záver pre získanie výsledku je potrebné pridať koreňovú klauzulu do výslednej formuly (v našom prípade $x1$).
$$ \begin{array} ~(x1 \vee x2) \wedge (\neg x1 \vee \neg x2) \\ ∧\\ (\neg x2 \vee p) \wedge (\neg x2 \vee x3) \wedge (\neg p \vee \neg x3 \vee x2)\\ ∧\\ (\neg q \vee x3) \wedge (\neg x4 \vee x3) \wedge (\neg x3 \vee q \vee x4)\\ ∧\\ (x4 \vee r) \wedge (\neg x4 \vee \neg r)\\ ∧\\ x1 \end{array} $$
Poznámka
Po rozkliknutí riešenia nižšie, sú uvedené pravdivostné tabuľky oboch formúl. Všimnite si, že v transformovanej formule existuje iba päť riadkov pri ktorých nadobúda formula pravdivostné ohodnotenie 1 (v tabuľke zvýraznené tučným písmom). Porovnajte ich s pravdivostnou tabuľkou pôvodnej formuly.
Riešenie
- Pôvodná formula $φ$: $$φ=¬(p ∧ (q ∨ ¬r))$$ Pravdivostná tabuľka:
p | q | r | φ |
---|---|---|---|
0 | 0 | 0 | 1 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 0 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 0 |
1 | 1 | 1 | 0 |
- Transformovaná formula $T(φ)$: $$ \begin{array} ~(x1 \vee x2) \wedge (\neg x1 \vee \neg x2) \\ ∧\\ (\neg x2 \vee p) \wedge (\neg x2 \vee x3) \wedge (\neg p \vee \neg x3 \vee x2)\\ ∧\\ (\neg q \vee x3) \wedge (\neg x4 \vee x3) \wedge (\neg x3 \vee q \vee x4)\\ ∧\\ (x4 \vee r) \wedge (\neg x4 \vee \neg r)\\ ∧\\ x1 \end{array} $$ Pravdivostná tabuľka:
p | q | r | x1 | x2 | x3 | x4 | T($φ$) |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 |
0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 |
0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 |
0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 |
0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 |
0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 |
0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 |
0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
0 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |
1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 |
1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 |
1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 |
1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 |
1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 |
1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 |
1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 |
1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
Postup
Krok 1: Prostredníctvom naivneho algoritmu nájdite DNF a CNF nasledujúcich formúl.
Úloha 1.1
$$ (a ⇒ b) ∧ c $$
Riešenie
- DNF: $(¬a ∧ c) ∨ (b ∧ c)$
- CNF: $(\neg a \lor b) \land c$
Úloha 1.2
$$ a ⇒ (b ∧ c) $$
Úloha 1.3
$$ a ⇒ (b ⇒ c) $$
Úloha 1.4
$$ ((¬x ⇒ y) ∧ x ∧ y) ∧ (x ∨ ¬y) $$
Úloha 1.5
$$ p ⇒ q ∧ r ∨ ¬s $$
Krok 2: Nájdite úplne DNF a CNF nasledujúcich formúl.
Úloha 2.1
$$ (a ⇒ b) ∧ c $$
Riešenie
- DNF: $(a ∧ b ∧ c) ∨ (¬a ∧ b ∧ c) ∨ (¬a ∧ ¬b ∧ c)$
- CNF: $(¬a ∨ ¬b ∨ c) ∧ (¬a ∨ b ∨ ¬c) ∧ (¬a ∨ b ∨ c) ∧ (a ∨ ¬b ∨ c) ∧ (a ∨ b ∨ c)$
Úloha 2.2
$$ a ⇒ (b ∧ c) $$
Úloha 2.3
$$ a ⇒ (b ⇒ c) $$
Úloha 2.4
$$ ((¬x ⇒ y) ∧ x ∧ y) ∧ (x ∨ ¬y) $$
Úloha 2.5
$$ p ⇒ q ∧ r ∨ ¬s $$
Krok 3: Nájdite minimálne DNF a CNF nasledujúcich formúl.
Úloha 3.1
$$ (a ⇒ b) ∧ c $$
Riešenie
- DNF: $(a \land c) \lor (\neg b \land c)$
- CNF: $(\neg a \lor b) \land c$
Úloha: $$ a ⇒ (b ∧ c) $$
Úloha 3.2
$$ a ⇒ (b ⇒ c) $$
Úloha 3.3
$$ ((¬x ⇒ y) ∧ x ∧ y) ∧ (x ∨ ¬y) $$
Úloha 3.4
$$ p ⇒ q ∧ r ∨ ¬s $$
Krok 4: Využitím Tseitinovej transformácie preveďte nasledujúce formuly na ich ekvisplniteľný tvar v CNF.
Úloha 4.1
$$ (a ⇒ b) ∧ c $$
Riešenie
- $(x1 ⇔ (x2 ∧ c)) ≡ (¬x2 ∨ ¬c ∨ x1) ∧ (¬x1 ∨ x2) ∧ (¬x1 ∨ c)$
- $(x2 ⇔ (a ⇒ b)) ≡ (a ∨ x2) ∧ (¬b ∨ x2) ∧ (¬x2 ∨ ¬a ∨ b)$
Transformovaná formula: $$ \begin{array} ~(¬x2 ∨ ¬c ∨ x1) ∧ (¬x1 ∨ x2) ∧ (¬x1 ∨ c) \\ ∧\\ (a ∨ x2) ∧ (¬b ∨ x2) ∧ (¬x2 ∨ ¬a ∨ b)\\ ∧\\ x1 \end{array} $$
Úloha 4.2
$$ a ⇒ (b ∧ c) $$
Úloha 4.3
$$ a ⇒ (b ⇒ c) $$
Úloha 4.4
$$ p ⇒ q ∧ r ∨ ¬s $$