请您尽可能简单地解释deMorgan rules(例如,对于只有中学数学背景的人)?
答案 0 :(得分:32)
我们有两个值:T
和F
。
我们可以通过三种方式合并这些值:NOT
,AND
和OR
。
NOT
是最简单的:
NOT T = F
NOT F = T
我们可以将其写为真值表:
when given.. | results in...
============================
T | F
F | T
为了简洁
x | NOT x
=========
T | F
F | T
将NOT
视为补充,即将一个值转换为另一个值。
AND
适用于两个值:
x y | x AND y
=============
T T | T
T F | F
F T | F
F F | F
仅当参数(真值表中AND
和T
的值){{1}时, x
才为y
}} - 和T
否则。
F
至少有一个参数为OR
时为T
:
T
我们可以定义更复杂的组合。例如,我们可以为x y | x OR y
=============
T T | T
T F | T
F T | T
F F | F
编写一个真值表,第一行在下面。
x AND (y OR z)
一旦我们知道如何评估x y z | x AND (y OR z)
======================
T T T | ?
,我们就可以填写表格的其余部分。
要评估组合,评估各个部分并从那里开始工作。括号显示首先评估哪些部分。你从普通算术中得到的知识将帮助你解决问题。假设你有x AND (y OR z)
。首先,您要评估括号中的部分
10 - (3 + 5)
并像往常一样评估答案10 - 8
。
评估这些表达式的工作方式类似。我们知道2
如何在上面工作,所以我们可以稍微扩展我们的表:
OR
现在几乎就像我们回到x y z | y OR z | x AND (y OR z)
===============================
T T T | T | ?
表一样。我们只需替换x AND y
的值并进行评估。在第一行,我们有
y OR z
与
相同T AND (T OR T)
只是T AND T
。
我们对T
,x
和y
的所有8个可能值重复相同的过程(z
的2个可能值乘以{{1}的2个可能值获得x
)的2个可能值来获取
y
有些表达可能比它们需要的更复杂。例如,
z
换句话说,x y z | y OR z | x AND (y OR z)
===============================
T T T | T | T
T T F | T | T
T F T | T | T
T F F | F | F
F T T | T | F
F T F | T | F
F F T | T | F
F F F | F | F
等效只是x | NOT (NOT x)
===============
T | T
F | F
。
DeMorgan的规则是方便的技巧,让我们在适合某些模式的等效表达式之间进行转换:
NOT (NOT x)
x
(您可能会将此视为NOT (x AND y) = (NOT x) OR (NOT y)
通过简单NOT (x OR y) = (NOT x) AND (NOT y)
和NOT
表达式分发的方式。)
你的常识可能已经理解了这些规则!例如,想一想民间智慧“你不能同时在两个地方”。我们可以使它适合第一条规则的第一部分:
AND
应用规则,这是另一种说法“你不在这里,或者你不在那里。”
练习:你怎么用简单的英语表达第二条规则?
对于第一条规则,让我们看看等号左侧表达式的真值表。
OR
现在是右手边:
NOT (here AND there)
两个表中的最终值相同。这证明表达式是等价的。
练习:证明表达式x y | x AND y | NOT (x AND y)
=============================
T T | T | F
T F | F | T
F T | F | T
F F | F | T
和x y | NOT X | NOT Y | (NOT x) or (NOT y)
========================================
T T | F | F | F
T F | F | T | T
F T | T | F | T
F F | T | T | T
是等效的。
答案 1 :(得分:16)
查看一些答案,我想我可以通过使用实际上彼此相关的条件来更好地解释它。
德摩根定律指的是有两种相同的方式来编写两种条件的任意组合 - 具体来说,AND
组合(两种条件必须为真)和OR
组合(或者一个可以是真的)。例如:
声明:爱丽丝有一个兄弟姐妹
条件:爱丽丝有一个兄弟OR
爱丽丝有一个妹妹
对面: Alice是独生子女(NOT
有兄弟姐妹)。
条件:Alice确实NOT
有一个兄弟,AND
她NOT
有一个妹妹。
换句话说: NOT [A OR B] = [NOT A] AND [NOT B]
声明:鲍勃是一名汽车司机
条件: Bob有车AND
Bob有执照
相反: Bob是NOT
汽车司机
条件:Bob NOT
有车,OR
Bob NOT
有牌照。
换句话说: NOT [A AND B] = [NOT A] OR [NOT B]
。
我认为对于一个12岁的孩子来说这会有点混乱。关于真值表的所有这些废话肯定不那么令人困惑(即使我对所有这些都感到困惑)。
答案 2 :(得分:5)
这只是一种重述真实陈述的方法,它可以提供更简单的方法来编写条件来做同样的事情。
用简单的英语:
什么东西不是这个或那个,它也不是这个而不是那个。
什么东西不是这个,那也不是这个。
注意:鉴于“或”这个词的英语不精确,我使用它来表示非排他性或前面的例子。
例如,以下伪代码是等效的:
如果不是(A或B)......
如果(不是A)和(不是B)....
如果不是(A和B)......
如果不是(A)或不是(B)......
答案 3 :(得分:2)
“他没有汽车或公共汽车。”意思是“他没有车,他没有公共汽车。”
“他没有车和公共汽车。”意思是“他要么没有车,要么没有公共汽车,我不确定哪一个,也许他没有。”
当然,用简单的英语说“他没有车和公共汽车。”有一个强烈的暗示,他至少有这两件事中的一件。但是,严格地说,从逻辑的角度来看,如果他没有其中任何一个,那么这个陈述也是正确的。
形式上:
在英语中,'或'往往意味着一种选择,即你没有这两种东西。在逻辑上,'或'总是与英语中的'和/或'相同。
这是一个显示其工作原理的真值表:
第一种情况:不是(cor或bus)=(不是汽车)和(不是公共汽车)
c | b || c or b | not (c or b) || (not c) | (not b) | (not c) and (not b)
---+---++--------+--------------++---------+---------+--------------------
T | T || T | F || F | F | F
---+---++--------+--------------++---------+---------+--------------------
T | F || T | F || F | T | F
---+---++--------+--------------++---------+---------+--------------------
F | T || T | F || T | F | F
---+---++--------+--------------++---------+---------+--------------------
F | F || F | T || T | T | T
---+---++--------+--------------++---------+---------+--------------------
第二种情况:不(汽车和公共汽车)=(不是汽车)或(不是公共汽车)
c | b || c and b | not (c and b) || (not c) | (not b) | (not c) or (not b)
---+---++---------+---------------++---------+---------+--------------------
T | T || T | F || F | F | F
---+---++---------+---------------++---------+---------+--------------------
T | F || F | T || F | T | T
---+---++---------+---------------++---------+---------+--------------------
F | T || F | T || T | F | T
---+---++---------+---------------++---------+---------+--------------------
F | F || F | T || T | T | T
---+---++---------+---------------++---------+---------+--------------------
答案 4 :(得分:2)
如果你是一名正在寻找未成年饮酒者的警察,你可以做以下其中一项,并且De Morgan的法律规定它们相同:
配方1(A和B)
如果他们 年龄 限制并饮用酒精 饮料,逮捕他们。
配方2(不是(不是或不是B))
如果他们 over 年龄限制或饮酒 非酒精饮料,让他们去。
顺便说一句,这不是我的榜样。据我所知,它是科学实验的一部分,同样的规则以不同的方式表达,以找出它对人们理解它们的能力有多大差异。
答案 5 :(得分:2)
绘制一个简单的维恩图,两个相交的圆圈。将A放在左侧,将B放在右侧。现在(A和B)显然是相交的位。所以NOT(A和B)是不在交叉位中的所有东西,其余的都是圆圈。颜色在。
绘制另外两个圆圈,就像之前一样,A和B相交。现在NOT(A)是右边圆圈中的所有东西(B),而不是交叉点,因为这显然是A和B一样。将此颜色加入。同样地,NOT(B)是左圆圈中的所有东西但不是交点,因为那是B和A的颜色。
两张图看起来一样。你已经证明NOT(A和B)= NOT(A)或NOT(B)。另一个案例留给学生练习。
答案 6 :(得分:1)
DeMorgan定律允许您以不同方式陈述一系列逻辑运算。它适用于逻辑和集合论,在集合论中,你使用补语表示not,交集for和,和union表示或。
DeMorgan定律允许您简化逻辑表达式,执行与乘法的分配属性非常相似的操作。
所以,如果您有类似C语言的以下内容
if !(x || y || z) { /* do something */ }
它在逻辑上等同于:
if (!x && !y && !z)
它的工作原理如下:
if !(x && !y && z)
变成
if (!x || y || !z)
当然,你可以反过来。
使用称为真值表的东西很容易看出这些陈述的等价性。在真值表中,您只需布置变量(x,y,z)并列出这些变量的所有输入组合。然后,您为每个谓词或逻辑表达式提供列,并确定给定输入的表达式值。计算机科学,计算机工程或电气工程的任何大学课程都可能会使你必须构建的真值表的数量和大小给你带来麻烦。
为什么要学习它们?我认为计算的最大原因是它可以提高更大逻辑表达式的可读性。有些人不喜欢在表达式前面使用逻辑而不是!
,因为他们认为如果他们错过了它就会让人感到困惑。然而,使用DeMorgan定律对芯片栅极电平的影响很有用,因为某些栅极类型更快,更便宜,或者您已经在使用整个集成电路,因此您可以减少所需的芯片封装数量。结果
答案 7 :(得分:1)
不确定为什么我这么多年都保留了这一点,但事实证明它在很多场合都很有用。感谢我的10年级数学老师Bailey先生。他称之为德摩根的定理。
!(A || B) <==> (!A && !B)
!(A && B) <==> (!A || !B)
当您将括号移入或移出括号时,逻辑运算符(AND,OR)会发生变化。