程序员数学之逻辑学

逻辑学是分析问题与判断问题的方法。

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 否命题的概念

程序员数学之逻辑学(卢菁老师) - 图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

A∩Ā = 0

4.2 逻辑或(∪)

A∪B又可以写成A或B

A B A∪B
0 0 0
0 1 1
1 0 1
1 1 1

A∪Ā = 1

4.3 异或(ⓧ)

A B AB
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,AAA**A=0,……

4.3.3 面试题

题目:
一个桶里有200个球,其中100个黑球,100个白球。从桶里一次拿出两个球。
如果是同一颜色,那么放回一个白球;
如果是不同颜色,那么放回一个黑球;
最终桶里只剩一个球,它是黑球的概率是多少?
解析:
首先规定白球:0,黑球:1,这么做是为了满足放回规则,方便异或操作。
因为异或满足结合律,所以可以分别异或100个白球,再异或100个黑球。
根据偶数定律,他们的结果都是0,也就是白球。
最后,异或两个0结果也是0,最终桶里剩下的是白球。黑球的概率是0。

4.4 同或(⊙)

A B AB
1 0 0
0 1 0
0 0 1
1 1 1

异或与同或刚好相反。同或是相同为1,不同为0。

第5节 小结

Ā、A∩B(通常写成A·B)、A∪B(通常写成A+B)这三个运算称为基本运算。
基本运算与异或、同或的关系如下:
程序员数学之逻辑学(卢菁老师) - 图2
与(∩)、或(∪)、异或(**)、同或(**)总结如下:
1、同或(⊙)、异或(ⓧ)不关心AB具体的取值,只关心AB是否一致;
2、与(∩)、或(∪)关心AB的取值。

第6节 吸收律

A + (AB) = A
A(A + B) = A
A的值决定了整个命题的值,与B的值无关,也就是说B被吸收了。这就是吸收律。

6.1 面试题

题目:
假如有一架无人车,有两个灯:绿灯与黄灯。当出现三种情况之一的时候刹车。
情况1:绿灯灭,黄灯亮;情况2:绿灯、黄灯都灭;情况3:绿灯黄灯都亮;
解析:
首先规定,绿灯亮用A表示,黄灯亮用B表示;
刹车的情况可以用下列表达式描述:
程序员数学之逻辑学(卢菁老师) - 图3
这个式子是可以表达执行刹车的程序,但是存在一个问题:冗余。如何精减,如下:
先补充两个知识:B + 1 = 1,A·1 = A。
程序员数学之逻辑学(卢菁老师) - 图4

第7节 用文氏图表示逻辑关系

A:大于18岁的人。
程序员数学之逻辑学(卢菁老师) - 图5

7.1 AB

A:大于18岁的人
B:男性
程序员数学之逻辑学(卢菁老师) - 图6

7.2 A+B

程序员数学之逻辑学(卢菁老师) - 图7

7.3 AⓧB

程序员数学之逻辑学(卢菁老师) - 图8

7.4 A⊙B

1、同时成立的时候;
2、同时不成立的时候。
程序员数学之逻辑学(卢菁老师) - 图9

7.5 AB的否命题

程序员数学之逻辑学(卢菁老师) - 图10
程序员数学之逻辑学(卢菁老师) - 图11
程序员数学之逻辑学(卢菁老师) - 图12

7.6 A+B的否命题

程序员数学之逻辑学(卢菁老师) - 图13
程序员数学之逻辑学(卢菁老师) - 图14

7.7 德摩根定律

程序员数学之逻辑学(卢菁老师) - 图15
程序员数学之逻辑学(卢菁老师) - 图16

7.8 面试题

使用德摩根定律来解决踩刹车的问题:
题目:
假如有一架无人车,有两个灯:绿灯与黄灯。当出现三种情况之一的时候刹车。
情况1:绿灯灭,黄灯亮;情况2:绿灯、黄灯都灭;情况3:绿灯黄灯都亮;
解析:规定A:表示绿灯,B:表示黄灯
程序员数学之逻辑学(卢菁老师) - 图17
程序员数学之逻辑学(卢菁老师) - 图18
程序员数学之逻辑学(卢菁老师) - 图19