程序员数学之逻辑学
1 从if…else语句说起
1.1 案例
案例:
条件1:如果是周末,行动1:待在家里。
条件2:如果是晴天,行动2:出去打球。
这个案例有什么问题吗?
问题1(条件缺乏独立性):比如周末晴天怎么办?是待在家里呢?还是出去打球?
也就是说行动有冲突。造成行动冲突的原因是,条件不独立。
问题2(条件缺乏覆盖性):比如周三雨天怎么办?
也就是说条件并没有覆盖到一个周的所有天数。
1.2 总结
在进行条件判断的时候,要注意两点:
1、条件之间要独立,不能有多个条件同时满足;
2、所有条件在一起要有覆盖性,要把所有的情况都考虑进去。
第2节 命题
2.1 命题的概念
2.2 案例
2.3 命题的特征
并不是所有的陈述都是命题:
命题有两个特征:
1、命题具有客观性
比如:张三很帅(帅是一种很主观的东西),所以这就不是一个命题。
再比如:今天的菜很咸(咸也是一种很主观的东西),所以这也不是一个命题。
2、命题具有可得性(要能证实或证伪)
比如:明天会下雨,下雨这件事情虽说是客观存在的,但是我们没法证实,也没法证伪。所以,这也不是一个命题。
2.4 if条件中的命题
只有命题才能作为if条件,同时if条件中的命题需要满足如下特征:
1、命题具有客观性
2、命题具有可得性(要能证实或证伪)
3、命题的独立性
条件之间要独立,不能有多个条件同时满足;
4、覆盖性
所有条件在一起要有覆盖性,要把所有的情况都考虑进去。
前两个特征是命题本身具备的特征,后两个特征是当命题作为if条件是所具备的特征。
第3节 否命题
3.1 否命题的概念

当A是真时,那么A的否命题是假;
当A是假时,那么A的否命题是真;
3.2 案例
案例1
命题:世界最高峰是珠穆朗玛峰,A=1;
否命题:世界最高峰不是珠穆朗玛峰,Ā=0;
案例2
命题:这是白马,A=1;
否命题:这是黑马,Ā=0;这个否命题就不成立,Ā可能是黄马,这就违背了命题的覆盖性。
马的颜色不仅仅是黑色和白色。
正确的否命题应该是:这不是白马。
3.3 命题与否命题
从两个层面理解命题与否命题
1、不论是命题还是否命题,他们都是命题,必须满足命题的客观性和可得性。
2、我们在谈论命题与其否命题时,其实潜在的就包含了if判断在里面了,那么命题与否命题又必须满足另外两个特性:覆盖性和独立性
第4节 组合命题
4.1 逻辑与(∩)
A∩B又可以写成A与B
| A | B | A∩B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
4.2 逻辑或(∪)
A∪B又可以写成A或B
| A | B | A∪B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
4.3 异或(ⓧ)
| A | B | AⓧB |
|---|---|---|
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
| 1 | 1 | 0 |
4.3.1 案例
这个案例是不能用逻辑或(∪)来处理的,因为逻辑或在这里违背了常理。
| 小明在北京 | 小明在上海 | 小明在北京或者小明在上海 |
|---|---|---|
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
| 1 | 1 | 0 |
小明不可能不在北京,也不在上海。
小明也不可能既在北京,又在上海。
4.3.2 异或的结合律
(A**ⓧB)ⓧC=(AⓧC)ⓧB
(A**ⓧB)ⓧC=(BⓧC)ⓧA
AⓧBⓧCⓧD可以任意异或其中两个。
偶数个命题的自身异或等于0,A**ⓧA=0,AⓧAⓧAⓧ**A=0,……
4.3.3 面试题
题目:
一个桶里有200个球,其中100个黑球,100个白球。从桶里一次拿出两个球。
如果是同一颜色,那么放回一个白球;
如果是不同颜色,那么放回一个黑球;
最终桶里只剩一个球,它是黑球的概率是多少?
解析:
首先规定白球:0,黑球:1,这么做是为了满足放回规则,方便异或操作。
因为异或满足结合律,所以可以分别异或100个白球,再异或100个黑球。
根据偶数定律,他们的结果都是0,也就是白球。
最后,异或两个0结果也是0,最终桶里剩下的是白球。黑球的概率是0。
4.4 同或(⊙)
| A | B | A⊙B |
|---|---|---|
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 1 |
| 1 | 1 | 1 |
第5节 小结
Ā、A∩B(通常写成A·B)、A∪B(通常写成A+B)这三个运算称为基本运算。
基本运算与异或、同或的关系如下:
与(∩)、或(∪)、异或(**ⓧ)、同或(⊙**)总结如下:
1、同或(⊙)、异或(ⓧ)不关心AB具体的取值,只关心AB是否一致;
2、与(∩)、或(∪)关心AB的取值。
第6节 吸收律
A + (AB) = A
A(A + B) = A
A的值决定了整个命题的值,与B的值无关,也就是说B被吸收了。这就是吸收律。
6.1 面试题
题目:
假如有一架无人车,有两个灯:绿灯与黄灯。当出现三种情况之一的时候刹车。
情况1:绿灯灭,黄灯亮;情况2:绿灯、黄灯都灭;情况3:绿灯黄灯都亮;
解析:
首先规定,绿灯亮用A表示,黄灯亮用B表示;
刹车的情况可以用下列表达式描述:
这个式子是可以表达执行刹车的程序,但是存在一个问题:冗余。如何精减,如下:
先补充两个知识:B + 1 = 1,A·1 = A。
第7节 用文氏图表示逻辑关系
7.1 AB
7.2 A+B
7.3 AⓧB
7.4 A⊙B
7.5 AB的否命题
7.6 A+B的否命题
7.7 德摩根定律
7.8 面试题
使用德摩根定律来解决踩刹车的问题:
题目:
假如有一架无人车,有两个灯:绿灯与黄灯。当出现三种情况之一的时候刹车。
情况1:绿灯灭,黄灯亮;情况2:绿灯、黄灯都灭;情况3:绿灯黄灯都亮;
解析:规定A:表示绿灯,B:表示黄灯






