2016-09-16 3 views
-1

У меня есть функция f(a,b,c,d) = b*(a+~c) + d*(a+~b), где *(AND),, ~(NOT).Упрощение булевых выражений

Используя дистрибутивный закон, я получаю: ba + b~c + da + d~b,

но ответ ab + b~c + d~b.

Я не могу понять, как избавиться от da.

Я пробовал разблокировать a, чтобы получить: a(b+d) + b~c + d~b, но это меня не доставит.

+2

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что это не вопрос программирования. Он может быть более подходящим для другого [se] сайта, такого как [math.se]. –

+1

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что речь идет о логической логике вместо программирования или кодирования. – Pang

+1

Я голосую, чтобы закрыть этот вопрос как вне темы, потому что речь идет о логической логике, а не о программировании. –

ответ

1

Вы можете создать таблицу со всеми возможными значениями для каждого параметра: [1,0] и рассчитать оба выражения. Если вы можете показать, что в каждом случае они оценивают один и тот же результат, вы увидите, что они эквивалентны, и поэтому можно удалить ad.

Я продемонстрирую и позволяют выполнить упражнение:

enter image description here

1

Таким образом, вопрос, почему ba + b~c + da + d~b = ab + b~c + d~b.

Причина проста, da ничего не добавляет к левой стороне.

Если бы, не было бы случай, когда da = true и ab + b~c + d~b = false. Однако, если da = true, то d = true и a = true. Если b также true, то ab = true, и мы не добавили ничего в правую сторону. Если b = false, то d~b = true, и мы ничего не добавили.

Это нормально использовать таблицы или правила преобразования, такие как распределение и т. Д. Однако всегда лучше понять, почему два выражения эквивалентны.