《程序员的数学(第2版)》简介:

程序员数学 第2版》面向程序员介绍了编程中常用的数学知识,借以培养初级程序员的数学思维。读者无须精通编程,也无须精通数学,只要具备四则运算和乘方等基础知识,即可阅读本书。

《程序员的数学 第2版》讲解了二进制计数法、逻辑、余数、排列组合、递归、指数爆炸、不可解问题等许多与编程密切相关的数学方法,分析了哥尼斯堡七桥问题、高斯求和、汉诺塔、斐波那契数列等经典问题和算法。引导读者深入理解编程中的数学方法和思路。

《程序员的数学 第2版》新增一个附录来介绍机器学习的基础知识,内容涉及感知器、损失函数、梯度下降法和神经网络,旨在带领读者走进机器学习的世界。

《程序员的数学(第2版)》摘录:

人类不擅长某事,正是这些不擅长,催生出了各种闪耀的智慧。   人类不擅长处理庞大的数字,因此在计数法上下了很多工夫,罗马数字表示法,指数表示法等。   人类不擅长毫无差错地进行复杂判断,因此逻辑就诞生了。从此可以通过逻辑表达式进行推论,也可以通过卡诺图解决复杂逻辑。   人类不擅长管理大量事物,因此进行了分组。将同一组的事物视为同类事物,管理起来就会方便许多。   人类不擅长处理无穷,因此通过有限的步骤处理无穷。   ...诸如此类,人类运用智慧,细心钻研,不断地挑战问题。想法设法缩小问题规模,降低复杂度,使问题达到"可以机械式地解决"的状态。   只要达到这个状态,就能将接力棒传至下一位赛跑运动员----计算机。   你有不擅长的地方吗?那里或许会让你产生新的智慧,找到新窍门呢!

《程序员的数学(第2版)》目录:

第 1章 0 的故事——无即是有
本章学习内容 2
小学一年级的回忆 2
10进制计数法 3
什么是10进制计数法 3
分解2503 3
2进制计数法 4
什么是2进制计数法 4
分解1100 5
基数转换 6
计算机中为什么采用2 进制计数法 8
按位计数法 10
什么是按位计数法 10
不使用按位计数法的罗马数字 11
指数法则 12
10的0次方是什么 12
10–1是什么 13
规则的扩展 14
对20进行思考 14
2–1是什么 15
0所起的作用 16
0的作用:占位 16
0的作用:统一标准,简化规则 16
日常生活中的0 17
人类的极限和构造的发现 18
重温历史进程 18
为了超越人类的极限 19
本章小结 20
第 2章 逻辑——真与假的二元世界
本章学习内容 22
为何逻辑如此重要 22
逻辑是消除歧义的工具 22
致对逻辑持否定意见的读者 23
乘车费用问题—兼顾完整性和排他性 23
收费规则 23
命题及其真假 24
有没有“遗漏” 24
有没有“重复” 25
画一根数轴辅助思考 26
注意边界值 27
兼顾完整性和排他性 28
使用if 语句分解问题 28
逻辑的基本是两个分支 29
建立复杂命题 29
逻辑非—不是A 30
逻辑与—A并且B 32
逻辑或—A或者B 34
异或—A或者B(但不都满足) 37
相等—A和B相等 39
蕴涵—若A则B 40
囊括所有了吗 45
德摩根定律 46
德摩根定律是什么 46
对偶性 47
卡诺图 48
二灯游戏 48
首先借助逻辑表达式进行思考 49
学习使用卡诺图 50
三灯游戏 52
包含未定义的逻辑 54
带条件的逻辑与(&&) 55
带条件的逻辑或(||) 57
三值逻辑中的否定(!) 58
三值逻辑的德摩根定律 59
囊括所有了吗 60
本章小结 60
第3章 余数——周期性和分组
本章学习内容 64
星期数的思考题(1) 64
思考题(100 天以后是星期几) 64
思考题答案 65
运用余数思考 65
余数的力量—将较大的数字除一次就能分组 65
星期数的思考题(2) 66
思考题(10100 天以后是星期几) 66
提示:可以直接计算吗 67
思考题答案 67
发现规律 68
直观地把握规律 68
乘方的思考题 70
思考题(1 234 567987 654 321) 70
提示:通过试算找出规律 70
思考题答案 70
回顾:规律和余数的关系 71
通过黑白棋通信 71
思考题 71
提示 73
思考题答案 73
奇偶校验 74
奇偶校验位将数字分为2 个集合 74
寻找恋人的思考题 74
思考题(寻找恋人) 74
提示:先试算较小的数 75
思考题答案 75
回顾 76
铺设草席的思考题 77
思考题(在房间里铺设草席) 77
提示:先计算一下草席数 78
思考题答案 78
回顾 79
一笔画的思考题 79
思考题(哥尼斯堡七桥问题) 79
提示:试算一下 80
提示:考虑简化一下 81
提示:考虑入口和出口 82
思考题答案 82
奇偶校验 85
本章小结 86
第4章 数学归纳法——如何征服无穷数列
本章学习内容 88
高斯求和 88
思考题(存钱罐里的钱) 88
思考一下 89
小高斯的解答 89
讨论一下小高斯的解答 89
归纳 91
数学归纳法—如何征服无穷数列 91
0 以上的整数的断言 92
小高斯的断言 93
什么是数学归纳法 93
试着征服无穷数列 94
用数学归纳法证明小高斯的断言 95
求出奇数的和—数学归纳法实例 96
通过数学归纳法证明 96
通过数学归纳法证明 97
图形化说明 98
黑白棋思考题—错误的数学归纳法 99
思考题(黑白棋子的颜色) 99
提示:不要为图所惑 100
思考题答案 101
编程和数学归纳法 101
通过循环表示数学归纳法 101
循环不变式 104
本章小结 107
第5章 排列组合——解决计数问题的方法
本章学习内容 110
计数—与整数的对应关系 110
何谓计数 110
注意“遗漏”和“重复” 111
植树问题—不要忘记0 111
植树问题思考题 111
加法法则 115
加法法则 115
乘法法则 118
乘法法则 118
置换 121
置换 121
归纳一下 122
思考题(扑克牌的摆法) 123
排列 124
排列 124
归纳一下 126
树形图—能够认清本质吗 128
组合 130
组合 130
归纳一下 131
置换、排列、组合的关系 133
思考题练习 134
重复组合 135
也要善于运用逻辑 137
本章小结 140
第6章 递归——自己定义自己
本章学习内容 144
汉诺塔 144
思考题(汉诺塔) 145
提示:先从小汉诺塔着手 145
思考题答案 148
求出解析式 150
解出汉诺塔的程序 151
找出递归结构 152
再谈阶乘 154
阶乘的递归定义 154
思考题(和的定义) 155
递归和归纳 156
斐波那契数列 156
思考题(不断繁殖的动物) 157
斐波那契数列 159
帕斯卡三角形 162
什么是帕斯卡三角形 162
递归定义组合数 165
组合的数学理论解释 165
递归图形 167
以递归形式画树 167
实际作图 168
谢尔平斯基三角形 170
本章小结 171
第7章 指数爆炸——如何解决复杂问题
本章学习内容 174
什么是指数爆炸 174
思考题(折纸问题) 174
指数爆炸 177
倍数游戏—指数爆炸引发的难题 178
程序的设置选项 178
不能认为是“有限的”就不假思索 180
二分法查找—利用指数爆炸进行查找 180
寻找犯人的思考题 180
提示:先思考人数较少的情况 181
思考题答案 182
找出递归结构以及递推公式 183
二分法查找和指数爆炸 185
对数—掌握指数爆炸的工具 186
什么是对数 187
对数和乘方的关系 187
以2为底的对数 188
以2为底的对数练习 189
对数图表 189
指数法则和对数 191
对数和计算尺 192
密码—利用指数爆炸加密 195
暴力破解法 195
字长和安全性的关系 196
如何处理指数爆炸 197
理解问题空间的大小 197
四种处理方法 198
本章小结 199
第8章 不可解问题——不可解的数、无法编写的程序
本章学习内容 202
反证法 202
什么是反证法 202
质数思考题 204
反证法的注意事项 205
可数 205
什么是可数 205
可数集合的例子 206
有没有不可数的集合 208
对角论证法 209
所有整数数列的集合是不可数的 209
所有实数的集合是不可数的 213
所有函数的集合也是不可数的 214
不可解问题 215
什么是不可解问题 215
存在不可解问题 216
思考题 217
停机问题 218
停机 218
处理程序的程序 219
什么是停机问题 219
停机问题的证明 221
写给尚未理解的读者 224
不可解问题有很多 226
本章小结 226
第9章 什么是程序员的数学——总结篇
本章学习内容 230
何为解决问题 233
认清模式,进行抽象化 233
由不擅长催生出的智慧 233
幻想法则 234
程序员的数学 235
附录 迈向机器学习的第 一步
本附录学习内容 238
什么是机器学习 239
受到广泛关注的机器学习技术 239
机器学习是随着时代发展诞生的技术 239
预测问题和分类问题 240
预测问题 240
分类问题 243
感知器 245
什么是感知器 245
加权求和 247
激活函数 249
感知器小结 250
机器学习是如何“学习”的 250
学习的流程 250
训练数据与测试数据 251
损失函数 252
梯度下降法 254
作为程序员要做些什么 256
神经网络 256
什么是神经网络 256
误差反向传播法 258
深度学习和强化学习 259
人类就这样没用了吗 260
附录小结 261
· · · · · ·