plik PDF
Transkrypt
plik PDF
Jakub Michalski Zbiory w siatce Nie tylko Venn Ilustrowanie zbiorów za pomocą przecinających się owalów, chociaż wydaje się tak naturalne, do matematyki wprowadził dopiero w 1880 roku angielski matematyk John Venn (1834–1923). Jednak słowo „dopiero” nie wydaje się właściwe, skoro diagramy Venna pojawiły się zaledwie 10 lat po sformułowaniu przez Georga Cantora (1845–1918) podstaw teorii mnogości. Warto jednak wiedzieć, że diagram Venna to nie jedyny sposób graficznego przedstawienia zbiorów. W latach pięćdziesiątych ubiegłego wieku młody wówczas amerykański inżynier Maurice Karnaugh (czytaj: Karno), urodzony w 1924 r., wpadł na nowy sposób ilustrowania zależności między zbiorami. Tworzone jego metodą diagramy nazwano mapami (siatkami albo tablicami) Karnaugha. Mapa Karnaugha dla trzech zbiorów to prostokąt podzielony na osiem pól. A oto jak wygląda, wg Karanugha, ilustracja zbiorów A ∩ B ∩ C, A ∪ C oraz A ∪ (B ∩ C ). Mapy Karnaugha Mapa Karnaugha dla dwóch zbiorów (oznaczmy je literami A i B) to kwadrat podzielony na cztery pola. Zbiorowi A odpowiadają dwa górne pola, a zbiorowi B – dwa pola w pierwszej kolumnie. W takim razie dopełnienie zbioru A, sumę zbiorów A i B, ich iloczyn albo iloczyn zbioru B i dopełnienia zbioru A można zilustrować tak jak na zaprezentowanych rysunkach. Siatka dla czterech zbiorów składa się z 16 pól. Dla większej liczby zbiorów mapy Karnaugha gwałtownie się rozrastają (dla pięciu zbiorów mają 32 pola, dla sześciu zbiorów – 64 pola itd.) i niektórzy próbują je interpretować nie TEMAT NUMERU CYAN BLACK ML19 str. 13 13 jako siatki na płaszczyźnie, ale jako przestrzenne ułożenie warstw kwadratów o szesnastu polach. Posługując się mapami Karnaugha, można łatwo upraszczać złożone wyrażenia z algebry zbiorów. Aby przedstawić tę metodę, rozpatrzmy wyrażenie (A ∩ B) ∪ (A ∩ B ∩ C) ∪ (A ∩ B ∩ C) i zilustrujmy je odpowiednią mapą Karnaugha. Widzimy, że zacieniowane dwa górne pola można opisać bez użycia zbioru C, tzn. jako A∩ B, a zacieniowane dwa pola w drugiej kolumnie – bez użycia zbioru A, tzn. jako B ∩ C. W takim razie zacieniowany obszar to (A ∩ B) ∪ (B ∩ C) (oczywiście istnieją też inne równoważne zapisy tego zbioru). Rzecz jasna ten sam efekt można uzyskać sposobem algebraicznym: (A ∩ B) ∪ (A ∩ B ∩ C) ∪ (A ∩ B ∩ C) = = (A ∩ B) ∪ (B ∩ C) ∩ (A ∪ A) = = (A ∩ B) ∪ (B ∩ C) albo za pomocą diagramu Venna. O ile w wypadku bardziej skomplikowanych wyrażeń przewaga metody wykorzystującej mapy Karnaugha nad metodą algebraiczną jest łatwa do wykazania, to nawet wtedy trudno do niej przekonać zwolenników diagramów Venna. Toteż nie to zastosowanie map przyniosło im sławę. Liczba pól a logika Zastanawiająca jest zależność między liczbą przedstawianych zbiorów a liczbą pól na mapie Karnaugha. Związek ten łatwo wyjaśnić, gdy omówimy jeszcze jeden przykład zastosowań tych map. Za pomocą mapy Karnaugha można zilustrować nie tylko algebrę zbiorów, ale dowolną algebrę Boole’a. Pokażemy 14 teraz, jak taka mapa może się przydać w rachunku zdań. W wypadku dwóch zdań p i q możliwe są tylko cztery zestawy ich wartości logicznych: p 1 1 0 0 q 1 0 1 0 Odpowiadająca dwóm zdaniom mapa Karnaugha musi mieć cztery pola, aby wyczerpać wszystkie możliwości zestawów wartości logicznych. W takiej siatce pierwsze pole (w górnym lewym rogu) odpowiada zestawowi: wartość logiczna 1 dla zdania p i 1 dla q, itd. Rozpatrując wartości logiczne zdania złożonego ze zdań p i q, w polu tym należy wpisać wartość logiczną danego zdania dla przypadku, gdy oba zdania p i q mają wartość 1. Na przykład mapa Karnaugha dla alternatywy zdań p i q wygląda następująco: p 1 1 0 0 q 1 0 1 0 p∨q 1 1 1 0 Mapa Karnaugha dla trzech zdań p, q i r powinna mieć tyle pól, ile jest możliwych zestawów wartości logicznych trzech zdań, tzn. osiem. p 1 1 1 1 0 0 0 0 q 1 1 0 0 1 1 0 0 r 1 0 1 0 1 0 1 0 TEMAT NUMERU CYAN BLACK ML19 str. 14 Jeśli w te pola wpiszemy wartości logiczne zdania (w tabelce oznaczonego literą s) (p ∧ q) ∨ ((¬p) ∧ q ∧ r) ∨ (p ∧ q ∧ r), to mapa będzie wyglądała następująco: p q r s 1 1 1 1 1 1 0 1 1 0 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 (p ∧ q) ∨ ((¬p) ∧ q ∧ r) ∨ (p ∧ q ∧ r) (p ∧ q) ∨ (q ∧ r) ∧ ((¬p) ∨ p) (p ∧ q) ∨ (q ∧ r) Jednak dużo łatwiej takiego uproszczenia dokonuje się za pomocą mapy Karnaugha. Aby lepiej zrozumieć to postępowanie, warto wrócić do sposobu, w jaki uprościliśmy wyrażenie (A ∩ B) ∪ (A ∩ B ∩ C) ∪ (A ∩ B ∩ C) i skorzystać z dualności rachunku zbiorów i rachunku zdań (czego najlepszym przykładem są prawa de Morgana). Aby uprościć wyrażenie, łączy się w pary jedynki położone w sąsiednich (czyli mających wspólny bok) polach mapy. Pozioma para oznacza „to samo”, co w wypadku zbiorów oznaczało A ∩ B, czyli p ∧ q, a para pionowa jest odpowiednikiem B ∩C, czyli q ∧ r, zaś wynik końcowy jest alternatywą tych koniunkcji, czyli (p ∧ q) ∨ (q ∧ r). Zauważmy, że zwiększając liczbę zdań o jedno, podwajamy liczbę możliwych zestawów wartości logicznych tych zdań. Każdemu takiemu zestawowi odpowiada jedno pole mapy Karnaugha, więc liczby pól map dla dwóch, trzech i więcej zdań (lub zbiorów) tworzą ciąg geometryczny o ilorazie 2. Siatka zarabia na sławę Rozpatrywane powyżej zdanie wygląda odstraszająco. Informatycy często napotykają na podobne zdania (najczęściej jeszcze bardziej złożone!) i w takich wypadkach przede wszystkim próbują je uprościć. Takiego uproszczenia można dokonać algebraicznie, posługując się prawami rachunku zdań: Takie upraszczanie wyrażeń z algebry Boole’a przez znajdowanie sąsiednich jedynek na mapie Karnaugha jest zdecydowanie prostsze niż upraszczanie wykonywane algebraicznie, a diagramy Venna nie znajdują tu zastosowania. W dodatku procedurę upraszczania za pomocą map można „zmechanizować”, co przy bardzo złożonych wyrażeniach oszczędza czas i wysiłek. Jak widać, mapy Karnaugha uczciwie zapracowały na uznanie, jakim się cieszą. TEMAT NUMERU CYAN BLACK ML19 str. 15 15