Podręcznik
2. Algebra Boole’a i przekształcenia boolowskie
2.2. Przekształcenia boolowskie
Innym typowym zastosowaniem algebry Boole’a jest przekształcanie wyrażeń boolowskich z postaci typu „iloczyn sum” (CNF – Conjunctive Normal Form) na postać typu „suma iloczynów” (DNF – Disjunctive Normal Form).
Korzysta się przy tym z zasad uproszczonego mnożenia, z których pierwsza jest omawianą już zasadą rozdzielności dodawania względem mnożenia, a drugą wykazujemy poniżej.
Wykazać, że: \(\left(x+y\right)\left(\bar{x}+z\right)=\ xz+\bar{x}y\)
\(\begin{array}{{>{\displaystyle}l}} ( x+y)\left(\overline{x} +z\right) =x\overline{x} +xz+\overline{x} y+yz=xz+\overline{x} y+yz=\\ =xz+\overline{x} y+1yz=xz+\overline{x} y+\left( x+\overline{x}\right) yz=xz+\overline{x} y+xyz+\overline{x} yz=\\ =xz+xyz+\overline{x} y+\overline{x} yz=xz( 1+y) +\overline{x} yy( 1+1) =\ xz+\overline{x} y \end{array}\)
Podane wyrażenie typu „iloczyn sum”:
\((A+B+\bar{C})\left(A+B+D\right)\left(A+B+E\right)(A+\bar{D}+E)\left(\bar{A}+C\right)\)
przedstawić w postaci sumy iloczynów.
Rozwiązanie
\((A+B+\bar{C})\left(A+B+D\right)\left(A+B+E\right)(A+\bar{D}+E)\left(\bar{A}+C\right)\)=
\(\begin{array}{{>{\displaystyle}l}} =\left( A+B+\overline{C} DE\right)\left( AC+\overline{A}\left(\overline{D} +E\right)\right) =\left( A+B+\overline{C} DE\right)\left( AC+\overline{A}\overline{D} +\overline{A} E\right) =\\ =AC+ABC+\overline{A} B\overline{D} +\overline{A} BE+\overline{A}\overline{C} DE=AC+\overline{A} B\overline{D} +\overline{A} BE+\overline{A}\overline{C} DE \end{array}\)
Ogromne znaczenie w syntezie logicznej mają przekształcenia wyrażeń boolowskich jednorodnych, tzn. takich w których zmienne występują wyłącznie w postaci prostej albo zanegowanej.
(x2+x4)(x3+x4)(x3+x5)(x1+x2+x3) można przekształcić do postaci DNF w sposób następujący:
(x4+x2)(x4+x3)(x3+x5)(x3+x1+x2) = (x4+x2x3)(x3+x1x5+x2x5) = x3x4+x1x4x5+x2x4x5+x2x3
Nietrudno przypuszczać, że w praktycznych zastosowaniach będziemy mieli do czynienia z bardziej rozbudowanymi przekształceniami CNF na DNF. W celu ułatwienia skomplikowanych obliczeń i zapisów zmienne boolowskie xi, xj, xk będziemy reprezentowali ich indeksami i, j, k.
(3 + 7)(2 + 5 + 8)(3 + 6 + 8)(6 + 7 + 8)(3 + 5 + 6) = (3 + 7) (3 + 6 + 58)(8 + (2 + 5)
(6 + 7)) = (3 + 36 + 358 + 37 + 67 + 578)(8 + 26 + 27 + 56 + 57) = 38 + 236 + 237 +
+ 356 + 357 + 678 + 267 + 267 + 567 + 567 + 578 + 25678 + 2578 + 5678 + 578
= 38 + 236 + 237 + 356 + 357 + 678 + 267 + 567 + 578
Transformacja CNF na DNF jest również wygodnym i często stosowanym narzędziem przy obliczaniu pokrycia kolumnowego binarnej macierzy M.
Pokryciem kolumnowym binarnej macierzy reprezentowanej tablicą M:
\(M=\left[m_{ij}\right],\ i\in\left\{1,\ldots,w\right\},\ j\in\left\{1,\ldots,n\right\}\)
W wyrażeniu CNF czynniki koniunkcji są dysjunkcjami zmiennych boolowskich etykietujących te kolumny M dla których w danym wierszu \(m_{ij}=1\) . Liczba czynników jest równa liczbie wierszy macierzy M. Istotnym problemem jest transformacja CNF na DNF, gdyż składniki wyrażenia DNF są koniunkcjami zmiennych reprezentujących kolumny macierzy M.
Tabl. 1.1
|
L1 |
L2 |
L3 |
L4 |
L5 |
L6 |
L7 |
|
0 |
0 |
0 |
0 |
0 |
1 |
1 |
|
0 |
0 |
1 |
1 |
0 |
0 |
0 |
|
0 |
1 |
0 |
1 |
0 |
0 |
0 |
|
0 |
1 |
1 |
0 |
0 |
0 |
1 |
Dla macierzy M (Tabl. 1.1) stosowne obliczenia są następujące:
(L6 + L7) (L3 + L4) (L2 + L4) (L2 + L3 + L7) = (L4 + L2)(L4 + L3)( L7 + L6)(L7 + L2 + L3) =
=(L4 + L2 L3)(L7 + L6(L2 + L3)) = (L4 + L2 L3)(L7 + L2L6+ L3L6) = L4 L7 + L2 L4L6 + L3L4L6 + + L2 L3L7 + L2 L3L6
Na tej podstawie stwierdzamy, że wszystkie minimalne pokrycia kolumnowe macierzy z Tabl. 1.1 są reprezentowane zbiorami: {<i>L</i><sub>4</sub>, <i>L</i><sub>7</sub>}, {<i>L</i><sub>2</sub>, <i>L</i><sub>4</sub>, <i>L</i><sub>6</sub>}, {<i>L</i><sub>3</sub>, <i>L</i><sub>4</sub>, <i>L</i><sub>6</sub>}, {<i>L</i><sub>2</sub>, <i>L</i><sub>3</sub>, <i>L</i><sub>7</sub>}, {<i>L</i><sub>2</sub>, <i>L</i><sub>3</sub>, <i>L</i><sub>6</sub>}. Zauważmy, że dla każdego wiersza tej tablicy elementy wskazywane przez kolumny Li należące do obliczonych podzbiorów zawierają zawsze co najmniej