Почему (а и (не б)) или (а и б) = а?
Я достиг конца довольно длинного логического упрощения, где я должен был доказать, что что-то = a. Я достиг точки (а и (не б)) или (а и б). Любая дальнейшая реорганизация уравнения не принесла мне дальнейшего. Но используя Таблицу Истины, я проверил, что (a и (не b)) или (a и b) действительно равны a. И это также имеет смысл интуитивно, но можете ли вы на самом деле использовать законы булевой алгебры, чтобы превратить (a и (не b)) или (a и b) в a?
4 ответа
Это имеет больше смысла, когда вы используете упрощенную запись, * для и, + для или, ~ для нет.
(a and b) or (a and (not b)) =
(a*b)+(a*(~b)) =
a*(b+(~b)) =
a*(1) =
a
((а и (не б)) или (а и б)) ... распределительное право
<=> (а и (б или не б) ... (б или не б) всегда верно
<=> а
Не стесняйтесь распространять:
c = (a и ¬b)
(а и б) или с
(а или в) и (б или в)
(а или (а и ¬b)) и (b или (а и ¬b))
распределите снова для левой и правой сторон:
((a или a) и (a или ¬b)) и ((b или a) и (b или ¬b))
упростить:
(а и (а или ¬b)) и ((б или а) и Т)
(а и (а или ¬b)) и (б или а)
снова упростим (используя свойство поглощения = x и (x или y) == x):
(а) и (б или а)
и опять:
а и (а или б)
== а
(Я знаю, что это немного долгий путь...)
Сначала оa AND NOT-b
:
-- если оба и уже находятся в форме1-bit booolean flags
0/1
, а флаги — это типы данных, которые позволяют проводить прямое числовое сравнение без дополнительного повторного приведения,
вместо того, чтобы делать,
a && ! b
Я думаю об этом просто:
b < a
т.е.
b strictly less than a
необходимость большего размера делает его узким местом, поскольку любойTRUE (1)
in мгновенно не соответствует критериям, как и его собственныйFALSE (0)
сценарий.
скажем иначе -
"if either I (a) have nothing, or you (b) have something, then we've failed"
так что обратная сторона этой медали становится
"I (a) must have something when you (b) have nothing for us to succeed"
теперь вторая половина,a AND b
a && b
думайте об этом как об умножении логических флагов
a x b
2 многословных способа сказать, что это будет
"if either us have nothing, then we've failed"
перевернув это……
"I (a) must have something when you (b) also have something for us to succeed"
И, наконец,
either OR
, просто соедините эти предложения как
"EITHER
I (a) must have something when you (b) have nothing,
OR
I (a) must have something when you (b) also have something,
in order for us to succeed"
Этот абзац в булевой алгебре будет выглядеть так:
(a == True, b == False) or ( a == True, b == True )
тоесть не важно чтоb
имеет вообще, поскольку рассмотрены оба сценария, поэтому результат будет любымa
имеет.