Karnaughovy mapy Metoda je použitelná již pro dvě vstupní proměnné, své opodstatnění ale nachází až s větším počtem vstupů, kdy návrh takového výrazu přestává být triviální. Prvním krokem k sestavení logického výrazu je příprava pravdivostní tabulky. Každý ze sloupců pravdivostní tabulky představuje jednu vstupní nebo výstupní proměnnou. Pojmenujme si tyto proměnné Xn. Kde n bude pořadové číslo proměnné. Budeme-li tedy chtít sestavit logickou funkci se třemi vstupními a jednou výstupní proměnnou, naše tabulka bude mít čtyři sloupce. Obvykle sloupce řadíme podle čísla n sestupně, tzn. proměnná X s nejvyšším n bude v prvním sloupci tabulky a X1 naopak v posledním. Sloupce pro výstupní proměnné (pojmenujme si je Y) umístíme za sloupce vstupních proměnných. Tabulka má tolik řádků, kolik různých kombinací mohou vstupní proměnné vytvořit - toto číslo lze vypočítat umocněním čísla 2 (počet možných stavů každé ze vstupních proměnných) na počet vstupních proměnných. Pro tři vstupní proměnné tak budeme v pravdivostní tabulce potřebovat osm řádků, pro čtyři vstupní proměnné šestnáct řádků, pro pět proměnných bude řádků 32 atd. Každý z řádků si ještě očíslujme (v desítkové soustavě počínaje číslem 0). Pravdivostní tabulku teď musíme vyplnit. Sloupce vstupních proměnných vyplňujeme tak, aby každý z řádků byl jedinečný. Nejjednodušeji toho dosáhneme převedením pořadového čísla řádku do dvojkové soustavy a vepsáním číslic binární reprezentace do jednotlivých sloupců. Abychom se zbytečně nezdržovali převáděním mezi číselnými soustavami, budeme raději používat pravidlo, které z uvedeného postupu vyplývá: nejprve vyplníme sloupec X1, tedy ten vpravo - jednoduše střídáme hodnoty 0 a 1 (začneme nulou). Postoupíme doleva a ve sloupci X2 píšeme každou hodnotu dvakrát, tzn. 0, 0, 1, 1,... S každým dalším sloupcem se počet hodnot v jedné periodě vždy zdvojnásobí. V prvním sloupci by nakonec první polovina řádků měla být tvořena nulami a druhá polovina jedničkami - pokud ne, někde jsme udělali chybu. Výstupní hodnoty vyplníme sami podle toho, co od hotové logické funkce očekáváme. Jestliže u některé kombinace vstupních hodnot není hodnota výstupní proměnné důležitá, zapisujeme tzv. neurčitý stav (značíme pomlčkou). Pravdivostní tabulka pro tři vstupní proměnné by mohla vypadat například takto: X 3 X 2 X 1 Y 0 0 0 0 1 1 0 0 1 1 2 0 1 0 0 3 0 1 1 1 4 1 0 0 0 5 1 0 1 1 6 1 1 0 0 7 1 1 1 1 Podle této pravdivostní tabulky nyní vytvoříme Karnaughovu mapu. Pro každou výstupní proměnnou budeme potřebovat jednu mapu - v tomto případě tedy postačí jen jedna. Karnaughova mapa má různé tvary podle počtu vstupních proměnných. Popišme si nejprve mapu pro dvě proměnné - je to tabulka o dvou sloupcích a dvou řádcích. Nad pravým
sloupcem si nakreslíme vodorovnou čáru, kterou označíme jako X1 a vlevo od dolního řádku nakreslíme svislou čáru, kterou označíme X2. Každou z buněk si v rohu označme čísly 0-3. Při číslování postupujeme po řádcích. A co vlastně znamenají ty čáry nad a vedle mapy? Označují buňky (celý sloupec nebo řádek), kde daná vstupní proměnná nabývá hodnoty 1. Každá buňka této tabulky tak odpovídá jednomu z řádků pravdivostní tabulky a číslo, které jsme si do každé buňky vepsali, je právě číslem řádku z pravdivostní tabulky. Nezáleží tedy na tom, jak čáry okolo mapy uspořádáme; důležité je, aby hodnoty vstupních proměnných pro danou buňku odpovídaly jejímu označení čárami. Už asi tušíte, co bude hlavním obsahem buňek: do každé z nich zapište výstupní hodnotu funkce z řádku, který k této buňce podle čísla náleží. Karnaughova mapa pro tři vstupní proměnné je tabulkou o dvou řádcích a čtyřech sloupcích. Abychom mohli pokrýt všechny možné vstupní hodnoty, musejí vodorovné čáry označovat vždy dva sloupce, přitom jeden sloupec je označen oběma vodorovnými čarami. Obvyklé uspořádání Karnaughovy mapy pro tři, čtyři a pět vstupních proměnných najdete na obrázcích v příloze na konci článku. Všimněte si, že číslování buňek už nejde po řadě, ale některé řádky a sloupce jsou přeházené. Samotná minimalizace se provádí sdružováním jedniček v mapě do skupin, tzv. smyček. Dodržujeme přitom tato pravidla: 1) Do smyčky lze přiřadit pouze vzájemně sousedící jedničky. Přitom první a poslední sloupec (resp. řádek) mapy se také považují za vzájemně sousedící. 2) V jedné smyčce může být pouze takový počet jedniček, který je mocninou čísla 2, tzn. 2, 4, 8, 16,... 3) Každá smyčka musí mít tvar obdélníku nebo čtverce. 4) Každá jednička může být součástí několika smyček (smyčky se mohou překrývat). 5) Snažíme se vytvářet co nejméně smyček. Smyčky by přitom měly být co největší. 6) Neurčitý stav lze považovat za jedničku, pokud to umožní zvětšit některou smyčku. V ostatních případech neurčitý stav považujeme za nulu. 7) Každá jednička musí být uzavřena ve smyčce. Pokud některou jedničku není možné do smyčky uzavřít, považuje se za smyčku obsahující jedinou buňku. Na obrázku vidíte Karnaughovu mapu vyplněnou hodnotami z naší pravdivostní tabulky s vyznačenými smyčkami. V tuto chvíli již zbývá jen vyhodnotit mapu a interpretovat logický výraz do potřebné podoby. V našem příkladu bylo možné vytvořit dvě smyčky - na obrázku označené modře a červeně. Při vyhodnocování mapy postupujeme po jednotlivých smyčkách a díváme se, ve kterých
sloupcích a řádcích se nachází. Pro každou smyčku napíšeme logický výraz podle těchto pravidel: Jestliže buňky náležející některé proměnné obsahují celou smyčku, zapíšeme tuto proměnnou do výrazu. Jestliže buňky náležející některé proměnné neobsahují žádnou část smyčky, zapíšeme do výrazu tuto proměnnou v negaci (logická funkce NOT). Jestliže buňky náležející některé proměnné obsahují jen část smyčky, tuto proměnnou ignorujeme. Jednotlivé proměnné zapsané do výrazu mezi sebou logicky násobíme (funkce AND). Dostaneme tedy tolik logických výrazů, kolik máme smyček. Čím větší smyčky se nám podařilo vytvořit, tím jednodušší tyto výrazy jsou. Námi hledaná logická funkce je logickým součtem (funkce OR) všech těchto výrazů. A jaký je výsledek našeho příkladu? Všechny buňky modré smyčky patří do sloupců X1, proto do výsledného výrazu zapíšeme tuto proměnnou. Proměnné X2 i X3 budeme ignorovat, protože se v nich nachází vždy jen část modré smyčky. Výraz pro modrou smyčku je pak jen X1. Červená smyčka leží částečně v buňkách proměnné X1, proto ji budeme ignorovat. Leží však zcela mimo X2 a X3, proto obě proměnné zapíšeme do výrazu negované.
Obvyklé tvary Karnaughových map pro tři, čtyři a pět vstupních proměnných Literatura: http://www.pcsvet.cz/art/article.php?id=5080
Podle následující tabulky zapište logické funkce, vytvořte Karnaughovy mapy a pomocí nich funkce minimalizujte. x2 x1 Př.1 Př.2 0 0 0 1 1 1 0 1 0 1 2 1 0 1 0 3 1 1 0 0 x3 x2 x1 Př.1 Př.2 Př.3 Př.4 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 2 0 1 0 0 1 0 1 3 0 1 1 0 1 1 1 4 1 0 0 0 0 0 1 5 1 0 1 1 0 1 1 6 1 1 0 1 1 0 0 7 1 1 1 0 1 1 1 x4 x3 x2 x1 Př.1 Př.2 Př.3 Př.4 Př.5 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 2 0 0 1 0 0 0 1 0 0 3 0 0 1 1 1 1 1 0 0 4 0 1 0 0 0 1 1 0 0 5 0 1 0 1 1 0 0 0 1 6 0 1 1 0 0 1 0 0 0 7 0 1 1 1 1 0 0 0 0 8 1 0 0 0 1 0 1 1 0 9 1 0 0 1 0 0 0 1 0 10 1 0 1 0 0 0 0 1 0 11 1 0 1 1 0 1 0 1 0 12 1 1 0 0 0 1 1 1 1 13 1 1 0 1 1 0 0 0 1 14 1 1 1 0 0 1 0 1 0 15 1 1 1 1 0 1 0 0 1