数据与算法

2017年清华大学出版社出版的图书
《数据与算法》是2017年10月清华大学出版社出版的图书，作者是吴及，陈健生，白铂，本书从数据与算法的相互作用出发，涵盖数据结构、数学模型、数值分析和算法设计思想等相互关联的重要内容。
内容简介
本书从数据与算法的相互关系入手，内容涵盖了传统的数据结构和数值分析，并增加了数学模型和算法设计思想的介绍。 全书分四部分，第一部分，介绍数据、数学模型和算法的基本概念，是全书的基础；数据结构部分从数学模型和问题的角度介绍线性结构、树结构、图结构，以及查找和排序这两种常见的非数值问题；数值分析部分从问题的角度介绍误差分析、实数的表示和运算、一元非线性方程、线性方程组、拟合与插值、化问题；第四部分，从算法设计思想的角度介绍蛮力法、分治法、贪心法、动态规划、搜索算法和*算法，以及求解具体问题时的应用实例。
图书目录
目录
第 1章数据、数学模型和算法 ................................................................................ 1
1.1数据时代 ................................................................................................... 1
1.1.1什么是数据 ..................................................................................... 1
1.1.2大数据时代 ..................................................................................... 2
1.1.3数据的重要性 .................................................................................. 4
1.2数据的表示 ................................................................................................ 5
1.2.1二元关系及其性质 ........................................................................... 5
1.2.2数据的逻辑结构 .............................................................................. 9
1.2.3数据的存储结构 .............................................................................12
1.2.4抽象数据类型 .................................................................................12
1.3数学模型 ..................................................................................................13
1.3.1什么是数学模型 .............................................................................13
1.3.2数学模型的种类 .............................................................................14
1.3.3数学模型与计算机 ..........................................................................15
1.3.4数据结构 .......................................................................................16
1.4算法及复杂度分析 .....................................................................................16
1.4.1什么是算法 ....................................................................................16
1.4.2问题与解 .......................................................................................17
1.4.3算法的分析与评价 ..........................................................................18
1.5本章小结 ..................................................................................................22
第 2章线性结构...................................................................................................24
2.1线性表 .....................................................................................................24
2.1.1线性表的概念及其抽象数据类型 ......................................................24
2.1.2线性表的顺序存储——顺序表 .........................................................27
2.1.3线性表的链式存储——链表 .............................................................30
2.1.4线性表小结 ....................................................................................35
2.2栈 ............................................................................................................35
2.2.1栈的概念与实现 .............................................................................35
2.2.2栈的应用 .......................................................................................38
2.2.3递归 ..............................................................................................41
2.3队列 .........................................................................................................48
2.3.1队列的概念与实现 ..........................................................................48
2.3.2优先级队列 ....................................................................................51
2.4字符串 .....................................................................................................55
2.4.1字符串的概念和 ADT ......................................................................55
2.4.2字符串的存储表示 ..........................................................................56
2.4.3字符串的模式匹配和简单匹配算法 ...................................................57
2.4.4 KMP算法 .....................................................................................58
2.5本章小结 ..................................................................................................61
第 3章树与二叉树 ...............................................................................................62
3.1树的基本概念 ...........................................................................................62
3.1.1普遍存在的树结构 ..........................................................................62
3.1.2树的定义和性质 .............................................................................65
3.2二叉树 .....................................................................................................67
3.2.1二叉树的定义和性质 .......................................................................68
3.2.2二叉树的表示和实现 .......................................................................70
3.2.3二叉树的遍历 .................................................................................76
3.2.4二叉树运算 ....................................................................................81
3.2.5二叉树的建立 .................................................................................83
3.3二叉树的应用 ...........................................................................................84
3.3.1表达式求值 ....................................................................................84
3.3.2二叉搜索树 ....................................................................................85
3.3.3 Hu.man树与编码 ..........................................................................89
3.3.4堆 .................................................................................................95
3.4并查集 ................................................................................................... 102
3.5本章小结 ................................................................................................ 103
第 4章图........................................................................................................... 105
4.1图的基本概念 ......................................................................................... 105
4.1.1图的定义和概念 ........................................................................... 105
4.1.2图的抽象数据类型 ........................................................................ 110
4.1.3欧拉路径 ..................................................................................... 110
4.2图的存储结构 ......................................................................................... 112
4.2.1图的邻接矩阵表示 ........................................................................ 112
4.2.2图的邻接表表示 ........................................................................... 115
4.2.3图的其他表示方法 ........................................................................ 119
4.3图的遍历 ................................................................................................ 122
4.3.1图的深度优先遍历 ........................................................................ 123
目录 IX 4.3.2图的广度优先遍历 ........................................................................ 124
4.3.3图遍历的应用 ............................................................................... 125
4.3.4图的连通性 .................................................................................. 128
4.4有向图与有向无环图 ............................................................................... 129
4.4.1有向图的连通性和传递闭包 ........................................................... 129
4.4.2有向无环图和拓扑排序 ................................................................. 132
4.4.3关键路径 ..................................................................................... 135
4.5小生成树 ............................................................................................. 137
4.5.1图的生成树与小生成树 .............................................................. 137
4.5.2普里姆 (Prim)算法 ...................................................................... 139
4.5.3克鲁斯卡尔 (Kruskal)算法 ............................................................ 142
4.6短路径问题 ......................................................................................... 144
4.6.1单源短路径 ............................................................................... 145
4.6.2全源短路径 ............................................................................... 147
4.7流 ................................................................................................... 149
4.7.1网络流的基本概念 ........................................................................ 150
4.7.2 Ford-Fulkerson方法 ..................................................................... 151
4.8匹配 ....................................................................................................... 154
4.8.1二分图和匹配的基本概念 .............................................................. 154
4.8.2匈牙利算法 .................................................................................. 155
4.8.3匹配与流 ........................................................................ 157
4.9本章小结 ................................................................................................ 157
第 5章查找和排序 ............................................................................................. 159
5.1线性查找表 ............................................................................................. 159
5.1.1顺序查找 ..................................................................................... 160
5.1.2折半查找 ..................................................................................... 161
5.1.3斐波那契查找 ............................................................................... 162
5.1.4线性查找表的性能比较 ................................................................. 163
5.2静态索引结构 ......................................................................................... 164
5.2.1索引查找 ..................................................................................... 164
5.2.2索引存储方式 ............................................................................... 164
5.2.3索引文件结构 ............................................................................... 167
5.3二叉搜索树查找性能 ............................................................................... 169
5.4散列方法 ................................................................................................ 172
5.4.1散列技术的基本思想 ..................................................................... 172
5.4.2散列函数 ..................................................................................... 173
5.4.3冲突处理 ..................................................................................... 175
5.4.4散列的删除 .................................................................................. 178
5.4.5散列的性能 .................................................................................. 178
5.5排序的概念及算法性能分析 ..................................................................... 179
5.6基本排序方法 ......................................................................................... 180
5.6.1冒泡排序 ..................................................................................... 181
5.6.2插入排序 ..................................................................................... 182
5.6.3直接选择排序 ............................................................................... 187
5.6.4基本排序方法的比较 ..................................................................... 188
5.7快速排序 ................................................................................................ 189
5.7.1快速排序的过程 ........................................................................... 189
5.7.2快速排序的性能分析 ..................................................................... 191
5.8归并排序 ................................................................................................ 192
5.8.1二路归并 ..................................................................................... 192
5.8.2自底向上的归并排序 ..................................................................... 192
5.8.3自顶向下的归并排序 ..................................................................... 194
5.9堆和堆排序 ............................................................................................. 195
5.9.1堆排序的思想 ............................................................................... 195
5.9.2堆排序的实现 ............................................................................... 197
5.10内排序方法分析 .................................................................................... 198
5.10.1排序方法的下界 ........................................................................ 198
5.10.2内排序方法的比较 ..................................................................... 199
5.11本章小结 .............................................................................................. 200
第 6章数值计算问题 .......................................................................................... 202
6.1引言 ....................................................................................................... 202
6.2近似与误差 ............................................................................................. 204
6.2.1误差的定义 .................................................................................. 204
6.2.2误差的分类 .................................................................................. 209
6.2.3条件数与敏感性 ........................................................................... 212
6.3实数的表示与运算 ................................................................................... 214
6.3.1浮点数系统 .................................................................................. 214
6.3.2浮点运算 ..................................................................................... 217
6.4一元方程求解 ......................................................................................... 219
6.4.1一元方程 ..................................................................................... 219
6.4.2二分法 ......................................................................................... 220
6.4.3不动点法 ..................................................................................... 222
6.4.4牛顿法 ......................................................................................... 225
6.4.5迭代误差分析 ............................................................................... 229
6.5线性方程组求解 ...................................................................................... 232
6.5.1线性方程组 .................................................................................. 232
目录 XI 6.5.2向量与矩阵范数 ........................................................................... 234
6.5.3线性方程组敏感性 ........................................................................ 239
6.5.4线性方程组直接解法 ..................................................................... 242
6.5.5线性方程组迭代解法 ..................................................................... 252
6.6拟合与插值 ............................................................................................. 256
6.6.1线性小二乘 ............................................................................... 256
6.6.2多项式插值 .................................................................................. 264
6.7本章小结 ................................................................................................ 267
第 7章化初步 ............................................................................................. 268
7.1优化问题及其性质 ................................................................................... 268
7.2无约束优化问题 ...................................................................................... 271
7.2.1优化条件 ..................................................................................... 271
7.2.2一维优化 ..................................................................................... 272
7.2.3多维优化 ..................................................................................... 275
7.3约束优化问题 ......................................................................................... 279
7.3.1优化条件 ..................................................................................... 279
7.3.2序列二次规划法 ........................................................................... 282
7.3.3障碍法 ......................................................................................... 284
7.4凸优化 ................................................................................................... 286
7.4.1凸集合 ......................................................................................... 286
7.4.2凸函数 ......................................................................................... 289
7.4.3凸优化问题 .................................................................................. 292
7.5组合优化的数值求解 ............................................................................... 294
7.5.1组合优化问题 ............................................................................... 294
7.5.2线性规划初步 ............................................................................... 296
7.5.3顶点覆盖的线性规划求解 .............................................................. 297
7.6本章小结 ................................................................................................ 298
第 8章随机算法................................................................................................. 299
8.1随机性与随机数 ...................................................................................... 299
8.2舍伍德与拉斯维加斯算法 ......................................................................... 301
8.3蒙特卡洛算法 ......................................................................................... 304
8.4模拟退火与遗传算法 ............................................................................... 307
8.5本章小结 ................................................................................................ 310
第 9章算法设计思想 .......................................................................................... 311
9.1蛮力法 ................................................................................................... 311
9.2分治法 ................................................................................................... 313
9.2.1分治法的运行时间 ........................................................................ 314
9.2.2分治法应用举例 ........................................................................... 316
9.2.3减治法 ......................................................................................... 319
9.2.4变治法 ......................................................................................... 321
9.3贪心法 ................................................................................................... 323
9.4动态规划 ................................................................................................ 326
9.4.1动态规划的基本原理 ..................................................................... 326
9.4.2算法设计举例 ............................................................................... 328
9.5搜索算法：回溯法与分支定界法 ............................................................... 334
9.5.1组合优化问题的解空间 ................................................................. 334
9.5.2回溯法 ......................................................................................... 338
9.5.3分支定界法 .................................................................................. 342
作者简介
作者简介：吴及，清华大学电子工程系副系主任，长聘副教授，博士生导师。1996年和2001年在清华大学电子工程系获得学士和工学博士学位。2013—2015年在美国佐治亚理工学院担任访问学者。主要从事数据与算法方面的教学工作，以及人工智能和大数据领域的研究工作。2006起担任清华-讯飞语音技术联合实验室主任。目前是中国语音产业联盟技术工作组组长。先后获得2011年度国家科技进步二等奖和2014年度北京市科学技术奖一等奖。已在国内外刊物和学术会议上发表论文一百余篇，现在为IEEE高级会员。陈健生，博士，出生于安徽省芜湖市，毕业于清华大学计算机科学与技术系（学士、硕士）和香港中文大学计算机科学与工程系（博士）。目前在清华大学电子工程系任副教授，博士生导师。教学方面，担任电子系本科生核心课“数据与算法”及限选课“视听信息系统导论”的主讲教师；曾获清华大学第六届青年教师教学大赛理工科一等奖。主要研究领域为计算机视觉与机器学习。在国际期刊及会议上发表有多篇论文，曾获2013年度北京市科学技术奖一等奖。白铂，男，1982年生于陕西西安，2004年毕业于西安电子科技大学，获学士学位，陕西省优秀毕业生。2010毕业于清华大学，获博士学位，电子系学术新秀。2010—2012年在香港科技大学做博士后研究。随后，进入清华大学电子系任讲师，硕士生导师。曾获2016年清华大学青年教师教学基本功大赛一等奖（理工组）。2017年加入华为技术有限公司2012实验室，任未来网络理论实验室高级研究员。研究方向包括无线协作资源分配、Cloud/Fog-无线计算网络、网络信息论、网络大数据分析等。发表学术论文近80篇，其中SCI检索论文近30篇，曾获IEEE ICC 2016论文奖。