本书是算法入门指南,基于Python语言讲述算法实现。具体内容包括:搜索、排序和最优化算法;以人为本的算法,帮助人们决定如何接棒球或自助餐吃多少;先进的高级算法,比如机器学习和人工智能相关算法;古代文明时期的算法,如古埃及和俄罗斯农夫如何使用算法来实现乘法,古希腊人如何使用算法来找到最大公约数,以及江户时代的日本学者如何设计幻方生成算法。
Bradford Tuckfield,博士,数据科学家、咨询师,是《R无监督学习实战》(Applied Unsupervised Learning with R)一书的共同作者。研究成果发表在数学、商业管理和医学等领域的顶级学术期刊。他还为杂志和政策期刊撰写文化相关的文章。
译者:唐李洋,女,博士,毕业于合肥工业大学管理科学与工程系。现就职于中国电子科技集团公司第三十八研究所,曾游学美国、香港,数据挖掘与大数据分析研究经验颇丰,在相关领域重要国际期刊及会议发表论文数篇。译有《计算机科学中的数学》、《R语言高性能编程》、《大数据猩球:海量数据处理实践指南》、《流式架构:Kafka与MapR Streams数据流处理》、《高可用MySQL》(第1和第2版)等书。
1 用算法解决问题 1
分析式方法 2
伽利略模型 2
解x策略 4
内在物理学家 5
算法式方法 6
用脖子“思考” 6
应用查普曼算法 10
用算法解决问题 11
小结 12
2 算法简史 13
俄罗斯农夫乘法(RPM) 14
手工实现RPM 14
用Python实现RPM 18
欧几里得算法 20
手工实现欧几里得算法 21
用Python实现欧几里得算法 21
日本幻方 22
用Python创建洛书幻方 23
用Python实现Kurushima算法 24
小结 36
3 最大化和最小化 37
设定税率 37
正确步骤 38
将迈步变成算法 41
梯度上升存在的问题 43
局部极值问题 45
教育和终身收入 45
沿着教育维度爬坡——正确方式 47
从最大化到最小化 48
通用爬山法 51
什么时候不要使用算法 52
小结 53
4 排序和搜索 54
插入排序 55
插入排序中的插入 55
通过插入完成排序 57
衡量算法效率 59
为什么追求效率 59
准确衡量时间 60
计算步数 61
对比众所周知的函数 64
增加理论精度 67
使用大O符号 68
归并排序 69
归并操作 70
从归并到排序 72
睡眠排序 76
从排序到搜索 78
二进制搜索 78
二进制搜索的应用 80
小结 81
5 纯数学 82
连分式 82
Phi的压缩和交换 83
连分式的更多知识 85
生成连分式的算法 86
从小数到连分式 90
从分数到根数 92
平方根 93
巴比伦算法 93
Python中的平方根 95
随机数生成器 96
随机的可能性 96
线性同余生成器 97
评价PRNG 98
随机性的Diehard测试 100
线性反馈移位寄存器 102
小结 105
6 高级优化 106
旅行商问题 107
问题定义 107
智力对比蛮力 112
最近邻算法 113
实现最近邻搜索 113
进一步改进 115
贪婪算法 118
引入温度函数 118
模拟退火 120
算法调优 123
避免重大退步 126
允许重置 127
测试性能 128
小结 130
7 几何学 131
邮政局长问题 131
三角形基础 134
高级研究生级的三角形知识 137
寻找外心 137
提升绘图能力 140
Delaunay三角剖分 141
增量生成Delaunay三角剖分 143
实现Delaunay三角网 146
从Delaunay到Voronoi 151
小结 155
8 语言 157
为什么语言类算法很难 157
插入空格 158
定义单词列表并找到单词 159
处理复合词 161
检查空格间的潜在单词 161
导入语料库检查有效词 163
找到潜在单词的前半部分和后半部分 164
短语补全 168
分词并求n-gram 168
我们的策略 169
找到候选n+1-gram 170
基于频次选择短语 171
小结 173
9 机器学习 174
决策树 174
构建决策树 176
下载数据集 176
查看数据 177
分割数据 178
更聪明的分割 180
选择分裂变量 182
增加深度 184
评估决策树 187
过度拟合问题 189
改进和优化 192
随机森林 193
小结 193
10 人工智能 194
点格棋 195
画棋盘 196
游戏描述 197
游戏得分 198
博弈树及如何获胜 200
构建树 202
获胜 205
改进 209
小结 210
11 勇往直前 212
用算法做更多事情 213
构建聊天机器人 214
文本向量化 216
向量相似度 218
变得更快更好 220
雄心勃勃的算法 221
解开最深的奥秘 224