Charles Petzold《Code》----2017.1.6 读10章(非常精彩!)

来源:互联网 发布:支付宝解除淘宝绑定 编辑:程序博客网 时间:2024/05/22 14:20

注:所有笔记均为自己的理解总结,可能并非书本原文,对错不予负责。

摘要:逻辑最基本的目标是证明某个语句是否正确。逻辑是追寻真理的过程中用于分析语言的一种手段。本章主要讲述了如何用数学(布尔代数)来演算逻辑,然后再进一步讲述了如何用电路来演绎布尔代数。非常精彩!

引言:我们在现实生活中经常需要进行逻辑判断,可能是通过条件推断出某种结论,可能是判断一些事物是否满足一定的标准。比如下面两个例子:
例一:通过前两个条件可以推断出第三个条件:
条件1:所有人都是要死的;
条件2:苏格拉底是人;
条件3:苏格拉底是要死的。
例二:你进宠物店说需要这样一只猫“一只阉过的公猫,白的或黄褐色的均可;或者要一只没有生殖能力的母猫,除了白色,其他任何颜色均可;或者只要是只黑猫,我也要”。如果店员给你拿来一只未阉过的黄褐色的公猫,那这只猫是你想要的吗?
以上两个例子我们都可以通过大脑的逻辑判断来解决问题。但本章介绍了如何用数学通过在纸上演算来解决!还介绍了如何用电路来帮你自动解决!


布尔代数:

历史背景:
亚里士多德创造了如上文提到的三段论的逻辑理论。两千多年来,数学家们对其苦苦思索,试图用数学符号和操作符来表现它。19世纪以前,唯一能接近这个目标的人是布莱尼兹(1648—1716),他早年涉足逻辑学领域,后来转向其他学科(比如说,他几乎和牛顿同时独立发明了微积分)。19世纪中期的几位数学家在逻辑理论的数学定义上做了一些工作(最著名的是迪摩根),但只有1815年生于英格兰的乔治.布尔有真正概念上的突破—布尔代数

概念:
在布尔代数中操作数不是指数字,而是指。一个集仅仅表示一组事物,也就是后来熟知的集合
在布尔代数中,操作符“+”意味着两个集合取并集,操作符“x”表示两个集合取交集
与传统代数一样,我们可以把F x T写成F·T或FT。
传统代数中的交换律、结合律、分配率在布尔代数中均适用,如下:
这里写图片描述

而且,在布尔代数中,操作符“+”可以对“x”进行分配,这在传统代数中是不成立的,如下:
这里写图片描述
另外,布尔代数中还有两个符号。“1”代表全集,“0”代表空集
符号1可以用一个减号“-”来排除一些事物。比如“1-M”代表除了公猫意外的所有猫。

布尔表达式(可以把F看成是母猫):
这里写图片描述

语言中的“与、或、非”(AND、OR、NOT)概念与布尔代数中的操作符的关系:
这里写图片描述

布尔代数解决现实中逻辑问题的应用:
例一:根据条件推断出某种结论:
这里写图片描述
例二:判断一些事物是否满足一定的标准:
这里写图片描述

这里写图片描述

这里写图片描述


用电路表示布尔代数:

表示布尔代数的“取交集”、“x”、“AND”、“与”(怎么说都行)操作的电路:
这里写图片描述

表示布尔代数的“取并集”、“+”、“OR”、“或”(怎么说都行)操作的电路:
这里写图片描述

所以可以用如下电路来解决上文说的买猫的问题:
这里写图片描述

关于电路的其他的题外话:
这里写图片描述


自我思考:

传统代数通过运算帮助人们不再需要实际的去数数,而只需通过运算就可得到结果。例如2+3,你不需要真的拿两根棍子再摆上三根棍子,然后再数一下,哦,是五根棍子。你只需通过数学运算,2+3=5,就可以得到有5根棍子。

我们可以通过自己大脑的逻辑思维推断能力得到第三段的结论,不过我们完全可以不用这么费脑力,而直接通过布尔代数演算得出结果。

由上两个例子其实可以感受到:
数学真的是一个很好的工具,帮助我们解决很多现实中的问题,因为我们现在只需要在纸上演算就可以了,而不需要真的去摆棍子、数棍子,不需要大费脑力去进行逻辑推断。
再往下想,数学可以解决现实中的问题,而数学可以通过二进制的方式来表达,二进制又可以通过电来表达,所以,结论是,可以通过电来解决现实中的问题,这就非常有意思了。


我想,本章最重要的意义是向我们说明了:

布尔代数帮助我们只需在纸上演算就可解决现实中的逻辑问题;而电路帮助我们连在纸上演算都不需要了,只需看灯亮不亮就可得到结果,解决现实中的逻辑问题!

0 0
原创粉丝点击