***************************
                           *    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ň