作者:张海军、马江虹、张正 著
出版社:清华大学出版社
出版日期:2025
ISBN:9787302684381
电子书格式:pdf/epub/txt
网盘下载地址:下载数据结构与智能算法
内容简介
“数据结构”是计算机专业的核心课程之一,也是其他非计算机专业且与信息处理相关学科的主要选修课程之一。在计算机科学中,“数据结构”是一门综合性的专业基础课程,为计算机硬件、操作系统、编译原理、计算机网络、数据库系统及其他系统程序和大型应用程序等奠定重要的理论和实践基础。当然,在当前“云、智、大、物、移”(即云计算、人工智能、大数据、物联网、移动互联网)的时代,这些主流技术的潮流也牵引着“数据结构”不断向前发展,例如:多维图像数据结构、分布式计算结构等;同时,也包括面向各个专门领域中特殊问题的数据结构的研究和发展。本书在详细讲解基础数据结构以夯实基础为目标的同时,力求链接各主要数据结构在人工智能算法的应用,加强与先进的人工智能算法的联系,提升读者适应新技术时代的知识衔接能力,推动我国在新工科背景下信息技术相关人才的实践能力。本书适用于计算机科学与技术、软件工程、大数据科学、电子信息与通信工程、自动化等信息相关专业的本科低年级学生作为教材学习之用。
作者简介
张海军,目前,担任IEEE ISPCE-Asia国际会议主席、NCAA国际会议大会主席、IEEE高级会员、中国计算机学会服务计算专委会委员、中国人工智能学会模式识别与机器智能专委会委员、国际知名SCI期刊IEEE Trans. on Consumer Electronics编委/Neural Computing & Applications亚洲区编委/Neurocomputing编委/Pattern Analysis & Applications编委、深圳市人工智能产业协会“AI 多媒体数据挖掘”首席科学家,亚太认知智能学会秘书长。他长期开展人工智能、模式识别、机器学习、大数据分析与建模等方向的研究。近年来,主持(/完成)国家自然基金面上项目、科技部重点研发计划课题、广东省杰出青年基金项目、市自然科学基金重点项目等15项;获得中国自动化学会自然科学一等奖1项、广东省自然科学二等奖1项、深圳市自然科学二等奖1项;拥有美国和日本发明专利各1项、申请国家发明专利30余项、登记软件著作权8项
本书特色
本书适用于计算机科学与技术、软件工程、大数据科学、电子信息与通信工程、自动化等信息相关专业的本科低年级学生作为教材学习之用。
目录
第1章绪论1
1.1数据结构及其相关概念1
1.1.1数据结构讨论范围1
1.1.2定义和术语5
1.1.3抽象数据类型12
1.2算法及其分析15
1.2.1算法和数据结构关系15
1.2.2算法定义16
1.2.3算法描述18
1.2.4算法分析21
1.3程序设计基础27
1.3.1程序和数据结构关系27
1.3.2静态存储和动态存储28
1.3.3结构体类型28
1.3.4输入/输出29
1.3.5引用类型参数29
1.3.6流程控制(分支、循环等)30
1.3.7递归31
1.3.8软件构造31
1.4数据结构的历史与发展32
1.5人工智能的历史与发展34
1.6智能算法应用36
本章小结38
习题38
与前沿技术链接39
科学家精神39
第2章线性表43
2.1线性表的逻辑结构43
2.1.1线性表的定义43
2.1.2线性表的逻辑特征44
2.2线性表的抽象数据类型44
2.3线性表的顺序存储实现45
2.3.1顺序表46
2.3.2顺序表基本运算的实现46
2.3.3顺序表的基础应用49
2.3.4顺序表的智能应用50
2.4线性表的链式存储实现52
2.4.1线性链表53
2.4.2静态链表58
2.4.3循环链表59
2.4.4双向链表60
2.4.5链表的智能应用61
2.5实际中存储结构的选择63
本章小结63
习题63
与前沿技术链接65
科学家精神65
第3章栈与队列67
3.1栈的定义67
3.1.1栈的定义和术语67
3.1.2栈的抽象数据类型68
3.2栈的存储与实现69
3.2.1栈的顺序存储与实现69
3.2.2栈的链式存储与实现70
3.2.3多栈共享的存储与实现70
3.3栈的应用71
3.3.1栈与递归过程71
3.3.2迷宫问题74
3.3.3表达式求值76
3.3.4栈在智能算法中的应用78
3.4队列的定义79
3.4.1队列的定义和术语79
3.4.2队列的抽象数据类型79
3.5队列的存储与实现79
3.5.1队列的链式存储与实现79
3.5.2队列的顺序存储与实现81
3.6队列的应用82
3.6.1约瑟夫出圈问题83
3.6.2舞伴问题83
3.6.3队列在智能算法中的应用84
本章小结85
习题85
与前沿技术链接87
科学家精神87
第4章串90
4.1串的定义90
4.1.1串的定义和术语90
4.1.2串的抽象数据类型91
4.2串的存储与实现92
4.2.1串的顺序存储与实现92
4.2.2串的堆分配存储与实现93
4.2.3串的链式存储与实现94
4.3模式匹配95
4.3.1朴素模式匹配算法95
4.3.2KMP算法——改进的模式匹配算法97
4.4串的智能算法应用102
本章小结103
习题103
与前沿技术链接104
科学家精神106
第5章数组与广义表108
5.1数组的定义108
5.1.1数组的定义和术语108
5.1.2数组的抽象数据类型109
5.2数组的存储与实现109
5.2.1数组的顺序存储109
5.2.2数组的压缩存储111
5.2.3数组的链式存储115
5.3数组的智能算法应用117
5.4广义表的定义118
5.4.1广义表的定义和术语118
5.4.2广义表的抽象数据类型119
5.5广义表的存储与实现120
5.5.1表头表尾分析法120
5.5.2子表分析法120
5.5.3广义表的操作121
5.6广义表的智能算法应用122
本章小结123
习题123
与前沿技术链接124
科学家精神124
第6章树126
6.1树的相关概念126
6.1.1树的定义和术语126
6.1.2树的抽象数据类型127
6.1.3树的应用和表示方法128
6.2二叉树130
6.2.1二叉树的有关概念130
6.2.2二叉树的存储与实现133
6.2.3二叉树的遍历134
6.3线索二叉树141
6.3.1线索二叉树的表示141
6.3.2二叉树的线索化142
6.3.3线索二叉树的遍历144
6.4树和森林145
6.4.1树的存储结构145
6.4.2树、森林与二叉树的转换148
6.4.3树和森林的遍历150
6.5树的应用152
6.5.1哈夫曼树152
6.5.2判定树160
6.5.3集合的树形结构表示162
6.6树的知识点结构164
6.7树的智能算法应用165
6.7.1决策树165
6.7.2梯度提升树(GBDT)特征工程166
6.7.3树形递归神经网络(Tree Recursive Neural Network)167
6.7.4深度神经网络压缩169
本章小结170
习题170
与前沿技术链接175
科学家精神175
第7章图177
7.1图的相关概念177
7.1.1图的定义和术语177
7.1.2图的抽象数据类型178
7.2图的存储结构179
7.2.1图的顺序存储179
7.2.2图的链式存储181
7.2.3有向图的十字链表存储183
7.2.4无向图的邻接多重表存储184
7.3图的遍历185
7.3.1深度优先遍历185
7.3.2广度优先遍历187
7.4图与树的联系190
7.4.1生成树190
7.4.2无向图与开放树191
7.4.3最小生成树191
7.5无向图的双连通性196
7.5.1无向图的双连通分量196
7.5.2求关节点算法196
7.6有向图的遍历和强连通性198
7.6.1有向图的遍历198
7.6.2强连通性199
7.7有向无环图的应用200
7.7.1拓扑排序200
7.7.2关键路径202
7.8最短路径205
7.8.1单源最短路径205
7.8.2每对顶点间的最短路径207
7.9图的智能算法应用209
7.9.1图与复杂网络209
7.9.2图与社区发现(Girvan睳ewman算法)210
7.9.3图与推荐系统(协同过滤算法)211
7.9.4盖板瑕疵检测212
7.10图的知识点结构214
本章小结215
习题215
与前沿技术链接221
科学家精神222
第8章查找225
8.1查找的相关概念225
8.1.1查找表的定义和术语225
8.1.2查找表的抽象数据类型225
8.1.3查找的分类226
8.2静态查找226
8.2.1顺序表的查找蚕咝圆檎226
8.2.2有序表的查找舱郯氩檎228
8.2.3索引顺序表的查找卜挚椴檎229
8.3动态查找表230
8.3.1二叉排序树230
8.3.2平衡二叉树234
8.3.3B-树和B 树238
8.4哈希表243
8.4.1哈希表的有关概念243
8.4.2哈希函数的构造方法244
8.4.3处理冲突的方法247
8.4.4哈希表的查找和分析248
8.5查找的知识点结构及扩展252
8.5.1跳表252
8.5.2红黑树253
8.6查找的智能算法应用254
8.6.1最近邻查找算法254
8.6.2哈希查找算法255
8.6.3LSH算法256
本章小结257
习题257
与前沿技术链接258
科学家精神259
第9章内部排序262
9.1排序的相关概念262
9.1.1排序的定义和术语262
9.1.2内部排序263
9.2插入排序264
9.2.1直接插入排序264
9.2.2折半插入排序265
9.2.3表插入排序267
9.2.4希尔排序270
9.3冒泡排序和快速排序272
9.3.1冒泡排序272
9.3.2快速排序273
9.4选择排序276
9.4.1简单选择排序276
9.4.2树形选择排序277
9.4.3堆排序278
9.4.4归并排序280
9.4.5基数排序282
9.5排序算法的比较284
9.6排序的智能算法应用285
9.6.1检索模型285
9.6.2推荐系统287
本章小结288
习题289
与前沿技术链接290
科学家精神291
第10章文件与外部排序293
10.1文件及文件操作293
10.1.1文件的相关概念293
10.1.2文件操作294
10.1.3查询方式295
10.1.4文件分类295
10.2文件组织296
10.2.1顺序方式296
10.2.2索引方式298
10.2.3散列方式299
10.2.4链接方式文件和多重链表文件301
10.2.5ISAM文件302
10.2.6VSAM文件304
10.2.7UNIX文件306
10.3磁盘文件的归并分类307
10.4磁带文件的归并分类311
10.5外部排序的智能算法应用312
10.5.1分布式随机梯度下降313
10.5.2联邦学习314
本章小结315
习题315
与前沿技术链接316
科学家精神317
前言
“数据结构”被公认为计算机专业的“顶天立地”课程之一。学好这门课程将为后续课程的学习奠定坚实的基础,并对未来从事计算机行业工作时高效利用计算资源大有裨益。“数据结构”作为计算机相关专业的核心基础课程之一,伴随着计算机编程技术的发展而快速发展,其知识体系已相对完备。
然而,在当前大数据驱动的人工智能(AI)时代,尤其是通用人工智能时代,低年级本科生中经常出现“消化不了”和“吃不饱”两极分化的现象,并有持续加剧之势。基于此,本书的初衷是既覆盖知识基础(面向“消化不了”的学生群体),又链接最新的人工智能技术(面向“吃不饱”的学生群体)。同时考虑到不能僭越后续如“数据挖掘”“机器学习”“深度学习”等人工智能相关课程的内容,本书力图浅尝辄止,为低年级的本科生种下一颗人工智能的种子。实际上,在许多后期的研究和工作中,经常会发现某些先进的人工智能算法思想仍然与数据结构的基本思想一致,甚至直接借鉴而完成这些人工智能算法的设计。因此,为了加强数据结构和人工智能的联系,本书初步探索如何链接二者。