我需要关于布尔蕴含的帮助。
有人能用简单的语言解释一下它是如何工作的吗:
A
蕴含 B = B + A'
(如果A则B)。也等同于 A >= B
我需要关于布尔蕴含的帮助。
有人能用简单的语言解释一下它是如何工作的吗:
A
蕴含 B = B + A'
(如果A则B)。也等同于 A >= B
布尔蕴含式 A implies B
的意思是“如果 A 为真,则 B 必须为真”。这暗示着(故意的双关语)如果 A 不为真,那么 B 可以是任何东西。因此:
False implies False -> True
False implies True -> True
True implies False -> False
True implies True -> True
这也可以理解为(非A)或B
- 即“要么A为假,要么B必须为真”。
False implies True -> True
?看起来很不直观。 - lostsoul29这是我对此的看法:
if(A)
return B;
else
return True;
如果A为真,则B相关且应进行检查,否则忽略B并返回真。return A ? B : true;
。 - Sina Madani我想我理解了 Serge 的观点,我会尝试解释它与现在的不同之处。这段文字对于评论来说太长了,所以我会把它发布为答案。
Serge 似乎是从质疑暗示是否适用的角度来考虑的。这有点像科学家试图确定两个事件之间关系的方式。以下是一个故事:
一位科学家在四个不同的国家访问了四天。在每个国家,她都想确定雨是否意味着人们会使用伞。她制作了以下的真值表:
下雨了吗? 人们使用伞吗? 雨是否意味着使用伞? 备注 否 否 ?? 没下雨,所以我没法观察到。 否 是 ?? 人们遮阳。我不知道他们在下雨时会怎么做。 是 否 否 或许当地政府禁止使用伞,没有人可以使用。这里绝对没有因果关系。 是 是 ?? 或许这些人无论天气如何都使用伞。
在上面的例子中,科学家不知道雨和伞之间的关系,并且她正在试图确定这种关系是什么。只有在其中一个国家的一天中,她才能明确地说暗示不是正确的关系。
类似地,Serge 看起来正在尝试测试 A=>B,但只能在一个情况下确定它是否成立。
然而,当我们评估布尔逻辑时,我们事先已经知道关系,并且想要测试是否遵守了这种关系。以下是另一个例子:
母亲告诉她的儿子:“如果你弄脏了,请洗个澡”(弄脏=>洗澡)。在四个不同的日子里,当母亲下班回家时,她检查是否遵守了这个规则。她制作了以下的真值表:
弄脏了吗? 洗澡了吗? 遵守规则吗? 备注 否 否 是 儿子没弄脏,所以不需要洗澡。给他一块饼干。 否 是 是 儿子不需要洗澡,但还是想洗。特别干净!给他一块饼干。是 否 否 儿子没有遵守规则,今晚不能吃饼干和看电视。 是 是 是 他洗了澡以清洗身上的污垢。给他一个饼干。
母亲事先设定了规则。她知道污垢和洗澡之间的关系,并希望确保规则得到遵守。
当我们使用布尔逻辑时,就像母亲一样:我们事先知道运算符,并且想要在这种形式下处理语句。也许我们想将语句转换为不同的形式(正如最初的问题,他或她想知道两个语句是否等价)。在计算机编程中,我们经常想将一组变量插入语句中,并查看整个语句的求值结果是否为真或假。
这不是知道是否适用 implies 的问题 - 如果它不应该被写在那里,它就不会被写在那里。真值表并不是用于确定规则是否适用,而是用于确定是否遵守了规则。
我喜欢使用这个例子:如果下雨,那么天就阴沉。
Raining => Cloudy
与许多初学者可能认为的相反,这绝不意味着雨会导致多云,或多云会导致雨。(编辑:它只是表示,此时既不下雨也不多云。请在此处阅读我最近关于物质蕴涵的博客文章。其中,我除了其他内容外,还提出了通常的“定义”物质蕴涵的原理。读者需要熟悉基本的证明方法,例如直接证明和证明反证法。)
~[Raining & ~Cloudy]
a b a=>b comment
0 0 ? it is not possible to infer whether a implies b because a=0
0 1 ? --"--
1 0 0 b is 0 when a is 1, so it is possible to conclude
that a does not imply b
1 1 ? whether a implies b is undefined because it is not known
whether b can be 0 when a=1 .
若要暗示b,则有必要且充分的条件是当a=1时始终满足b=1,以确保当a=1且b=0时没有反例。对于真值表中的第1、2和4行,不能确定是否存在反例:这些行未与(a=>b)=1矛盾,但也未证明(a=>b)=1。相比之下,第3行立即反驳了(a=>b)=1,因为它提供了一个当a=1且b=0时的反例。 我想我的解释可能会震惊一些读者,但似乎我们所学逻辑基础中存在着严重的错误,这也是布尔可满足性等问题尚未得到解决的原因之一。
这里有一个简洁的陈述:
假设我们有两个语句A和B,每个语句都可以是真或假。没有任何其他信息,就有2 x 2 = 4种可能性:“A且非B”,“B且非A”,“既不是A也不是B”,以及“既是A又是B”。
现在加上额外的限制,“如果A,则也B”。在施加此限制后,“x -> y”表达式,其中->是“蕴含”运算符,表示是否仍然可能A == x且B == y。在此额外限制之后,唯一不再可能的结果是A == 1且B == 0,因为那与限制本身相矛盾。因此,我们有1 -> 0为零,而其他每对都为1。
在这个问题上做出最好的贡献是由Serge Rogatch提供的。
布尔逻辑仅适用于量化(或评估)结果为真或假的情况,布尔逻辑命题之间的关系基于此事实。
因此,命题之间必须存在关系或连接。
在高阶逻辑中,关系不仅仅是开/关、1/0或+电压/-电压的情况,一个用文字表达的命题的评估更加复杂。如果文字命题之间不存在关系,则对于文字命题的蕴含并不等同于布尔逻辑命题。
虽然蕴含真值表总是为二元命题产生正确的结果,但对于可能完全没有任何关系的文字命题来说并非如此。
~A V B 真值表:
A B 结果/评估
1 1 1
1 0 0
0 1 1
0 0 1
文字命题A:月球是由酸奶油制成的。
文字命题B:明天我会赢得彩票。
A B 结果/评估
1 ? ?
如你所见,在这种情况下,你甚至无法确定决定结果的B的状态。现在明白了吗?
在这个真值表中,命题~A总是评估为1,因此,最后两行不适用。然而,在布尔逻辑中,最后两行总是适用的。
+
表示或
。 - Pavel Minaev