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.
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:
W wyrażeniu CNF czynniki koniunkcji są dysjunkcjami zmiennych boolowskich etykietujących te kolumny M dla których w danym wierszu . 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