\[ Y = (A + B)(A + \overline{B}) \]Wynikiem działania przedstawionej funkcji logicznej jest wyrażenie
A. A
B. A + B
C. AB
D. B
Pytanie z egzaminu CKE, czerwiec 2023 (arkusz EE.08-SG-23.06).
Wyrażenie upraszcza się do samego A dzięki prawom algebry Boole’a. Funkcję \(Y=(A+B)(A+\overline{B})\) można rozpisać z rozdzielności: \(Y=A\cdot A+A\cdot\overline{B}+A\cdot B+B\cdot\overline{B}\). Z idempotentności \(A\cdot A=A\), a z prawa dopełnienia \(B\cdot\overline{B}=0\), bo sygnał i jego negacja nie mogą jednocześnie mieć wartości 1. Zostaje \(A+A\cdot\overline{B}+A\cdot B\), a każdy składnik postaci \(A+A\cdot X\) redukuje się do A (prawo absorpcji). Szybciej prowadzi do celu prawo \((A+B)(A+\overline{B})=A+B\cdot\overline{B}=A\). Sprawdzenie: dla A = 1 oba nawiasy dają 1, dla A = 0 zostaje \(B\cdot\overline{B}=0\), więc wartość B nie wpływa na wynik. Takie uproszczenia zmniejszają liczbę bramek w układzie cyfrowym, a w programowaniu skracają złożone warunki w instrukcjach if.
W tym zadaniu łatwo pomylić zwykłe „patrzenie na wzór” z faktycznym uproszczeniem algebry Boole’a. Wynik A + B wygląda kusząco, bo w pierwszym nawiasie faktycznie występuje taki fragment, ale drugi nawias nie znika sobie ot tak. Całe wyrażenie jest iloczynem logicznym dwóch sum, więc trzeba uwzględnić oba warunki naraz. Po zastosowaniu własności algebry Boole’a okazuje się, że składnik z B i jego negacją redukuje się do zera, a nie do B. Wybór samego B też nie pasuje do tabeli prawdy: jeśli A = 0 i B = 1, to pierwszy nawias ma wartość 1, ale drugi ma wartość 0, więc wynik jest 0, a nie 1. To pokazuje, że funkcja nie może być równa B. Z kolei AB jest zbyt mocnym warunkiem, bo wymagałoby jednocześnie A = 1 i B = 1. Tymczasem dla A = 1 oraz B = 0 oryginalna funkcja daje 1, ponieważ oba nawiasy mają wtedy wartość 1. Typowy błąd polega tu na tym, że ktoś traktuje nawiasy jak zwykłe działania arytmetyczne albo zapomina, że w logice cyfrowej obowiązują prawa absorpcji, dopełnienia i idempotentności. Dobra praktyka, szczególnie przy projektowaniu układów bramkowych, jest taka: najpierw rozpisać funkcję, potem zastosować prawa Boole’a, a na końcu sprawdzić wynik choćby krótką tabelą prawdy. To oszczędza sporo pomyłek, serio.