***************************
* UMĚLÁ INTELIGENCE *
* 2. část *
***************************
Nazdar. Jak jsem minule slíbil, budu tady teď cosi vykládat o výrokové
logice. Celkově vzato, pokud bych to měl probrat celý, padla by na to
zhruba polovička délky Výhně a navíc by to nebavilo ani vás, ani mě. Čili,
všechno, co se tady dozvíte je jenom úplný základ, který je nutný
k pochopení jazyka predikátové logiky 1. řádu, o němž budu mluvit někdy
příště. Jenom pro úplnost, výroková logika nepatří do umělé inteligence,
kdežto predikáty ano.
Každé tvrzení, o kterém má smysl říct, jestli je pravdivé nebo
nepravdivé se nazývá výrok (např. "Marky má mozek" - to je výrok, ale
u spojení "má mozek" nelze určit pravdivost, či nepravdivost - neznáme
objekt, jehož se to týká). Hodnota výroku (častěji pravdivostní hodnota)
může tedy v této sféře logiky být buď pravda, nebo nepravda, ale protože
je to jednak děsně dlouhý a navíc to ještě příšerně zní, tak se používá
anglického označení TRUE, příp. FALSE (zkracováno na T a F). Z toho tedy
vyplývá, že výroková logika nezkoumá vnitřní strukturu daného výroku na
rozdíl od logiky predikátové a nezabývá se také problémem, jak tuto
pravdivostní hodnotu získat (to řeší až algoritmy AI - pro ty
sklerotičtější to znamená Artificial Intelligence , tedy nadpis).
Z jednotlivých elementárních výroků se dají vytvořit složené výroky
pomocí tzv. logických spojek. Je jich pět a jsou to: >, +, ^, ≡, v a
používají se k definicím logických funkcí, kterých je také pět: negace,
konjunkce, disjunkce, implikace a ekvivalence.
Výrok +A (kde A je výrok) nazýváme negace výroku A. Výrok +A má hodnotu
TRUE, jestliže má výrok A hodnotu FALSE a naopak.
Tabulka pravdivostních hodnot
+-----+-----+
| A | +A |
+-----+-----+
| 0 | 1 |
| 1 | 0 |
+-----+-----+
Zapomněl jsem říct, že místo FALSE (nebo F) se taky používá 0 a 1 pro
TRUE a vzhledem k tomu, že je to nejpřehlednější označení, ho budu taktéž
užívati.
Konjunkcí výroků A a B je výrok A^B. Konjunkce má hodnotu TRUE, mají-li
hodnotu TRUE oba výroky, jinak má hodnotu FALSE.
Tabulka hodnot
+-----+-----+-------+
| A | B | A^B |
+-----+-----+-------+
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
+-----+-----+-------+
Disjunkce výroků A a B se zapisuje jako AvB a má hodnotu FALSE pouze v
případě, kdy mají oba výroky, A i B, hodnotu 0.
Pravdivostní hodnoty
+-----+-----+-------+
| A | B | AvB |
+-----+-----+-------+
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
+-----+-----+-------+
Výrok A>B nazýváme implikace výroků A a B, kde A je přední člen
implikace (tzv. antecendent) a B je zadní člen implikace (konsekvent).
Implikace nabývá stejných hodnot jako výrok +(A^(+B)). Implikace má
hodnotu FALSE, je-li přední člen pravdivý a zadní nikoli, jinak je
pravdivá.
Pravdivostní tabulka implikace
+-----+-----+-------+
| A | B | A>B |
+-----+-----+-------+
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
+-----+-----+-------+
No, a poslední je ekvivalence výroků A a B, která se zapisuje jako A≡B
a nabývá stejných pravdivostních hodnot jako výrok (A>B)^(B>A), čili má
hodnotu TRUE pouze za předpokladu, že A i B mají stejnou hodnotu.
Tabulka ekvivalence
+-----+-----+-------+
| A | B | A≡B |
+-----+-----+-------+
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
+-----+-----+-------+
Úplně nakonec části o výrokové logice se ještě zmíním o určování hodnot
složených výroků. Aby bylo možno určit, zda je daný výrok pravdivý či
nepravdivý, musela se nejprve zavést priorita jednotlivých logických
funkcí, která byla později stanovena takto (od nejvyšší dolů): +, ^, v, >,
≡, přičemž se samozřejmě berou v úvahu závorky. Tedy výrok A^+B>C≡AvC
upravíme podle priorit takto: ((A^(+B))>C)≡(AvC). Tabulku hodnot se mi
nechtělo dělat, protože tabulka každého výroku má přesně 2^k řádek, kde k
je počet výrokových proměnných (výr. proměnná je symbolické označení
libovolného výroku - v našem případě jsou to A,B a C). Mimochodem, způsob
určování hodnot výroků pomocí tabulky se jmenuje sémantická metoda.
Fatal Error
výheň