本书从人们身边最常见的整数讲起,逐步深入,介绍了数论、计数、图论、机器学习等领域的一些典型算法及其原理,尤其是算法背后的数学原理,可以让读者对这些算法有更深入的理解。
本书分为11章,涵盖的主要内容有整数的素因子分解、辗转相除、更相减损、扩展欧几里得算法和Karastuba算法; 密码体制和RSA体制的加密原理;递归与分治算法、动态编程技术、特征方程和特征根;算法复杂度分析、大O和大Θ的意义;穷举法、深度优先搜索、广度优先搜索、贪心策略;A?搜索算法;遗传算法;网络流、增广路径最大流算法;最小二乘法的原理、线性回归、非线性回归;基于正态分布的异常检测、局部异常因子算法;P/NP问题。
本书内容通俗易懂,案例丰富,实用性强,立足于详细解释算法的原理,尤其是算法背后的数学原理,适合于有一定 编程基础和算法基础的读者进阶阅读,也适合 Python程序员、Java程序员等其他编程爱好者阅读。
孙博,苏州工业园区高技能领军人才,擅长人工智能、机器学习、算法和软件结构设计等,曾在CSDN等多个知名博客网站发表多篇技术文章,深受读者的喜爱。
第1章重新认识整数(整数分解)
1.1学生的代码和老师的代码2
1.2整除和余数3
1.3素数5
1.4整数分解8
1.5最大公约数11
1.6青蛙约会16
1.7最小公倍数20
1.8哥德巴赫猜想猜的是什么?22
1.9整数比自然数更多吗?23
1.10全体实数比±1之间的实数更多吗?23
1.11大整数的乘法24
1.12小结29
第2章密码疑云(数论)
2.1密码简史31
2.2被窃听与被冒充33
2.3密码体制34
2.4数字签名38
2.5数字证书40
2.6RSA体制40
2.7攻破心的壁垒49
2.8来自量子计算的挑战50
2.9小结51
第3章递归的逻辑(计数)
3.1递归关系式54
3.2不断繁殖的兔子——递归关系模型54
3.3递归关系的基本解法57
3.4递归算法61
3.5动态编程62
3.6递归与分治64
3.7打印一棵二叉树69
3.8分形之美73
3.9米诺斯的迷宫78
3.10小结87
第4章O和大Θ(算法复杂度)
4.1算法分析89
4.2运行比较法91
4.3数学分析法91
4.4大O 96
4.5大Θ101
4.6二分查找有多快?103
4.7跨床大桥能完成吗?105
4.8冒泡排序真的慢吗?108
4.9小结112
第5章搜索的策略(搜索算法)
5.1盲目搜索114
5.2八皇后问题115
5.3贪心策略122
5.4小偷的背包122
5.5骑士旅行126
5.6觐天宝匣上的拼图134
5.7小结142
第6章最短路径(A搜索)
6.1A搜索144
6.2通往基地的捷径147
6.3再战觐天宝匣162
6.4小结170
第7章退而求其次(遗传算法)
7.1小偷又来了172
7.2遗传算法172
7.3椭圆中的最大矩形184
7.4宿管员的烦恼189
7.5小结211
第8章网络流(图论)
8.1基本概念和术语213
8.2寻找最大流218
8.3补给线上的攻防战227
8.4姜子牙的粮道232
8.5缓解拥堵的高速公路234
8.6皇家飞行员的匹配236
8.7小结239
第9章拟合的策略(最小二乘法)
9.1问题的源头241
9.2最小二乘法242
9.3线性回归249
9.4非线性问题252
9.5中国人口总量的线性拟合260
9.6正态分布的拟合曲线264
9.7小结267
第10章异常检测(半监督学习和无监督学习)
10.1监督学习不灵了269
10.2基于一元正态分布的异常检测270
10.3基于多元正态分布的异常检测276
10.4局部异常因子算法285
10.5小结295
第11章浅谈P/NP问题(非确定性问题)
11.1水浒英雄卡的故事297
11.2这些奇怪的名字298
11.3如何面对NP问题301
11.4如果P=NP305
11.5小结306
附录
A同余和模运算307
B切割图片的代码308
C拉格朗日乘子法310
D多元线性回归的推导过程311
E多元函数的泰勒展开314
F最大似然原理315