程序员的实际工作中,用到的数学知识可能不多,所以在我的四大专栏里,数学算法排在最后一位。但是学习数学可以扩大思维,适合在学习完了数据结构、算法思想和经典问题后的进一步提升。我不可能穷举所有问题,只挑选60个最经典的问题进行讲述。本来想加入几何问题的,但是后来想了下,还是算了,准备以后成立计算几何专栏。
为了帮助大家少走弯路,我画了一个数学学习路径图,作为大家提高算法的指导:
红色线条,是我学不进去的内容,根本看不懂,其他的略懂一点。代数几何在卫星导航、航空航天领域特别重要。
主要分为以下几个类别:
数论 | 1 | |
2 | ||
3 | ||
4 | ||
5 | ||
6 | 线性质数筛选 | |
7 | 米勒罗宾质数测试 | |
8 | 费马质数测试 | |
9 | 费马质数分解 | |
10 | Pollard p-1算法 | |
11 | pollard rho算法 | |
12 | Floyd循环查找算法(龟兔算法) | |
13 | Brent质数分解算法 | |
14 | ||
15 | ||
16 | 模乘逆元-二进制快速幂法 | |
17 | Karatsuba算法(整数乘法) | |
18 | 离散对数-小步大步算法 | |
19 | 蒙哥马利乘法 | |
数列 | 20 | |
21 | ||
排列/组合/置换 | 22 | 排列树 |
23 | ||
24 | ||
25 | ||
26 | ||
组合数学 | 27 | |
28 | 换帽子问题 | |
29 | 阶乘取对数 | |
30 | 波利亚计数定理 | |
线性代数 | 31 | |
32 | ||
33 | ||
34 | ||
35 | ||
36 | ||
37 | ||
38 | ||
39 | ||
40 | ||
41 | ||
42 | 矩阵乘法 | |
逼近论 | 43 | |
44 | ||
插值法 | 45 | |
46 | ||
47 | 埃尔米特插值 | |
48 | 帕德逼近 | |
49 | Bernstein多项式 | |
50 | Catmull-Rom样条曲线、 | |
51 | Kochaneck-Bartels样条曲线 | |
52 | 贝塞尔曲线 | |
多项式 | 53 | |
54 | ||
55 | 傅里叶变换 | |
随机数算法 | 56 | |
57 | ||
58 | Sobol序列 | |
高次方程 | 59 | 雅可比法 |
60 | Newton Raphson方法 |