Разница между ИЛИ и И? - PullRequest
       13

Разница между ИЛИ и И?

1 голос
/ 02 марта 2012

Я создаю выражение для запроса WQL, чтобы настроить развертывание программного обеспечения на компьютерах, которые не имеют ни Версии1, ни Версии2 программного обеспечения.

Я придумал два выражения, которые, похоже, имеют одинаковый результат, и хотел применить эту логику против вас, чтобы посмотреть, действительно ли эти выражения эквивалентны? Если это так, я, вероятно, пойду на Выражение 1.

Выражение 1:

Развертывание Software.version1 на машине, если машина находится в «Group1» И Машина НЕ является Software.version1 И Машина НЕ является Software.version2

Выражение 2:

Развертывание Software.version1 на компьютере, если машина находится в «Group1» И ( Машина НЕ является Software.version1 ИЛИ Машина НЕ является Software.version2)

Мой мозг начинает болеть.

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

В выражении 1 все три условия должны выполняться (машина в группе 1, а не версия 1 и не версия 2).В выражении 2 должны быть выполнены два условия: либо машина находится в группе 1, а не в версии 1, либо машина в группе 1, а не в версии 2.

Предполагается, что машина не может иметь версию 1 и версию 2.в то же время второе выражение всегда будет истинным, если машина находится в группе 1. Первое выражение будет истинным, только если машина находится в группе 1 и не имеет ни версии 1, ни версии 2.

Inлогические термины, у вас есть:

exp1 = g1 ∧ ~v1 ∧ ~v2

exp2 = g1 ∧ (~v1 ∨ ~v2)
     = g1 ∧ ~(v1 ∧ v2)   // by DeMorgan's theorem

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

0 голосов
/ 02 марта 2012

Я не знаком с языком, но логика кажется довольно простой.

Если я правильно понимаю вопрос, вы хотите:

  • (1,1)-> 1 (не является ни версией 1, ни 2)
  • (1,0) -> 0 (является версией 2)
  • (0,1) -> 0 (является версией 1)
  • (0,0) -> 0 (это версия 1 и 2)

Это будет достигнуто выражением 1.

Выражение 2 вернется:

  • (1,1) -> 1
  • (1,0) -> 1
  • (0,1) -> 1
  • (0,0) -> 0

Я настоятельно рекомендую вам протестировать то, с чем вам поможет язык (я уверен, что есть какая-то функция bool печати), и потому что это не так.На самом деле тестировать не так уж много, просто протестируйте все три или четыре варианта и посмотрите, вернет ли он то, что вы хотите.

...