美文网首页
《程序员的数学》

《程序员的数学》

作者: 没关系都是神经病啊 | 来源:发表于2016-12-01 17:37 被阅读33次

第1章  0的故事

按位计数法:

例:

5000的分解

5是个数,10是基数,3是指数

10进制转换为2进制称为基数转换

2进制和10进制的优缺点:

1.在10进制计数法中,位数少,但是数字的种类多。

人类有10根指头,要靠直觉来把握数字的大小,对人类来说,这种比较易用。

2.在2进制计数法中,数字的种类少,但是数位多。

计算机处理的数字种类少、计算规则相对简单,对计算机来说,这种比较易用。

非按位计数法:如罗马计数法,最主要的特征是没有0

指数法则:

指数法则表达式

10的0次方是什么?10的2次方是‘2个10相乘’,那么10的0次方不就是‘0个10相乘’吗?这样的话,不应该是1,而是0吧?

寻找它们的规律

我们发现指数每减1,数字就变为原来的10分之1。可以推导出?为1.10的1-次方顺便也可以推导出来是1/10。

0的作用: 

在按位计数法中,数位具有很重要的意愿。比如十位的数‘没有’,也不能不写数字,0的作用就是占位

为什么人类要发明计数法呢?

数越大越难处理,方法就是将大问题分解为小‘单元’。

第2章  逻辑

逻辑:消除自然语言的歧义、严密准确地记述事物的工具。

生活中的自然语言歧义例子:12月份或者低于10°的时候打开暖气。小明在北京或者上海。

同样的‘或者’,不一样的意思。第一个或者没有排他性,12月份并且低于10°还是会打开暖气。而小明在北京就没法同时在上海。

在遇到大问题时,通常将其分解为多个小问题。这时常用的方法就是检查它的完整性(没有遗漏)和排他性(没有重复)。

图表能帮我们更好的理解事物的逻辑关系,常用的有逻辑表达式、真值表、文氏图、卡诺图。

第3章  余数

运用余数,大数字的问题就能简化为小数字的问题。

人们只要发现了周期性和奇偶性,就能将大问题转换为小问题来解决。

本章例子,100天后星期几问题、草鞋铺设问题、格尼斯七桥问题。

第4章  数学归纳法

数学归纳法:证明有关整数的断言对于0以上的所有整数是否成立所用的方法。

步骤1:证明“P(0)成立”。

步骤2:证明不论k为0以上的哪个整数,“若P(k)成立,则P(k+1)也成立”。

用人话说就是:先证明一条腿可以往前迈一步,然后证明另一条腿无论什么情况都能迈出去,最终证明人可以到达无限的远方,这就是数学归纳法。可以想象多米诺骨牌。

第5章  排列组合

置换:将n个事物按顺序进行排列的总数。

阶乘

排列:从n个事物中取出k个进行排列的总数。

排列总数

组合:从n个事物中取出k个进行排列,并且不考虑顺序的总数。

组合公式

公式的意思,先考虑顺序进行计数,然后除以重复度。

排列=置换*组合,例如:有ABCDE5张牌,3张的置换*从5张取3张的组合=从5张中取3张的排列。

第6章  递归

在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知。

递归的条件:

1. 子问题须与原始问题为同样的事,且更为简单;

2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。

递归和归纳,只是方向不同。“从一般性前提推出个别性结论”的是递归(recursive)的思想。而“从个别性前提推出一般性理论”的是归纳(inductive)的思想。

编程时会遇到的递归结构,如程序源代码缩进、树形数据结构、XML语法、快速排序算法等。

递归的要点在于把握结构,分解问题

第7章  指数爆炸

指数的概念:在乘方a中,其中的a叫做底数,n叫做指数,结果叫幂。

f(x)=a^x (a为常数,x为指数) 随着x单位长度的递增,f(x)会呈“爆炸性”增长

a=2时的指数图形

二分法就是指数爆炸思想的反向实施。

处理指数爆炸的4种方法:1.极力求解2.变相求解3.近似求解4.概率求解

第8章   不可解问题

停机问题,无限循环等。

相关文章

网友评论

      本文标题:《程序员的数学》

      本文链接:https://www.haomeiwen.com/subject/wwxgpttx.html