逻辑与开关
逻辑
逻辑是追求真理过程中的一种分析方法。布尔的天才之处在于将代数从数的概念中抽离出来,操作数不是数字而是一类事物的群体,也就是集合。
布尔代数中,符号“+”表示两个集合的并集,即第一个集合中所有元素和第二个集合中所有元素的集合。
布尔代数中,符号“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世纪,查尔斯·巴贝奇设计了差分机和分析引擎。一个世纪之后,这些机器被认为是现代计算机得雏形。我们知道,帮助巴贝奇的是他认识到计算机应产生于电宝继电器中,而非那些齿轮和控制杆。
是的,就是电报继电器。