【问题标题】:When to use XOR and when to use IFF?何时使用 XOR,何时使用 IFF?
【发布时间】:2013-03-17 01:17:26
【问题描述】:

由于 ((NOT A) XOR B) 和 A→B ("iff....then") (~A→~B) 在逻辑上相同(例如,除非发生身份验证,否则无法登录)是否有任何实际使用还是只是逻辑重言式,程序员可以任意决定在哪里使用 XOR 以及在哪里使用 if...then?

一个示例重写是支付→交付(“iff payment() == 'complete' then delivery()”)重写为 ((NOT payment()) XOR delivery())

编辑:真值表

A:付款 B:发货

A B A' (A→B) (A' XOR B) (A' OR B) T T F T T T T F F F F F

失败的地方

A B A' (A→B) (A' XOR B) (A' OR B) T F F F F F

A 为假的情况只是一个假 B,以下所有内容仅表示 B 为假(因为 NOT A)。

A B A' (A→B) (A' XOR B) (A' OR B) F T T T F T F F T T T T

goal → score ^ ¬goal→¬score,这样就确定了,没有其他方法(如果你没有进球,你就不能得分)。

【问题讨论】:

  • 我不确定它们是否相同,至少在命令式语言中不同......例如((NOT A) XOR B) 如何从两个不同的代码路径之一中进行选择?
  • 我还没有假设一种语言(可能是 prolog 或其他基于规则来简化所做的事情)但是如果我们简单地思考passwordmatch→login,我们可以像 XOR 一样编写该逻辑,即 ((NOT passwordmatch) XOR login)

标签: if-statement xor rule declarative paradigms


【解决方案1】:

A→B 等价于 (A' OR B)。它们在逻辑上是相同的,可以互换使用。

为 A→B 和 (A' XOR B) 构造真值表,您会发现它们在逻辑上并不等价。

编辑:这是真值表

EDIT2:用 (B iff A) 更新了真值表,是的,在逻辑上等价于 (A' XOR B),并且可以互换使用。

A B A' (A→B) (A' XOR B) (A' OR B) (B 当且仅当 A) T T F T T T T T F F F F F F F T T T F T F F F T T T T T

【讨论】:

  • 谢谢! ~A→~B ^ A→B 正是我所说的。没有A就没有B。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
相关资源
最近更新 更多