И операция обратный метод - PullRequest
0 голосов
/ 12 июня 2019

Допустим, у нас есть выражение:

A & B = C

Теперь мне даны B и C, и мне нужно найти A. Как бы я это сделал?

Я думаю это:

A & B = C

Итак,

A & B || !B = C || !B

A = C || !B

Будет ли это работать?

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Может быть невозможно определить значение A только из B и C в каждом случае.

Мы помним A && B = C

Давайте посмотрим на различные случаи

  1. Если C истинно, A должно быть истинно, потому что в противном случае A && B не может быть истиной.

  2. Если C ложно и B истинно, A должно быть ложно, потому что в противном случае A && B не может быть ложным.

  3. Если B и C ложны, A может быть истинным или ложным, вы не можете сказать, потому что независимо от значения A, A && B всегда ложно.

Итак, вопрос в том, нужен ли вам произвольный A, который удовлетворяет уравнению A && B = C, или вам нужно «исторически правильное» значение A? Для предыдущего вы можете однозначно решить его для случаев 1 и 2 и выбрать произвольное значение для случая 3. Для последнего вы также можете решить это для случаев 1 и 2, но не для случая 3.

Так что да, ваше окончательное уравнение всегда будет давать A, которое удовлетворяет исходному уравнению. Но это не может быть исторически правильным. Т.е., если изначально все A, B и C ложны, но ваше уравнение C || !B приведет к значению true для A. Я не знаю ваш сценарий использования, если это считается правильным или нет.

0 голосов
/ 12 июня 2019

Это не всегда возможно, потому что операция AND не имеет обратного.

В частности, если B ложно, C также должно быть ложным, но A может иметьлюбое значение.

Аналогичный аргумент может быть сделан для оператора OR, который также не имеет обратного.Однако XOR является обратимым.

...