✖

Příklady na výrokovou logiku

V článku si ukážeme několik formulí a jejich možná ohodnocení za pomocí tabulkové metody.

První příklad

Zkusíme zjistit, kdy je tato formule pravdivá: ϕ = (p ∧ q) ∨ ¬q. Zapíšeme si do tabulky výrokové symboly p a q:

pq11100100

Dále si do tabulky dopíšeme první část formule: (p ∧ q), negaci ¬q a pak celou formuli:

pqp∧q¬qϕ11100100

Nyní dopočítáme hodnoty pro třetí sloupec, to je jednoduchá konjunkce a zároveň i pro negaci — tam jen dosadíme obrácené hodnoty, než jaké jsou ve druhém sloupečku:

pqp∧q¬qϕ1110100101000001

Nakonec dopočítáme hodnoty v posledním sloupci. To je celá formule. Vzhledem k naší tabulce tak počítáme disjunkci „mezi třetím a čtvrtým sloupcem“. Výsledek:

pqp∧q¬qϕ11101100110100000011

Druhý příklad

Stejné zadání, jiná formule: ϕ = (p ∧ ¬q) ⇔ (¬p ⇒ q). Vidíme, že ve formuli jsou výrokové symboly p a q a jejich negace. Jako první si tak vytvoříme tabulku se dvěma symboly a jejich negacemi:

pq¬p¬q1100100101100011

Dále přidáme formule p ∧ ¬q a ¬p ⇒ q, které už umíme snadno vyhodnotit, protože máme v tabulce jak ohodnocení jednotlivých výroků, tak i jejich negací. Tabulka vypadá takto:

pq¬p¬q(p∧¬q)(¬p⇒q)110001100111011001001100

Jako poslední nám zbývá vyhodnotit celou formuli, což je ekvivalence mezi dvěma posledními sloupci:

pq¬p¬q(p∧¬q)(¬p⇒q)ϕ1100010100111101100100011001

Třetí příklad

Třetí příklad už bude trochu složitější, zkusíme tři výrokové symboly, čímž se výpočet tabulky zesložití. Formule bude vypadat takto: ϕ = (¬(p ⇒ q)) ∧ (r ⇔ (¬p ∨ q)).

Protože tam máme tři výrokové symboly, bude celkový počet variací ohodnocení rovný osmi:

pqr111110101100011010001000

Dále už budeme postupovat stejně jako v předchozím případě, každý sloupeček ohodnotíme ve všech osmi řádcích. Celá tabulka bude vypadat takto:

pqr¬p(p⇒q)(¬p∨q)¬(p⇒q)(r⇔(¬p∨q))ϕ111011010110011000101000100100000111011111010010111000001111010000111000

Čtvrtý příklad

Tento příklad už nezadáme jako obyčejnou formuli, ale jako slovní úlohu. Tři kamarádi, kteří chtějí jít na divokou párty, kde budou modelky nahoře bez rozdávat občerstvení, se nemají tak úplně rádi a kladou si podmínky, za kterých na párty půjdou. Jejich jména jsou Martin, Jakub a Petr. Pravidla jsou následující:

  1. Pokud půjde Martin, tak půjde i Jakub.
  2. Na párty přijde Petr nebo, pokud tam přijde Martin, tak tam nepřijde Jakub.
  3. Petr přijde právě tehdy, když nepřijde Martin nebo nepřijde Jakub.

Otázka zní, jestli můžou na párty přijít všichni? Pokud ne, kdo se na párty může podívat a neporušit žádná pravidla?

Jako první si musíme předchozí slovní výroky přepsat do výrokových symbolů a formulí. Takže označme si výrokové symboly M, J a P (Martin, Jakub, Petr) a bude to vždy značit výrok typu „Martin půjde na párty“. První pravidlo bychom mohli přepsat takto: M ⇒ J — „jestliže M, pak J“, neboli „jestliže Martin půjde na párty, pak Jakub půjde na párty“.

Druhé pravidlo bychom přepsali takto. Pravidlo začíná větou „Na párty přijde Petr nebo…“, takže evidentně budeme potřebovat disjunkci. Zatím zapíšeme toto: P ∨ … Další část věty říká: „pokud tam přijde Martin, tak tam nepřijde Jakub“. To je implikace, přičemž na pravé straně ještě musíme použít negaci. „nepřijde Jakub“ = ¬J. Celá implikace by vypadala takto: M ⇒ ¬J. To připojíme k předchozí disjunkci: P ∨ (M ⇒ ¬J).

Třetí pravidlo přepíšeme takto: začneme s „Petr přijde právě tehdy“. To znamená ekvivalenci: P ⇔ … Dále máme „nepřijde Martin nebo nepřijde Jakub“, což přepíšeme takto: ¬M ∨ ¬J. Složíme dohromady: (P ⇔ (¬M ∨ ¬J)).

Nyní všechny formule vložíme do tabulky a dopočítáme hodnoty:

MJP(M⇒J)(P∨(M⇒¬J))(P⇔(¬M∨¬J))111110110101101011100010011111010110001111000110

Otázka zněla, jestli mohou jít všichni tři chlapci na divoký mejdan. Odpověď nalezneme v prvním řádku. Ten nám odpovídá na případ, kdy všichni chlapci půjdou — to je signalizováno třemi jedničkami v prvních třech sloupcích. Jsou splněny všechny podmínky? První ano (čtvrtý sloupec), druhá také (pátý sloupec), ale poslední ne (poslední sloupec), tam je nula. Znamená to, že pokud půjdou všichni tři, tak nebude splněna třetí podmínka.

Hledáme tak ty řádky, ve kterých jsou na pozicích symbolizujících podmínky (tj. poslední tři sloupce) samé jedničky. Jednička znamená, že je podmínka splněna. Vidíme, že to nastane ve dvou případech. Když půjde Jakub a Petr, ale Martin ne a pak když půjde jen Petr.

Můžete to také vypočítat tak, že do tabulky přidáte formuli ϕ, která bude konjunkcí všech tří podmínek. Takže bude vypadat takto: ϕ = ((M ⇒ J) ∧ (P ∨ (M ⇒ ¬J)) ∧ (P ⇔ (¬M ∨ ¬J))). To znázorňuje to, co chceme — aby byly všechny formule (všechny podmínky) splněné. Tabulka by pak vypadala takto:

MJP(M⇒J)(P∨(M⇒¬J))(P⇔(¬M∨¬J))ϕ11111001101010101011010001000111111010110000111110001100

Pár příkladů na tabulkovou metodu

Protože jsem si napsal program, který umí z dané formule automaticky sestavit celou tabulku, tak ho musím řádně využít a proto následuje ještě pár vyřešených formulí:

Formule: ((a ∧ ¬b) ∨ (b ∧ (b ⇒ a))). Tabulka:

ab(a∧¬b)(b∧(b⇒a))((a∧¬b)∨(b∧(b⇒a)))11011101010100000000

Formule: (a ∨ ¬a) ⇔ (b ∧ ¬b). Tabulka:

ab(a∨¬a)(b∧¬b)((a∨¬a)⇔(b∧¬b))11100101000110000100

Formule: ¬(a ∨ b) ⇔ (¬b ∧ ¬a). Tabulka:

ab¬(a∨b)(¬b∧¬a)(¬(a∨b)⇔(¬b∧¬a))11001100010100100111

Formule: ϕ = (¬p ⇔ (q ∧ r)) ⇒ (p ∨ ¬(p ∧ q)). Tabulka:

pqr(q∧r)¬(p∧q)(¬p⇔(q∧r))(p∨¬(p∧q))ϕ1111001111000111101011111000111101111111010010110010101100001011

Formule: ϕ = ¬(p ⇔ ¬q) ∧ (r ⇒ ¬p) ∧ (p ∨ r). Tabulka:

pqr¬(p⇔¬q)(r⇒¬p)(p∨r)ϕ11110101101111101001010001100110110010010000111110001100

Kapitoly: Výroková logika, Pravdivost formulí, Příklady na výrokovou logiku