题
你能解释一下吗 德摩根规则 尽可能简单(例如对于只有中学数学背景的人)?
解决方案
我们有两个价值观: 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
仅当两者都 论据 (值 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
.
我们对所有 8 个可能的值重复相同的过程 x
, y
, , 和 z
(2 个可能的值 x
乘以 2 的可能值 y
乘以 2 的可能值 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
换句话说, NOT (NOT x)
是 相等的 只是 x
.
DeMorgan 的规则是方便的技巧,让我们可以在适合某些模式的等效表达式之间进行转换:
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
两个表中的最终值相同。这证明了表达式是等价的。
锻炼: 证明表达式 NOT (x OR y)
和 (NOT x) AND (NOT y)
是等价的。
其他提示
看了一些答案,我想我可以通过使用实际上彼此相关的条件来更好地解释它。
德摩根定律指的是这样一个事实:有两种相同的方法可以写出两个条件的任意组合 - 具体来说, AND
组合(两个条件都必须为真),并且 OR
组合(其中任何一个都可以是真的)。例子有:
德摩根定律第 1 部分
陈述: 爱丽丝有一个兄弟姐妹。
状况: 爱丽丝有一个兄弟 OR
爱丽丝有一个妹妹。
对面的: 爱丽丝是独生子(是吗? NOT
有一个兄弟姐妹)。
状况: 爱丽丝做的 NOT
有一个兄弟, AND
她确实 NOT
有一个妹妹。
换句话说: NOT [A OR B] = [NOT A] AND [NOT B]
德摩根定律第二部分
陈述: 鲍勃是一名汽车司机。
状况: 鲍勃有辆车 AND
鲍勃有执照。
对面的: 鲍勃是 NOT
一名汽车司机。
状况: 鲍勃确实 NOT
有车, OR
鲍勃确实 NOT
有执照。
换句话说: NOT [A AND B] = [NOT A] OR [NOT B]
.
我认为这对于 12 岁的孩子来说不会那么困惑。它肯定比所有这些关于真值表的废话更容易混淆(即使我看到所有这些都感到困惑)。
这仅仅是一个的方式来重申真理语句,它可以提供写作条件语句做同样的事情更简单的方法。
<强>在简单的英语:强>结果 当事情不是这样或那样的,这也不是这个,而不是那个。结果 当一些不这个那个,它也是不这样或不是那样。
注意:鉴于字“或”我使用它的英文语言的不精确性是指非排他性的或在前面的例子中
<强>例如以下伪代码是等效的:强>结果 如果不是(A或B)...点击 IF(NOT A)AND(NOT B)....
IF NOT(A和B)...,点击 IF NOT(A)OR NOT(B)...
如果你是一个警察找未成年饮酒者,你可以做以下的一个,和德·摩根定律说,他们达到同样的事情:
配方1(A和B)
如果他们的在的年龄 限制和饮水的醇 饮料,逮捕他们。
配方2(NOT(NOT A OR NOT B))
如果他们的在的 年龄限制或饮用 非酒精的饮料,让他们走。
此,顺便说一下,没有我的例子。据我所知,这是一个科学实验,其中相同的规则被以不同的方式表达的一部分,找出它的人民,了解他们的能力怎么样的差别太大取得。
“他没有汽车或公共汽车。”与“他没有汽车,没有公共汽车”的意思是同一件事。
“他没有汽车和公共汽车”的意思与“他要么没有汽车,要么没有公共汽车,我不确定哪个,也许他两者都没有”是一样的。
当然,用通俗易懂的英语来说,“他没有汽车和公共汽车”,这句话强烈暗示他至少拥有这两样东西中的一件。但是,严格来说,从逻辑的角度来看,如果他不具备其中任何一个,那么该陈述也是正确的。
正式:
- 不是(汽车或公共汽车)=(不是汽车)和(不是公共汽车)
- not(汽车和公共汽车)=(非汽车)或(非公共汽车)
在英语中,“或”往往意味着一种选择,即你不能同时拥有这两种东西。在逻辑中,“或”始终与英语中的“和/或”含义相同。
这是一个真值表,展示了它是如何工作的:
第一种情况:not(cor 或巴士)=(不是汽车)和(不是巴士)
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
---+---++--------+--------------++---------+---------+--------------------
第二种情况:not(汽车和公共汽车)=(非汽车)或(非公共汽车)
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
---+---++---------+---------------++---------+---------+--------------------
绘制简单维恩图中,两个相交的圆。把一个在右左和B。现在(A和B)是明显的交叉位。因此,NOT(A和B)就是一切,这不是在交叉位,两个圆的其余部分。颜色英寸
画另两个圆像以前一样,A和B,相交。现在,NOT(A)是一切的在正确的圈(B),但没有交集,因为这显然A以及B.颜色这同样NOT(B)是一切都在走了一圈,但没有交集,因为这是乙以及A.颜色此英寸
两个附图看起来是一样的。你已经证明,NOT(A和B)= NOT(A)或NOT(B)。水能捞到情况留给读者作为练习的学生。
德·摩根定律让你说明以不同的方式逻辑运算的字符串。它适用于逻辑和集理论,在集合理论,其中使用补充不,交集和,和用于联合或
的DeMorgan定律允许你简化的逻辑表达式,执行该相当类似于乘法分配律的操作。
因此,如果你有在类C语言
以下if !(x || y || z) { /* do something */ }
有逻辑上等同于:
if (!x && !y && !z)
它也可以像这样:
if !(x && !y && z)
匝成
if (!x || y || !z)
和你当然可以,走在相反的。
这些语句的等价很容易地看到使用一些所谓的真值表。在真值表,只需奠定了你的变量(X,Y,Z),并列出所有的这些变量输入的组合。然后,您必须对每个谓词,或逻辑表达式列,并且确定给定输入,表达式的值。任何计算机科学,计算机工程,或电气工程大学的课程可能会推动你疯狂你必须构建真值表的数量和大小。
那么,为什么学呢?我认为,在计算最大的原因是它可以提高较大的逻辑表达式的可读性。有些人不喜欢使用逻辑表达式的前面不!
,因为他们认为这样可以迷惑人,如果他们错过了。使用德摩根定律上的芯片门级的影响是有用的,但是,因为某些门的类型是更快,更便宜,或者你已经在使用一个整体集成电路对他们这样你就可以减少芯片封装为所需的数结果
不知道为什么,我保留了这个这些年,但它已被证明有用的许多场合。由于贝利先生,我10级的数学老师。他称这是德摩根定理。
!(A || B) <==> (!A && !B)
!(A && B) <==> (!A || !B)
当您移动否定在括号中,逻辑运算符(AND,OR)或离开而变化。