程序员的实际工作中,用到的数学知识可能不多,所以在我的四大专栏里,数学算法排在最后一位。但是学习数学可以扩大思维,适合在学习完了数据结构、算法思想和经典问题后的进一步提升。我不可能穷举所有问题,只挑选60个最经典的问题进行讲述。本来想加入几何问题的,但是后来想了下,还是算了,准备以后成立计算几何专栏。
为了帮助大家少走弯路,我画了一个数学学习路径图,作为大家提高算法的指导:
红色线条,是我学不进去的内容,根本看不懂,其他的略懂一点。代数几何,主要是为了求高次方程的根,在卫星导航、航空航天领域特别重要。
我写的这个专栏,文章主要按以下几个类别进行分类:
一 乘法 | 1.1 二进制快速幂 |
1.2 复数乘法 | |
1.3 整数乘法Karatsuba算法 | |
二 模运算 | 2.1 欧几里得最大公约数算法 |
2.2 模乘逆元-扩展欧几里得法 | |
2.3 中国剩余定理 | |
2.4 线性丢番图方程 | |
2.5 模乘逆元-二进制快速幂法 | |
2.6 蒙哥马利乘法 | |
2.7 离散对数-小步大步算法 | |
三 质数 | 3.1 埃拉托色尼筛选 |
3.2 线性质数筛选 | |
3.3 费马质数检验 | |
3.4 米勒罗宾质数检验 | |
3.5 欧拉函数 | |
四 质因数分解 | 4.1 费马质数分解 |
4.2 Pollard p-1算法 | |
4.3 Pollard rho算法 | |
五 数列 | 5.1 斐波那契数列 |
5.2 卡特兰数列 | |
六 排列/组合/置换 | 6.1 部分排列树算法 |
6.2 全排列Heap算法 | |
6.3 二项组合树 | |
6.4 置换基本概念 | |
6.5 置换数值运算 | |
6.6 置换代数运算 | |
6.7 置换树 | |
八 逼近论 | 8.1 切比雪夫近似值 |
8.2 雷米兹算法 | |
8.3 Heron算法 | |
8.4 帕德逼近 | |
九 插值法 | 9.1 牛顿插值 |
9.2 拉格朗日插值 | |
9.3 分段立方插值 | |
9.4 分段双立方插值 | |
9.5 Bernstein多项式 | |
9.6 Catmull-Rom样条曲线 | |
9.7 Kochaneck-Bartels样条曲线 | |
9.8 贝塞尔曲线 | |
9.9 有理立方曲线 | |
9.10 有理立方球函数 | |
9.11 插值法应用之照片修复 | |
十 多项式 | 10.1 霍纳法则 |
10.2 多项式代数运算 | |
10.3 傅里叶变换 | |
十一 随机数算法 | 11.1 Xorshift算法 |
11.2 线性同余算法 | |
11.3 Sobol序列 | |
十二 高次方程 | 12. 1雅可比法 |
12.2 Newton Raphson方法 |