逻辑与开关

逻辑

逻辑是追求真理过程中的一种分析方法。布尔的天才之处在于将代数从数的概念中抽离出来,操作数不是数字而是一类事物的群体,也就是集合。

布尔代数中,符号“+”表示两个集合的并集,即第一个集合中所有元素和第二个集合中所有元素的集合。

布尔代数中,符号“x”表示两个集合的交集,即既在第一个集合中又在第二个集合中的所有元素的集合。

为了避免传统代数符号与布尔代数符号只 jain的混淆,有时用符号“∪”和“∩”来代替“+”和“x”。布尔对数学方面的革命性影响是让人们熟知的符号更加抽象,因此,坚持他的做法,而不是引入新的符号到他的代数中。

交换律、结合律和分配律在布尔代数中同样成立。并且加法可以分配乘法:

W + (B x F) = (W + B) x (W + F)

布尔代数还特别将1抽象为“全集”,也就是前面提到的所有事物。

0也被抽象为“空集”,即不包含任何事物的集合。

这个公式表示逻辑中一个非常重要的概念,即矛盾律。它表明一个事物不能同时是它自己和它自己的反面。

F x (1 - F) = 0

布尔代数为解决亚里士多德的三段论提供了一个数学方法,看看这个著名三段论的两个前提:

所有人都是要死的;
苏格拉底死人。

我们用字母P表示所有的人的结合,M代表要死的东西的集合,S代表苏格拉底。那么,所谓”所有的人都是要死的”意味着什么呢?它其实表示了所有人的集合(小集合)和要死的人的集合(大集合)的交集是所有人这个集合,即:

P x M = P

而P x M = M这个式子是错误的,因为要死的东西还包括猫、狗、榆树等等。

而“苏格拉底是人”意味着苏格拉底这个集合(非常小)和所有人的集合(很大)的交集是苏格拉底这个集合。

S x P = S

将第一个式子代入第二个式子,即:

S x (P x M) = S

根据结合律,上式等同于

(S x P) x M = S

我们已经知道S x P等于S,所以上式可以简化为:

S x M = S

现在计算完毕。这个表示式告诉我们,苏格拉底和所有的东西的集合的交集是苏格拉底,也就是说苏格拉底是要死的。相反,如果认为S x M等于0,那么结论就是苏格拉底不会死。再如果,S x M=M,则推出的结论就是苏格拉底死唯一会死的东西,而其他任何东西是不朽的!

布尔代数还可以来判断一些事物是否满足一定的标准。

也许有一天,你走进了宠物店对说:“我想要一只阉过的公猫,白的或黄褐色的均可;或者要一只没有生育能力的母猫,除了白色,其他任何颜色均可;或者只要是只黑猫。”

为方便起见,字母M指代公猫的集合,用F指代母猫的集合,T代表黄褐色的猫,用B代表黑猫,用W代表白猫,而用O代表所有其他颜色的猫,N表示不能生育的猫。

M x N x (W + T) + N x W x (1 - W) + B
    • (以前表示求并集)在语言中表示OR
  • x(以前表示求交集)在语言中表示AND
  • 1-(以前表示从全集中排除一些事物)在语言中表示NOT

这个公式已经把语言转移到布尔代数去了。这种形式的布尔代数中,字母不再只表示集合。字母还可以被赋予数字,但注意它们只能被赋予0或1.数字1表示“是的”、“正确”,本例中的意思是“这只猫符合我的要求”;数字0表示“否定”、“错误”,本例中即“这只猫不符合我的要求”。

假设店员拿出一只未阉过的黄褐色的公猫。下面是满足条件的猫的集合:

M x N x (W + T) + N x W x (1 - W) + B

当用0和1代替字母进行布尔检验,就变成了下面样子:

(1 x 0 x (0 + 1) + (0 x 0 x (1 - 0) + 0

根据布尔运算,结果为0,表示这只猫不满足客户需求。

开关

现在要实现一个关键概念上的突破,将布尔代数和电路结合再一起,从而使用二进制数字工作的计算机的设计和制造成为可能。

和前面介绍的一样,这是一个灯泡和电池连接在一起的电路,这回用两个开关:

只有当左右两个开关都闭合时灯泡才会亮。如下图所示:

对于电路的运转情况,我们可以总结为如下表格:

在前面的章节,我们已经知道了二进制是如何表示信息的——而信息是无所不包的,比如说,可以规定二进制0代表“拇指向上”,二进制1代表“拇指向下”。一个开关有两个状态,因此也可以代表二进制数。0代表“开关断开”,1代表“开关闭合”。一个灯泡有两个状态,0代表“灯泡不亮”,1代表“灯泡亮”,根据以上表述,我们将表格简化如下形式:

这里左边的开关和右边的开边调换位置,结果是一样的。所以我们不用分辨开关哪个是哪个。所以,上面的表也可以写为AND表OR表类似的形式。

的确,这与AND表是一样的。

这个简单的电路演示了布尔代数中的AND运算。

接下来,稍微改变一下开关连接方式,如下图所示。

无论上面的开关闭合还是下面的开关闭合或者都闭合,灯泡都会亮。

电路做了一个逻辑上的演示。灯泡回答了“是否开关闭合?”的问题,下表总结了这样一个电路的工作原理。

同样用0来表示开关断开或者灯泡不亮,用1表示开关闭合或灯泡亮,这个表可以写为如下形式:

同样的,两个开关可以调换,因此上表可以写为如下形式。

你可能已经才到了,这与布尔代数中的OR是一样的。

这就是说,两个开关并联相当于布尔代数的OR运算。

还记得宠物店的选猫的那个表达式吗?

(M x N x (W + T)) + (F x N x (1 - W) + B

上面已经分析出两个开关串联表示逻辑AND;两个开关并联表示逻辑OR,因此这个表达式可用8个开关做如下连接。

此电路的每一个开关用一个字母标记。如果按照从左到右,从上倒下的顺序遍历电路图,你会以同样此序遇到出现在表达式中的字母。

现在用电路来检测猫咪是否符合买家的要求,就变得容易直观得多。

拿出一只已绝育得灰色母猫,闭合相应得开关,如图所示

这次,灯泡被成功点亮了,这只猫符合你得全部要求。

19世纪,查尔斯·巴贝奇设计了差分机和分析引擎。一个世纪之后,这些机器被认为是现代计算机得雏形。我们知道,帮助巴贝奇的是他认识到计算机应产生于电宝继电器中,而非那些齿轮和控制杆。

是的,就是电报继电器。

Loading Disqus comments...
Table of Contents