Algebra Boole`a i jej zastosowania
Transkrypt
Algebra Boole`a i jej zastosowania
Algebra Boole’a i jej zastosowania Wprowadzenie Niech dany będzie zbiór dwuelementowy , którego elementy oznaczymy symbolami 0 oraz 1, tj. {0 , 1}. W zbiorze tym określamy działania sumy : , iloczynu : oraz dopełnienia _ : . A mianowicie, przyjmujemy: A 0 0 1 1 B 0 1 0 1 A B 0 1 1 1 A 0 0 1 1 B 0 1 0 1 A B 0 0 0 1 A 0 1 A 1 0 Zbiór wraz z powyższymi działaniami nazywa się algebrą Boole’a. Jedną z możliwych jej realizacji są układy elektroniczne zwane bramkami. Analogicznie do w/w działań wprowadzamy bramki OR (Or Gate), AG (And Gate), I (Inverter) oznaczane na schematach następującymi symbolami: A OR Z A B A B Z A B AG A I ZA i zdefiniowane takimi samymi tabelami, jak powyżej. Twierdzenie. Dla dowolnych elementów X, Y, Z algebry zachodzą następujące równości: 0 X X; (1) (2) 1 X 1; (3) X X X; (4) (5) (6) (7) X X 1; 0 X 0; 1 X X ; X X X; (8) X X 0; (9) (10) (11) (12) (13) (X ) X ; X Y Y X ; X Y Z X Y Z ; X Y Y X ; X Y Z X Y Z ; 1 (14) (15) (16) (17) X Y Z X Y X Z ; X Y Z X Y X Z ; X Y X Y ; X Y X Y ; (prawo de’Morgana) (prawo de’Morgana). Powyższe własności można udowodnić m.in. metodą zero-jedynkową polegającą na sprawdzeniu wszystkich możliwych przypadków, których jest skończona ilość. Oto przykładowy dowód własności (11): X 0 0 0 0 1 1 1 1 Y 0 0 1 1 0 0 1 1 Z 0 1 0 1 0 1 0 1 Y+Z 0 1 1 1 0 1 1 1 X+(Y+Z) 0 1 1 1 1 1 1 1 X+Y 0 0 1 1 1 1 1 1 (X+Y)+Z 0 1 1 1 1 1 1 1 Dzięki równościom (11) i (13) uogólniamy indukcyjnie dodawanie i mnożenie na dowolną skończoną liczbę argumentów. A mianowicie, jeżeli n 2 , to przyjmujemy: A1 ... An A1 ... An 1 An ; A1 ... An A1 ... An 1 An . W analogiczny sposób uogólniamy bramki OR i AND. Ponadto przyjmujemy taką samą umowę dotyczącą kolejności działań i opuszczania znaku mnożenia, jak w tradycyjnej algebrze, co pozwala na zredukowanie zbędnych nawiasów i uproszczenie zapisów. Twierdzenie. Dla dowolnych elementów X, Y, Z algebry zachodzą następujące równości: (18) X XZ X; (19) X X Z X ; (20) X X Y X Y ; (21) X Y Y Z Y Z X Y Z. Dowody. Zastosujemy bardziej efektywną metodę polegającą na wykorzystaniu własności już udowodnionych, do których zaliczymy własności (1) - (17). Ad (18) X X Z X 1 X Z X 1 Z X 1 X . Ad (19) (18) X X Z X X X Z X X Z X . Ad (20) X Y 1 X Y X X X Y X X X Y X X X Y (18) X X Y 0 X Y Ad (21) X X Y . X Y Y Z Y Z X Y Y Z Y Z X Y Z Y Y X Y Z 1 X Y Z . W zagadnieniach dotyczących zastosowań algebry Boole’a kluczowe znaczenie ma przekształcanie wyrażeń do najprostszej postaci i to odpowiedniego kształtu. Okazuje się, że każde takie wyrażenie zawsze daje się sprowadzić do jednej z dwóch tzw. postaci kanonocznych: sumy iloczynów bądź iloczynu sum pojedynczych argumentów bądź ich dopełnień. 2 Przykłady. Uprościmy dwa wyrażenia algebry Boole’a. a) W ( X Y )( X Y )( X Z ) ( X X X Y Y X Y Y ) ( X Z ) ( X X Y X Y ) ( X Z ) X X X Z X Y X X Y Z X Y X X Y Z X Z ( X Y Z X Y Z ) X Z X Z (Y Y ) X Z X Z X Z. Inne, prostsze rozwiązanie: W ( X Y )( X Y ) ( X Z ) ( X Y Y ) ( X Z ) X ( X Z ) X X X Z X Z . b) V X (Y Z Y Z Y Z ) X (Y Z Y Z ) (Y Z Y Z ) X Z (Y Y ) Y ( Z Z ) X ( Z 1 Y 1) X (Y Z ) lub V X Y X Z. Pierwszy z wyników przedstawia wyrażenie V w postaci kanonicznej iloczynu sum (trzeba założyć, że X jest sumą jednoskładnikową), a drugi z tych wyników – w postaci kanonicznej sumy iloczynów. Przy okazji warto postawić pytanie, która wersja rozwiązania jest prostsza? Aby na nie odpowiedzieć, przedstawmy ich realizację przy pomocy bramek: X Y Z OR X Z AG AG OR AG Y Teraz jest jasne, że pierwsze z rozwiązań jest prostsze, gdyż jego realizacja wymaga jednej bramki mniej. Następnym ważnym problem z uwagi na zastosowania w informatyce jest projektowanie wyrażeń algebry Boole’a, które spełniają wymagane warunki wejścia/wyjścia. Wyjaśnimy to przy pomocy serii przykładów. Przykład. Znajdziemy wyrażenie zależne na wejściu od zmiennych X, Y oraz wyprowadzające na wyjściu wyrażenie Z tak, aby zachodziły zależności: X 0 0 1 1 Input Y 0 1 0 1 Output Z 1 0 1 1 Aby otrzymać rozwiązanie w postaci sumy iloczynów dodajemy dodatkową kolumnę zawierającą utworzone w odpowiedni sposób iloczyny: X 0 0 1 1 Input Output Z 1 0 1 1 Y 0 1 0 1 Iloczyny X Y X Y X Y X Y Szukanym rozwiązaniem jest suma wyrażeń z ostatniej kolumny wybranych z tych wierszy, dla których Z 1: 3 Z X Y X Y X Y . Uprośćmy je: Z ( X Y X Y ) ( X Y X Y ) Y ( X X ) X (Y Y ) Y X X Y . Aby otrzymać rozwiązanie w postaci iloczynu sum dodajemy dodatkową kolumnę zawierającą utworzone w odpowiedni sposób sumy: X 0 0 1 1 Input Output Z 1 0 1 1 Y 0 1 0 1 Sumy X X X X Y Y Y Y Szukanym rozwiązaniem jest iloczyn wyrażeń z ostatniej kolumny wybranych z tych wierszy, dla których Z 0 : Z X Y . Widać, że otrzymaliśmy dokładnie takie samo rozwiązanie. Jego realizacja przy pomocy bramek wygląda następująco: X Y A X OR Y A Przykład. Znajdziemy wyrażenie zależne na wejściu od zmiennych X, Y, Z oraz wyprowadzające na wyjściu wyrażenie A tak, aby zachodziły zależności: I X 0 0 0 0 1 1 1 1 lub OR Input Y 0 0 1 1 0 0 1 1 Z 0 1 0 1 0 1 0 1 Znajdziemy oba rozwiązania w postaciach kanonicznych: 4 Output A 1 0 1 0 1 0 1 0 X 0 Input Y 0 Z 0 Output A 1 Iloczyny Sumy XY Z * X Y Z 0 0 1 0 XY Z X Y Z * 0 1 0 1 XYZ * X Y Z 0 1 1 0 XYZ X Y Z * 1 0 0 1 XY Z * X Y Z 1 0 1 0 XY Z X Y Z * 1 1 0 1 X Y Z 1 1 1 0 XYZ * XYZ X Y Z * Rozwiązanie w postaci sumy iloczynów: A ( X Y Z X Y Z ) ( X Y Z X Y Z ) X Z (Y Y ) X Z (Y Y ) X Z X Z Z ( X X ) Z . Rozwiązanie w postaci iloczynu sum: A ( X Y Z ) ( X Y Z ) ( X Y Z ) ( X Y Z ) ( X Z ) (Y Y ) ( X Z ) (Y Y ) (X Z )(X Z ) Z (X X ) Z . Również teraz otrzymaliśmy dokładnie takie samo rozwiązanie. Jego realizacja wymaga tylko jednego inwertera: Z I AZ Przykład. Znajdziemy wyrażenie zależne na wejściu od zmiennych X, Y, Z oraz wyprowadzające na wyjściu wyrażenie A tak, aby zachodziły zależności: X 0 0 0 0 1 1 1 1 Input Y 0 0 1 1 0 0 1 1 Z 0 1 0 1 0 1 0 1 Znajdziemy oba rozwiązania w postaciach kanonicznych: 5 Output A 0 0 1 1 0 0 1 0 Input Y 0 X 0 Z 0 Output A 0 Iloczyny Sumy XY Z X Y Z * 0 0 1 0 XY Z X Y Z * 0 1 0 1 XYZ * X Y Z 0 1 1 1 XYZ* X Y Z 1 0 0 0 XY Z X Y Z * 1 0 1 0 XY Z X Y Z * 1 1 0 1 X Y Z 1 1 1 0 XYZ * XYZ X Y Z * Rozwiązanie w postaci sumy iloczynów: A ( X Y Z X Y Z ) ( X Y Z X Y Z ) X Y (Z Z ) Y Z ( X X ) X Y Y Z . Rozwiązanie w postaci iloczynu sum: A ( X Y Z ) ( X Y Z ) ( X Y Z ) ( X Y Z ) ( X Y Z ) ( X Y Z ) ( X Y ) (Z Z )( X Y ) Z Z ( X Z ) Y Y ( X Y ) ( X Y )( X Z ) Y X X ( X Z ) Y ( X Z ). Otrzymaliśmy dwa różne rozwiązania, z których drugie jest prostsze. Widać to z ich realizacji przy pomocy bramek: Y X Z Y X Z AG OR AG OR AG Oprócz wcześniej zdefiniowanych bramek duże znaczenie praktyczne mają dwie dodatkowe: bramka NOR (Not Or Gate) i bramka Nand (Not And Gate). Oto ich oznaczenia i definicje w wersji dla dwóch zmiennych wejściowych (może być ich więcej): A B A B Z AB NOR A B 0 0 1 1 0 1 0 1 A B 0 0 1 1 0 1 0 1 NAND Z AB Z ( A B) A B 1 0 0 0 Z ( A B) A B 1 1 1 0 6 Istotna zaleta powyższych dwóch bramek polega na tym, że każde wyrażenie algebry Boole’a daje się zrealizować tylko przy pomocy bramek NOR albo tylko przy pomocy bramek NAND. Uzasadniają to poniższe schematy: Tylko bramki NOR A A B AA A NOR AB NOR A NOR B NOR NOR A B A B NOR A B A B A B Tylko bramki NAND A A B AA A NAND AB NAND A NAND B NAND NAND A B A B NAND A B A B A B W praktyce nie ma potrzeby stosowania powyższych schematów. Jak już wcześniej zauważyliśmy, wszystkie wyrażenia algebry Boole’a dają się sprowadzić do jednej z dwóch postaci kanonicznych: sumy iloczynów bądź iloczynu sum. W pierwszym z tych przypadków zamiast stosować układ bramek typu And-to-Or można użyć układu Nand-to-Nand zastępując w pierwszym układzie wszystkie bramki bramkami Nand. W przypadku układu typu OR-to-And ten sam efekt uzyskuje się poprzez zastąpienie wszystkich bramek bramkami typu Nor. Daje to układ typu Nor-toNor. W obu przypadkach otrzymuje się układy logicznie równoważne, ale fizycznie różne. Zagadnienie ilustrują poniższe przykłady. 7 Przykłady a) A B AG A B C D AG CD F E G A B C D E F G AG AB A B NAND C D NANDC F E G OR NAND D A B C D E F G A B C D E F G NAND E F G b) A B AG AB OR C D E A B AG NAND CD E A B A B NAND C D E NAND ABCD E A B C D E A B C D E C D E C D E 8 c) A B OR C D OR F E G OR A B NOR C D NOR F E G NOR A B CD AG ( A B ) (C D) ( E F G ) E F G AB C D NOR A B C D E F G A B C D E F G E F G d) A B AB OR AG D C E A B OR CDE NOR A B A B NOR C D E A B C D E NOR A B C D E A B C D E C D E C D E 9 Układy zintegrowane 10 11 12