好玩的数学--程序员篇

Computer - ComMath

第1章 0的故事--无即是有

需求--问题:为什么我们需要发明计数法呢?

数越大就越难处理,将大问题分解成小“单元”;

方法论之一:“问题分解法”;

数字本身即是容器,并无实际意义;真正有意义的在于使用者;

 

进制

2进制:机器数字;逢二进位;两种数字;

10进制:阿拉伯数字;常用进制,适用我们使用手指个数;

--60进制:罗马数字;逢60进位;实例:时间应用60进制;

应用:进制数转换;

 

0

大多数机器对于0的处理都有自己的一套方法论,会进行特殊处理;

指数--10的0次方是多少?0次方的意义,基数的几分之一;

作用:占位--统一标准,简化规则;实例:吃药问题;

 

第2章 逻辑--真与假的二元世界

机器逻辑--布尔逻辑;

AI逻辑--模糊逻辑;实例:偶尔;经常;非常频繁; 设计对应数值:0.1;0.5;0.9;

需求--问题:为何逻辑如此重要?

逻辑是消除歧义的工具;

我们平时使用的语言--自然语言,是极易产生歧义的;

规格说明书(记述如何编写程序的文件)一般都是用自然语言描述的;因此,程序员必须走出自然语言的歧义的迷宫,谨慎解读规格说明书,确定其正确的意义;

“逻辑”是消除自然语言的歧义、严密准确的记述着事物的工具;假如尝试使用逻辑语言(逻辑表达式)来重新解释规格说明书,有时就会发现其中存在歧义或矛盾的地方;另外,借助逻辑还能够将复杂的规格说明书转换成简单易懂的形式;

程序员处于人类和计算机的分界线上;只要做到逻辑性的思考和表达,就不会为常识和感情所困,从而写出符合要求的规格说明和程序;程序员应该努力将问题转化为程序,让计算机有活可干;

乘车费用问题--兼顾完整性和排他性;
学习逻辑的基本思路:兼顾完整性和排他性;

命题及其真假--能够判断对错的陈述句叫做命题;

 

命题正确时,该命题为“真”;反之,命题不正确时,称该命题为“假”;也将“真”称作 true ,“假”成为 false;

有没有“遗漏”;
有没有“重复”;
画一根数轴辅助思考;
确认没有“遗漏”和“重复”是相当重要的。在查看乘车费用规则这类说明时,在阅读文字的同时,最好像下面那样 画一根数轴;

注意边界值
通过数轴,我们可以看到边界值是需要注意的;

兼顾完整性和排他性
没有“遗漏”,即具备完整性;
没有“重复”,即具备排他性;

使用if语句分解问题
逻辑的基本是两个分支;If-else;true or false

真值表
真值表没有遗漏和重复,兼顾了完整性和排他性;

文氏图

与 或 非 异或 蕴含 相等;

德.摩根定律
“非A”或者“非B”,和非“A与B” 是等价的;
“非A”并且“非B”,和非“A或B” 是等价的;

对偶性
分别将true和false、A和非A、且和或进行互换,就能够得到该逻辑表达式的否定式;

卡诺图

包含未定义的逻辑
true 真
false 假
undefined 未定义
三值逻辑

方法论之二:布尔逻辑;与或非;

 

第3章 余数--周期性和分组

运用余数,大数字的问题就能简化成小数字问题;

 

第4章 数学归纳法--如何征服无穷数列

1.基底的证明;

2.归纳的证明;

 

第5章 排列组合 --解决计数问题的方法
加法法则
乘法法则
置换
阶乘
排列
树形图
组合
置换和排列都要考虑顺序,不考虑顺序的方法--组合;

第6章 递归 --自己定义自己
递归和归纳的本质是相同的,都是“将复杂问题简化”;

斐波那契数列
F(0)=0 
F(1)=1
F(n)=F(n-1)+F(n-2) n>=2,n属于实数

第7章 指数爆炸 --如何解决复杂问题
指数爆炸是指数字呈爆炸式增长;

二分法查找--利用指数爆炸进行查找;

密码 --利用指数爆炸加密;
现在使用的密码,是俗称“秘钥”的随机字节流来加密的;

 

总结:

If判断的语句块,用于形成的逻辑分支;

for进行的语句块,用于解决重复性问题;

方法论之一:“问题分解法”--数越大就越难处理,将大问题分解成小“单元”;

方法论之二:逻辑--布尔逻辑;与或非;等等;模糊逻辑;

 

参考文献

--《程序员的数学》.(日)结城浩

posted @ 2018-03-03 01:10  DedoChen  阅读(234)  评论(0编辑  收藏  举报