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