Где я ошибся с булевой логикой?

Для небольшой цифровой системы мне дается требование: «Двери не должны запираться (a = двери запираются), когда водитель вышел из машины (b = водитель в машине), но ключи все еще находятся внутри (c = ключи). внутри) двигатель, даже если водитель закрыл рычаг блокировки двери (d = рычаг блокировки закрыт) ПРИМЕЧАНИЕ: если водитель находится в автомобиле (b) и требует, чтобы дверь была заперта (d), то двери должен запирать (а)».

Я думал, что это можно разделить на 2 части (где общее выражение - это 1. первый набор требований и 2. часть «ПРИМЕЧАНИЕ», поэтому 1 + 2?)

В первой части я думал, что логическое выражение будет выглядеть так:

a' = b' AND c AND d. 
a' = b'cd.

Затем я попытался взять дополнение к обеим частям: (a')' = (b'cd)'

...и используя закон ДеМоргана... a = (b'c)' + d'...и затем снова используя закон ДеМоргана... a = b + c' + d'.

Но не означает ли это, что «двери должны запираться, когда водитель находится в машине ИЛИ ключи не находятся в машине ИЛИ рычаг блокировки двери не задействован». Это вообще не имеет смысла.

Во второй части (ПРИМЕЧАНИЕ:) я получил a = bd. Итак, должно ли общее выражение быть дополнением этого с неправильно звучащей частью из предыдущего? Тогда у меня было бы: a = b + c' + d' + bd. Я думаю, что с помощью хитрого распределительного свойства, данного в классе, я могу упростить компонент c' + bd до (c' + b) (c' + d). Тогда у меня было бы a = (c' + b) (c' + d) + b + d'.

Это сбивает с толку; могу ли я упростить, если еще больше? (ну, вообще-то, наверное, это изначально неправильно!) Где я ошибся и где остановиться?


person norman    schedule 07.09.2012    source источник


Ответы (1)


Я думаю, у вас проблемы с вашими первоначальными предположениями, а потом все разваливается. У вас есть неполная таблица истинности:

a  b  c  d
?  0  0  0
?  0  0  1
?  0  1  0
0  0  1  1  <<< - this is the only data you have
?  1  0  0
?  1  0  1
?  1  1  0
?  1  1  1

На самом деле, если вы внимательно прочитаете постановку задачи, окажется, что d на самом деле означает «все равно» (поскольку там написано «даже если…»), поэтому в таблице истинности у вас могут быть две записи:

a  b  c  d
?  0  0  0
?  0  0  1
0  0  1  0
0  0  1  1
?  1  0  0
?  1  0  1
?  1  1  0
?  1  1  1

Еще одна возможная проблема связана с вашей интерпретацией a. a не означает, что "двери должны быть заперты", это означает, что "двери могут быть заперты", так как вы указываете случай, когда не должно быть возможно запирание запирать двери.

Если мы предположим, что a ИСТИНА для всех неизвестных выше случаев (т. е. двери могут быть заперты во всех других случаях), то мы имеем:

a  b  c  d
1  0  0  0
1  0  0  1
0  0  1  0
0  0  1  1
1  1  0  0
1  1  0  1
1  1  1  0
1  1  1  1

что может быть выражено как:

a = (b' AND c') OR b

то есть двери могут быть заперты только в том случае, если: (i) водитель находится вне машины, а ключи не внутри, или (ii) водитель находится внутри машины.

person Paul R    schedule 07.09.2012
comment
Отличное уточнение. Спасибо вам за помощь! - person norman; 07.09.2012