程序员的数学1+2+3:数学思维+概率统计+线性代数(套装共3册) 9787115002495

配送至
$ $ USD 美元

编辑推荐

程序员的数学三书包括《程序员的数学》《程序员的数学2:概率统计》《程序员的数学3:线性代数》,这套书通俗易懂,穿插大量有趣的实例和图表,以独特的编排巧妙阐述程序员和数学爱好者所需掌握的数学基础知识、概率统计和线性代数知识。三者同时也是机器学习、数据挖掘、模式识别领域必学。

作者简介

结城浩(Hiroshi Yuki),生于1963年,日本技术作家和程序员。在编程语言、设计模式、数学、加密技术等领域,编写了很多深受欢迎的入门书。代表作有《数学女孩》系列、《程序员的数学》等。

平冈和幸,专攻应用数学和物理,对机器学习兴趣浓厚。喜欢Ruby,热爱Scheme。近期被Common Lisp吸引,正在潜心研究。工学博士。

堀玄,专攻应用数学和物理,主要从事脑科学与信号处理领域的研究。喜欢Ruby、JavaScript、PostScript等语言。近期正在研究基于统计学理论的语言处理。工学博士。

目录

目 录

第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
注意边界值 28
兼顾完整性和排他性 28
使用if语句分解问题 28
逻辑的基本是两个分支 29
建立复杂命题 30
逻辑非--不是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
三值逻辑的德?摩根定律 58
囊括所有了吗 59
本章小结 60

第3章 余数--周期性和分组
本章学习内容 64
星期数的思考题(1) 64
思考题(100天以后是星期几) 64
思考题答案 64
运用余数思考 65
余数的力量--将较大的数字除一次就能分组 65
星期数的思考题(2) 66
思考题(10100天以后是星期几) 66
提示:可以直接计算吗 67
思考题答案 67
发现规律 68
直观地把握规律 68
乘方的思考题 70
思考题(1234567987654321) 70
提示:通过试算找出规律 70
思考题答案 70
回顾:规律和余数的关系 71
通过黑白棋通信 71
思考题 71
提示 73
思考题答案 73
奇偶校验 73
奇偶校验位将数字分为两个集合 74
寻找恋人的思考题 74
思考题(寻找恋人) 74
提示:先试算较小的数 74
思考题答案 75
回顾 75
铺设草席的思考题 77
思考题(在房间里铺设草席) 77
提示:先计算一下草席数 77
思考题答案 78
回顾 78
一笔画的思考题 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
思考题答案 100
编程和数学归纳法 101
通过循环表示数学归纳法 101
循环不变式 103
本章小结 107

第5章 排列组合--解决计数问题的方法
本章学习内容 110
计数--与整数的对应关系 110
何谓计数 110
注意“遗漏”和“重复” 111
植树问题--不要忘记0 111
植树问题思考题 111
加法法则 115
加法法则 115
乘法法则 117
乘法法则 117
置换 121
置换 121
归纳一下 122
思考题(扑克牌的摆法) 123
排列 125
排列 125
归纳一下 126
树形图--能够认清本质吗 128
组合 130
组合 130
归纳一下 131
置换、排列、组合的关系 132
思考题练习 134
重复组合 134
也要善于运用逻辑 136
本章小结 139

第6章 递归--自己定义自己
本章学习内容 142
汉诺塔 142
思考题(汉诺塔) 142
提示:先从小汉诺塔着手 143
思考题答案 146
求出解析式 148
解出汉诺塔的程序 149
找出递归结构 150
再谈阶乘 151
阶乘的递归定义 152
思考题(和的定义) 153
递归和归纳 153
斐波那契数列 154
思考题(不断繁殖的动物) 154
斐波那契数列 157
帕斯卡三角形 159
什么是帕斯卡三角形 159
递归定义组合数 162
组合的数学理论解释 163
递归图形 165
以递归形式画树 165
实际作图 166
谢尔平斯基三角形 167
本章小结 168

第7章 指数爆炸--如何解决复杂问题
本章学习内容 172
什么是指数爆炸 172
思考题(折纸问题) 172
指数爆炸 175
倍数游戏--指数爆炸引发的难题 176
程序的设置选项 176
不能认为是“有限的”就不假思索 178
二分法查找--利用指数爆炸进行查找 178
寻找犯人的思考题 178
提示:先思考人数较少的情况 179
思考题答案 180
找出递归结构以及递推公式 181
二分法查找和指数爆炸 183
对数--掌握指数爆炸的工具 184
什么是对数 184
对数和乘方的关系 184
以2为底的对数 186
以2为底的对数练习 186
对数图表 187
指数法则和对数 188
对数和计算尺 190
密码--利用指数爆炸加密 193
暴力破解法 193
字长和安全性的关系 193
如何处理指数爆炸 195
理解问题空间的大小 195
四种处理方法 195
本章小结 196

第8章 不可解问题--不可解的数、无法编写的程序
本章学习内容 200
反证法 200
什么是反证法 200
质数思考题 202
反证法的注意事项 203
可数 203
什么是可数 203
可数集合的例子 204
有没有不可数的集合 206
对角论证法 207
所有整数数列的集合是不可数的 207
所有实数的集合是不可数的 211
所有函数的集合也是不可数的 212
不可解问题 213
什么是不可解问题 213
存在不可解问题 214
思考题 215
停机问题 215
停机 216
处理程序的程序 217
什么是停机问题 217
停机问题的证明 219
写给尚未理解的读者 222
不可解问题有很多 223
本章小结 224

第9章 什么是程序员的数学--总结篇
本章学习内容 226
何为解决问题 229
认清模式,进行抽象化 229
由不擅长催生出的智慧 229
幻想法则 230
程序员的数学 231
目录

第1部分 聊聊概率这件事
第1章 概率的定义3
1.1 概率的数学定义3
1.2 三扇门(蒙提霍尔问题) --飞艇视角4
1.2.1 蒙提霍尔问题5
1.2.2 正确答案与常见错误6
1.2.3 以飞艇视角表述6
1.3 三元组(Ω, F, P) --上帝视角9
1.4 随机变量13
1.5 概率分布17
1.6 适于实际使用的简记方式19
1.6.1 随机变量的表示方法19
1.6.2 概率的表示方法20
1.7 ?是幕后角色21
1.7.1 不必在意?究竟是什么21
1.7.2 ?的习惯处理方式22
1.7.3 不含?(不含上帝视角)的概率论23
1.8 一些注意事项23
1.8.1 想做什么23
1.8.2 因为是面积……24
1.8.3 解释26
第2章 多个随机变量之间的关系29
2.1 各县的土地使用情况(面积计算的预热)29
2.1.1 不同县、不同用途的统计(联合概率与边缘概率的预热)30
2.1.2 特定县、特定用途的比例(条件概率的预热)31
2.1.3 倒推比例(贝叶斯公式的预热)32
2.1.4 比例相同的情况(独立性的预热)34
2.1.5 预热结束38
2.2 联合概率与边缘概率38
2.2.1 两个随机变量38
2.2.2 三个随机变量41
2.3 条件概率42
2.3.1 条件概率的定义42
2.3.2 联合分布、边缘分布与条件分布的关系45
2.3.3 即使条件中使用的不是等号也一样适用50
2.3.4 三个或更多的随机变量51
2.4 贝叶斯公式55
2.4.1 问题设置56
2.4.2 贝叶斯的作图曲57
2.4.3 贝叶斯公式61
2.5 独立性63
2.5.1 事件的独立性(定义)64
2.5.2 事件的独立性(等价表述)67
2.5.3 随机变量的独立性70
2.5.4 三个或更多随机变量的独立性(需多加注意)73
第3章 离散值的概率分布79
3.1 一些简单的例子79
3.2 二项分布82
3.2.1 二项分布的推导82
3.2.2 补充:排列nPk、组合nCk83
3.3 期望值85
3.3.1 期望值的定义85
3.3.2 期望值的基本性质87
3.3.3 期望值乘法运算的注意事项91
3.3.4 期望值不存在的情况93
3.4 方差与标准差99
3.4.1 即使期望值相同99
3.4.2 方差即“期望值离散程度”的期望值100
3.4.3 标准差102
3.4.4 常量的加法、乘法及标准化104
3.4.5 各项独立时,和的方差等于方差的和108
3.4.6 平方的期望值与方差110
3.5 大数定律112
3.5.1 独立同分布114
3.5.2 平均值的期望值与平均值的方差116
3.5.3 大数定律117
3.5.4 大数定律的相关注意事项118
3.6 补充内容:条件期望与最小二乘法120
3.6.1 条件期望的定义120
3.6.2 最小二乘法121
3.6.3 上帝视角122
3.6.4 条件方差123
第4章 连续值的概率分布127
4.1 渐变色打印问题(密度计算的预热)128
4.1.1 用图表描述油墨的消耗量(累积分布函数的预热)128
4.1.2 用图表描述油墨的打印浓度(概率密度函数预热)129
4.1.3 拉伸打印成品对油墨浓度的影响(变量变换的预热)133
4.2 概率为零的情况136
4.2.1 出现概率恰好为零的情况137
4.2.2 概率为零将带来什么问题139
4.3 概率密度函数140
4.3.1 概率密度函数140
4.3.2 均匀分布146
4.3.3 概率密度函数的变量变换147
4.4 联合分布·边缘分布·条件分布152
4.4.1 联合分布152
4.4.2 本小节之后的阅读方式155
4.4.3 边缘分布155
4.4.4 条件分布159
4.4.5 贝叶斯公式162
4.4.6 独立性163
4.4.7 任意区域的概率·均匀分布·变量变换166
4.4.8 实数值与离散值混合存在的情况174
4.5 期望值、方差与标准差174
4.5.1 期望值175
4.5.2 方差·标准差179
4.6 正态分布与中心极限定理180
4.6.1 标准正态分布181
4.6.2 一般正态分布184
4.6.3 中心极限定理187
第5章 协方差矩阵、多元正态分布与椭圆195
5.1 协方差与相关系数196
5.1.1 协方差196
5.1.2 协方差的性质199
5.1.3 分布倾向的明显程度与相关系数200
5.1.4 协方差与相关系数的局限性206
5.2 协方差矩阵208
5.2.1 协方差矩阵=方差与协方差的一览表208
5.2.2 协方差矩阵的向量形式表述209
5.2.3 向量与矩阵的运算及期望值212
5.2.4 向量值随机变量的补充说明215
5.2.5 协方差矩阵的变量变换217
5.2.6 任意方向的发散程度218
5.3 多元正态分布220
5.3.1 多元标准正态分布220
5.3.2 多元一般正态分布223
5.3.3 多元正态分布的概率密度函数228
5.3.4 多元正态分布的性质230
5.3.5 截面与投影232
5.3.6 补充知识:卡方分布239
5.4 协方差矩阵与椭圆的关系242
5.4.1 (实例一)单位矩阵与圆242
5.4.2 (实例二)对角矩阵与椭圆244
5.4.3 (实例三)一般矩阵与倾斜的椭圆247
5.4.4 协方差矩阵的局限性251
第2部分 探讨概率的应用
第6章 估计与检验257
6.1 估计理论257
6.1.1 描述统计与推断统计257
6.1.2 描述统计258
6.1.3 如何理解推断统计中的一些概念260
6.1.4 问题设定264
6.1.5 期望罚款金额265
6.1.6 多目标优化266
6.1.7 (策略一)减少候选项--最小方差无偏估计267
6.1.8 (策略二)弱化最优定义--最大似然估计269
6.1.9 (策略三)以单一数值作为评价基准--贝叶斯估计272
6.1.10 策略选择的相关注意事项275
6.2 检验理论276
6.2.1 检验理论中的逻辑276
6.2.2 检验理论概述278
6.2.3 简单假设279
6.2.4 复合假设282
第7章 伪随机数285
7.1 伪随机数的基础知识285
7.1.1 随机数序列285
7.1.2 伪随机数序列286
7.1.3 典型应用:蒙特卡罗方法287
7.1.4 相关主题:密码理论中的伪随机数序列·低差异序列289
7.2 遵从特定分布的随机数的生成291
7.2.1 遵从离散值分布的随机数的生成292
7.2.2 遵从连续值分布的随机数的生成293
7.2.3 遵从正态分布的随机数的生成296
7.2.4 补充知识:三角形内及球面上的均匀分布298
第8章 概率论的各类应用305
8.1 回归分析与多变量分析305
8.1.1 通过最小二乘法拟合直线305
8.1.2 主成分分析312
8.2 随机过程319
8.2.1 随机游走321
8.2.2 卡尔曼滤波器326
8.2.3 马尔可夫链331
8.2.4 关于随机过程的一些补充说明342
8.3 信息论343
8.3.1 熵343
8.3.2 二元熵347
8.3.3 信源编码349
8.3.4 信道编码352
附录A 本书涉及的数学基础知识359
A.1 希腊字母359
A.2 数359
A.2.1 自然数·整数359
A.2.2 有理数·实数359
A.2.3 复数360
A.3 集合360
A.3.1 集合的表述方式360
A.3.2 无限集的大小361
A.3.3 强化练习361
A.4 求和符号?362
A.4.1 定义与基本性质362
A.4.2 双重求和364
A.4.3 范围指定366
A.4.4 等比数列366
A.5 指数与对数368
A.5.1 指数函数368
A.5.2 高斯积分371
A.5.3 对数函数374
A.6 内积与长度377
附录B 近似公式与不等式381
B.1 斯特林公式381
B.2 琴生不等式381
B.3 吉布斯不等式384
B.4 马尔可夫不等式与切比雪夫不等式385
B

目录

第0章 动机1
0.1 空间想象给我们带来的直观感受1
0.2 有效利用线性近似的手段2
第1章 用空间的语言表达向量、矩阵和行列式5
1.1 向量与空间5
1.1.1 最直接的定义:把数值罗列起来就是向量6
1.1.2 “空间”的形象9
1.1.3 基底11
1.1.4 构成基底的条件16
1.1.5 维数18
1.1.6 坐标19
1.2 矩阵和映射19
1.2.1 暂时的定义19
1.2.2 用矩阵来表达各种关系(1)24
1.2.3 矩阵就是映射!25
1.2.4 矩阵的乘积=映射的合成28
1.2.5 矩阵运算的性质31
1.2.6 矩阵的乘方=映射的迭代35
1.2.7 零矩阵、单位矩阵、对角矩阵37
1.2.8 逆矩阵=逆映射44
1.2.9 分块矩阵47
1.2.10 用矩阵表示各种关系(2)53
1.2.11 坐标变换与矩阵55
1.2.12 转置矩阵=???63
1.2.13 补充(1):时刻注意矩阵规模64
1.2.14 补充(2):从矩阵的元素的角度看67
1.3 行列式与扩大率68
1.3.1 行列式=体积扩大率68
1.3.2 行列式的性质73
1.3.3 行列式的计算方法(1):计算公式▽80
1.3.4 行列式的计算方法(2):笔算法▽87
1.3.5 补充:行列式按行(列)展开与逆矩阵▽91
第2章 秩、逆矩阵、线性方程组--溯因推理95
2.1 问题设定:逆问题95
2.2 良性问题(可逆矩阵)97
2.2.1 可逆性与逆矩阵97
2.2.2 线性方程组的解法(系数矩阵可逆的情况)▽97
2.2.3 逆矩阵的计算方法▽107
2.2.4 初等变换▽110
2.3 恶性问题115
2.3.1 恶性问题示例115
2.3.2 问题的恶劣程度--核与像120
2.3.3 维数定理122
2.3.4 用式子表示“压缩扁平化”变换(线性无关、线性相关)126
2.3.5 线索的实际个数(秩)130
2.3.6 秩的求解方法(1)--悉心观察137
2.3.7 秩的求解方法(2)--笔算142
2.4 良性恶性的判定(逆矩阵存在的条件)149
2.4.1 重点是“是不是压缩扁平化映射”149
2.4.2 与可逆性等价的条件150
2.4.3 关于可逆性的小结151
2.5 针对恶性问题的对策152
2.5.1 求出所有能求的结果(1)理论篇152
2.5.2 求出所有能求的结果(2)实践篇155
2.5.3 最小二乘法166
2.6 现实中的恶性问题(接近奇异的矩阵)167
2.6.1 问题源于哪里167
2.6.2 对策示例--提克洛夫规范化170
第3章 计算机上的计算(1)--LU 分解173
3.1 引言173
3.1.1 切莫小看数值计算173
3.1.2 关于本书中的程序174
3.2 热身:加减乘运算174
3.3 LU分解176
3.3.1 定义176
3.3.2 分解能带来什么好处178
3.3.3 LU分解真的可以做到吗178
3.3.4 LU分解的运算量如何180
3.4 LU分解的步骤(1)一般情况182
3.5 利用LU分解求行列式值186
3.6 利用LU分解求解线性方程组187
3.7 利用LU分解求逆矩阵191
3.8 LU分解的步骤(2)意外发生的情况192
3.8.1 需要整理顺序的情况192
3.8.2 重新整理顺序也无济于事的状况196
第4章 特征值、对角化、Jordan标准型--判断是否有失控的危险197
4.1 问题的提出:稳定性197
4.2 一维的情况202
4.3 对角矩阵的情况203
4.4 可对角化的情况205
4.4.1 变量替换205
4.4.2 变量替换的求法213
4.4.3 从坐标变换的角度来解释215
4.4.4 从乘方的角度来解释219
4.4.5 结论:关键取决于特征值的绝对值220
4.5 特征值、特征向量220
4.5.1 几何学意义220
4.5.2 特征值、特征向量的性质225
4.5.3 特征值的计算:特征方程232
4.5.4 特征向量的计算▽240
4.6 连续时间系统246
4.6.1 微分方程247
4.6.2 一阶情况250
4.6.3 对角矩阵的情况250
4.6.4 可对角化的情况252
4.6.5 结论:特征值(的实部)的符号是关键252
4.7 不可对角化的情况255
4.7.1 首先给出结论255
4.7.2 就算不能对角化--Jordan标准型256
4.7.3 Jordan标准型的性质257
4.7.4 利用Jordan标准型解决初始值问题(失控判定的最终结论)264
4.7.5 化Jordan标准型的方法271
4.7.6 任何方阵均可化为Jordan标准型的证明279
第5章 计算机上的计算(2)--特征值算法299
5.1 概要299
5.1.1 和笔算的不同之处299
5.1.2 伽罗华理论300
5.1.3 5×5以上的矩阵的特征值不存在通用的求解步骤!302
5.1.4 有代表性的特征值数值算法303
5.2 Jacobi方法303
5.2.1 平面旋转304
5.2.2 通过平面旋转进行相似变换306
5.2.3 计算过程的优化309
5.3 幂法原理310
5.3.1 求绝对值最大的特征值310
5.3.2 求绝对值最小的特征值311
5.3.3 QR分解312
5.3.4 求所有特征值316
5.4 QR方法318
5.4.1 QR方法的原理319
5.4.2 Hessenberg矩阵321
5.4.3 Householder方法322
5.4.4 Hessenberg矩阵的QR迭代325
5.4.5 原点位移、降阶327
5.4.6 对称矩阵的情况327
5.5 反幂法328
附录A 希腊字母表330
附录B 复数331
附录C 关于基底的补充说明336
附录D 微分方程的解法341
D.1 dx/dt = f(x) 型341
D.2 dx/dt = ax + g(t) 型342
附录E 内积、对称矩阵、正交矩阵346
E.1 内积空间346
E.1.1 模长346
E.1.2 正交347
E.1.3 内积347
E.1.4 标准正交基349
E.1.5 转置矩阵351
E.1.6 复内积空间351
E.2 对称矩阵与正交矩阵--实矩阵的情况352
E.3 埃尔米特矩阵与酉矩阵--复矩阵的情况353
附录F 动画演示程序的使用方法354
F.1 执行结果354
F.2 准备工作354
F.3 使用方法355
参考文献357

序言

大家好!我是结城浩。欢迎阅读《程序员的数学》。
本书是为程序员朋友们写的数学书。
编程的基础是计算机科学,而计算机科学的基础是数学。因此,学习数学有助于巩固编程的基础,写出健壮的程序。
有的读者可能会说“但我数学不好啊”。特别是很多读者“一碰到算式就跳过不读”。坦率而言,我自己遇到书中的算式也想跳过不看。
本书尽可能减少了“大家不想看的算式”,也没有过多的定义、定理和证明。
这是为帮助程序员更容易理解编程而写的书。希望你能通过本书学到有助于编程的“数学思维”。
数学思维示例
学习“数学思维”说起来太抽象了,我们来举些具体的例子。
【条件分支和逻辑】
在编程时,我们按照条件将处理方法分为多个“分支”。C语言和Java语言中使用的是if语句。处理方法为:当满足条件时执行这条语句,不满足条件时执行另一语句。这时,我们就使用了数学领域的“逻辑”来控制程序。因此,编程时必须熟练掌握“与”“、或”“、非”、“蕴涵”等逻辑构成元素。
【循环和数学归纳法】
我们在处理大量的信息时,使用程序进行“循环”操作。比如使用for语句可以循环处理大量数据。循环中使用的就是“数学归纳法”。
【分类和计数方法】
在将许多条件和数据“分类”时,程序员必须注意不能有遗漏。这时加法法则、乘法法则、排列、组合等“计数方法”将助你一臂之力。这是程序员应该熟记于心的数学工具。
通过本书,也可以学到递归、指数、对数、余数等重要的基础思维方式。
人类和计算机的共同战线
我们写程序是为了解决人类解决不了的问题。程序员理解问题,编写程序;计算机运行程序,解决问题。
人类不擅长重复劳动,很容易厌倦,有时还会出错,但人类擅长解决问题。与此相对,计算机擅长重复劳动,但不能自行解决问题。
于是,人机合力,如虎添翼。
遇到难题,光靠人类不能解决,光靠计算机也不能解决。而人机合力就能解决问题。这也是本书要传达的主旨之一。
不过,编写程序也非易事,无论人类和计算机如何齐心合力,总有解决不了的问题。本书也对人类和计算机的极限进行了分析。
希望你在读完本书后能对以程序为媒介的人机合作有更深刻的理解。
本书面向的读者
本书主要面向的读者是程序员。不过若你对编程或数学感兴趣,读起来也会一样有意思。
你不需要精通数学。书中不会出现∑和∫等很难的算式,因此自认为数学不太好的读者也完全可以阅读。阅读本书只需具备四则运算(+-×÷)和乘方(23=2×2×2)等基础知识。除此以外的知识在书中皆有说明。
如果你对数字和逻辑感兴趣,可能会更喜欢本书。
你也不需要精通编程。不过如果稍有一些编程经验,可能会更容易理解本书内容。书中有个别例子是用C语言写的程序,不过即使不懂C语言也不妨碍理解。
本书结构
本书各章内容可以按任意顺序阅读,但笔者推荐从第1章开始按顺序阅读。
第1章对0进行讨论。以按位计数法为核心,学习如何用0来简化规则,并对“无即是有”的意义进行了思考。
第2章学习使用逻辑来整理繁琐的内容。介绍逻辑表达式、真值表、德?摩根定律、三值逻辑、卡诺图等。
第3章讨论余数。我们要记住“余数就是分组”的观点。对于一些难题,有时只要找到周期性规律就能解决。
第4章学习数学归纳法。数学归纳法只需要两个步骤就能证明无穷的断言。本章还会举例介绍使用循环不变式写出正确的循环。
第5章学习排列组合等计数方法。计数的关键在于“认清对象的性质”。
第6章学习自己定义自己的递归。通过汉诺塔、斐波那契数列、分形图形等,练习从复杂事物中发现递归结构。
第7章学习指数爆炸。计算机也很难解决含有指数爆炸的问题。我们将在这里思考研究如何将指数爆炸为我所用,解决大型问题。另外本章还将以二分法检索为例,学习将问题空间一分为二的意义。
第8章以停机问题为例,来说明许多程序上的问题是计算机如何发展都解决不了的。本章也会学到反证法和对角论证法。
第9章回顾本书学习内容,思考人类全面把握结构的能力对解决问题有多大帮助,以及人机协作具有何种意义。
致谢
首先要感谢马丁?伽德纳。小时候我痴迷于阅读您所著的《数学游戏》,至今仍记忆犹新。
此外,还要感谢支持我的广大读者和为我祈祷的基督教朋友们。
以下各位为本书提出了宝贵建议并给予了极大帮助,在此深表谢意(按日语五十音图顺序):天野胜、石井胜、岩泽正树、上原隆平、佐藤勇纪、武笠夏子、前原正英、三宅喜义。
特别感谢在本书编写过程中给予我极大关怀和支持的SoftBank出版有限公司的野泽喜美男主编。
感谢一直鼓励我的爱妻和两个儿子。
本书献给在餐桌上教我方程式乃至微积分的父亲。父亲,谢谢您!
2005年2月
结城浩
ISBN9787115002495
出版社人民邮电出版社
作者结城浩
尺寸16