【读书笔记】程序员的数学

 

Programmer’s Math

零的故事——无即是有

一、指数法则:

a=  1 (a!=0); 理解为 n每减一,数变为原来的1/10。,而非n个相乘

 

二、进制问题

按位计算法, 0 的占位作用

 

逻辑——真与假的二元世界

消除自然语言的歧义,做到不重不漏

 

引用:程序员处于人类和计算机的分界线上。只有做到逻辑性的思考和表达,就不会为常识和感情所困,从而写出符合要求的文档和程序。程序员应努力将问题转化为程序,让计算机有活可干。                                                                                                                                            ——P 23

 

条件分支(If,switch)语句,体现了“兼顾完整性和排他性的分解”

Venn diagram 集合与逻辑 联系

 

异或:同真假,则为真。(或,但不都满足 || 只满足一个)ab

 

De Morgan’s Laws:

         对偶性

  

         KarnaughtMap:真假组合以二维表来展示

        

 

 

三值逻辑: True    False         Undefined

 

&&   ||短路操作符

 

!Undefined = Undefined

True && Undefined = undefined

False && Undefined = false

False || Undefined = Undefined

 

复杂规则 -> 逻辑表达式 -> 卡诺图简化 –> 简单规则

 

余数——周期性和分组

除法就像分组,余数决定在哪一组(利用循环的规律)

 

奇偶性parity:

 

思考题:

         123456^654321的个位数是?

 

余数通过规律将大数字问题简化小数字问题

数学归纳法——征服无穷数列

基于正确的某一项,不断递推

 

所有 -> 任一                   应用于循环

 

比喻:

         可以走出第一步,假设可以走出下一步,推出可以再走一步,于是可以走到远方。

排列组合——计数问题

计数对象与整数的对应规则

不重不漏

 

加法法则:

         不同方法做同一种事情,即不重复,不交叉

容斥原理:(考虑了重复元素的加法法则)

         |A|+ |B| - 重复个数

 

乘法法则:

         逐步完成,递进

 

不要忘记0——

         在10米长的路上,从路的一端起每隔1米种一棵树,可以种多少棵?

 

 

置换:全对象的交替排列方法

排列:先置换,除以 没置换的

组合:先排列,除以 重复计数部分(消除相对顺序)

——————————————————————————————————

(隔板法)从A,B,C三种药品中,共取100粒进行调剂。要求:

·A,B, C 至少有一个

·不考虑A,B,C的顺序,且同种药品每粒都相同

 

 C

分析: 对象总数一定,有99个位置,可以插板的位置有2个

 

 

 

递归——自己定义自己

(问题的包含关系)

GNU : GNU is Not Unix

 

发现规律的能力:好像在重复做相似的事

Tower of Hanoi

 

RecursiveIdea:将复杂问题转化为较简单的同类问题

虽然暂未解决给定的问题,寻找更小的同类问题,当已知条件用

阶乘的递归定义

 

递归和归纳,只是方向不同。

Inductive:由已知到未知

Recursive:由未知到已知

 

Fibonacci :(兔子繁殖问题)

    A动物出生2天后就开始繁殖后代,一天一个。假设有一个刚出生A(第3天繁殖1个),

那么11天后,共有多少个A动物?

 

    分析:f(1) = 1, f(2) = 1, f(3) = 2

 

    A->B->C递归的地方?

 

昨天存在的一直活着,前天存在的每天生一个

   

   今日存在的             昨天存在的仍活着            前天存在的会每日一生

 

  删除部分问题

在列举子问题时,思考剩余问题与目标问题的联系

现要将1 * 2的砖头摆成2 * N的长方形阵列,请问有几种摆法

分析:(加法原理)

    ·左边竖着摆1块,右边相当于摆(n-1)的方案

·左边横着摆2,右边相当于摆(n-2)的方案

 

杨辉三角: (道尔顿板?)

 

问题:假设要到达C53这点,请问有多少种走法?

①  每下落一层,就需要选择 Left or Right,即在5次选择中需要选择3次向右。

②  (递归,加法原理)

·到达左肩上的点,的走法方案数

·到达右肩上的点,的走法方案数

指数爆炸——如何解决复杂问题

有一张白纸,不断的对折,为何需要的力度不断增加,最后不能再对折?

 

    二分查找法:(log n

在有序数据中,利用1/2的指数爆炸,递归地缩小范围

 

    暴力破解法:

用不同的字节流去试密码,∴增加字长,可让其费时

 

·极力求解,增加计算机性能,如:超级计算机

·变相求解,即技巧

·近似求解,如:最佳逼近定理

·概率求解,即瞎蒙试验。

 

不可解问题——无法编写的程序

反证法:

    假设问题对立面成立,然后论证,推出矛盾

 

可数:可以按一定规律将其一一列出 或 可以与自然数一一对应

 

停机问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值