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
ZA
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
AZ
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  AB
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
AA  A
NOR
AB
NOR
A
NOR
B
NOR
NOR
A  B   A  B
NOR
A  B   A  B
A
B
Tylko bramki NAND
A
A
B
AA A
NAND
AB
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
CD
F E
G
A B  C  D  E  F G
AG
AB
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
AB
OR
C
D E
A
B
AG
NAND
CD E
 A   B   A  B
NAND
C
D E
NAND
ABCD 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
CD
AG
( A  B )  (C  D)  ( E  F  G )
E  F G
AB
C D
NOR
A  B  C  D  E  F  G    A  B   C  D   E  F  G 
E  F G
d)
A
B
AB
OR
AG
D C
E
A
B
OR
CDE
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

Podobne dokumenty