Part1、原书如下图:

[读书笔记]程序员的数学之微积分

Part2、笔记:

1、进制、权、进制转换算法、0的作用-占位、指数分解法--问题分解法-模块化思想;
2、命题-结果为真/假,漏洞:遗漏、重复;
//没有遗漏==完整性;没有重复==排他性;
-->>遇到大问题分解为小问题,检查其完整性,排他性;
----对立事件;
3、逻辑关系-与或非,异或(圈圈+“+”符号);
逻辑图像--温恩图;
A=B等价于A交B;
A=>B等价于(A-B)的补集;
4、利用余数使得大数字化简为小数字的问题:
case1:星期几循环;
case2:超大树星期几----找规律;
5、哥尼斯堡七桥问题:
图论---首先顶点表示陆地,边表示桥;
要求:所有边必须遍历,但是不可以二次重复,顶点可以重复使用;
经过起点和终点,度数-1,中间顶点度数-2;
如果起点=终点,那么,最终每个节点度=0,每个中间节点为偶点(2k),因为起点=终点-2,所以也是欧节点,所有图中所有节点为偶节点;
如果起点终点不一样,图中只有两个奇点;
所以:如果一笔成画,那么图中全是偶点/只有2个奇点;(反之也成立);
6、排列组合:
① 加法法则:A并B=A+B-A交B;
② 乘法法则;
③ 排列:n个事物排成一排,无重复;
④ 组合:无序排列,选择;
⑤ 关系:置换+组合=排列;A53=C53*A33;
//数字太大考虑取特殊值再推广;
7、递归:复杂问题简化(归纳法、递归法):
① 汉诺塔:an=an-1+1+an-1;a1=1;
② 阶乘;
③ 等差数列求和:S(n)=n+S(n-1)
④ 斐波那契:a(n)=a(n-1)+a(n-2);
//应用:砖头摆法;一次走1/2爬n曾楼梯;
⑤ 帕斯卡:Cnk,Cnk=Cn-1(k-1)+Cn-1(K);
⑨ 递归思想:假设f(n),看是否可以用fn-1和f(n-2)表示;)
⑧ 分形图:谢尔平斯基三角形
8、指数爆炸:
① 递归层次太多会爆炸;
② 解决办法:二分查找
③ 应用:密码**:--暴力**法;
//方法:超级计算机;转化为数学问题,求出解析解;近似求解;概率求解;
9、不可解问题:
① 反证法:质数有无穷个;
② 可数:集合元素有限/所有元素都与正整数一一对应;
---偶数=2*n--可数;整数--可数;有理数可数;
③ 不可解问题:不能用程序解决;
程序分类:有限时间内结束,有限时间内不结束--死循环;
图灵-停机问题:判断“某程序在给定数据下,是否会在有限时间内结束运行”的问题;
//判断程序是否停机的程序永远不存在;
④ 停机问题---反证法--如果可以写出check判断程序,那么可以判断费马大定理程序,哥德巴赫猜想,这是不可能的;
10、总结:
怎么解决问题?
① 归纳法与递归法:
从很小的数字找规律,从而归纳;
② 一般编程不需要高深数学,但是认清并且简化问题结构,总结出一致性规则则是必须之道!

 

相关文章: