Проблема упрощения булевой логики

Я ненавижу это. Просто отметить. + означает ИЛИ * означает И ! значит НЕ.

(A+B) * (A+C) * (!B + !C)

(A | B) & (A | C) & (!B | !C) // more conventnal

Ответ А(!В + !С)

Я пытаюсь попасть туда.

Итак, я начинаю с использования распределительного правила, которое приводит меня сюда (A + B) * C * (!B + !C)

и вот где я застрял. Я знаю, что каким-то образом должен избавиться от B и C, но я не вижу возможности использовать какие-либо правила. У меня есть Identity, Null, Itempotent, Inverse, Commutative, Associative, Distributive, De Morgan's и Cancellation для работы.

Я начинаю неправильно? Я действительно просто использовал единственное правило, которое я мог даже использовать. Мне было ужасно делать Proofs in Geometry, и этот материал просто заставляет меня чувствовать себя так снова и снова.


person Doug    schedule 24.09.2010    source источник


Ответы (2)


Ваш первый шаг неверен.

(A+B) * (A+C) is (A+(B*C)).

Далее, (!B + !C) есть !(B*C).

Таким образом, мы получаем A*(!(B*C)) + (B*C)*(!(B*C)), что дает желаемый результат.

person uncleO    schedule 24.09.2010
comment
Как перейти от (A+(BC)) * !(BC) к A*(!(BC)) + (BC) * (! (B*C)) Я пропустил там что-то большое. - person Doug; 24.09.2010
comment
@Doug - он распределяет (X + Y) * !Y в (X * !Y) + (Y * !Y). - person dash-tom-bang; 24.09.2010
comment
тире-том-бах правильно. Распределите !(BC) по +. Дело в том, что мы признаем (BC)*(!(BC)) ложным, поэтому оно исключается из оператора or. Преобразуйте !(BC) обратно в (!B + !C), и все готово. - person uncleO; 24.09.2010

(A | B) & (A | C) & (!B | !C) = (A | (B & C)) & (!B | !C)
                              = (A | (B & C)) & !(B & C)

замените D = (B и C)

                              = (A | D) & !D 
                              = A & !D
                              = A & !(B & C)
                              = A & (!B | !C)
person Bear Monkey    schedule 24.09.2010