《大数据算法设计与分析》以大数据为背景,以求解大数据计算问题的计算方法(即亚线性时间计算方法、压缩计算方法、抽样计算方法、增量式计算方法、分布式并行计算方法)为主线,系统地介绍大数据计算问题求解算法的设计与分析的理论与方法,主要包括: 大数据计算问题的复杂性分类、大数据计算问题的亚线性时间求解算法的设计与分析方法、基于抽样的大数据计算问题的求解算法的设计与分析方法、基于数据压缩的大数据计算问题的求解算法的设计与分析方法、大数据计算问题的增量式求解算法的设计与分析方法、大数据计算问题的分布式并行求解算法的设计与分析方法。本书以作者在大数据计算方面的研究成果为主,也覆盖了大数据算法研究领域的部分新研究成果。 本书可以作为高等学校数据科学与大数据技术专业和计算机科学与技术专业高年级本科生或研究生的大数据算法课程的教材,也可以作为大数据研究人员的参考书。
《大数据算法设计与分析》以大数据基础研究与大数据应用为背景,以大数据算法设计与分析方法学为主线,以多个重要大数据计算问题为例,全面、系统、深入地介绍大数据算法设计与分析的原理与方法。
? 著作的内容包括大数据算法方面的最新和最重要研究成果,全面反映大数据算法研究的新进展。
? 著作注重理论与实际相结合,以具有实际应用背景的大数据计算问题为例,既细致地介绍其求解算法的设计方法,又对算法的正确属性和复杂性进行精致的理论分析,使得读者不仅掌握求解重要大数据计算问题的大数据算法的设计和分析方法,同时建立坚实的大数据算法设计与分析的基础理论,不但具有解决实际应用领域的大数据问题的求解算法的设计和分析能力,也具有从事大数据算法设计与分析的基础研究的创新能力。
? 著作既能够满足大数据基础研究者和应用开发者的需要,也能满足数据科学与大数据技术专业研究生的教学需要,还能通过适当内容选择满足数据科学与大数据技术专业本科生的教学需要。
信息技术的快速发展引发了数据规模的爆炸式增长,大数据已经几乎无处不在,引起了国内外学术界、工业界和政府部门的高度重视,被认为是一种新的非物质生产要素,蕴含着重大价值,并将导致科学研究的深刻变革,对国家的经济发展、社会发展、社会安全稳定、科学进展具有战略性、全局性和长远性的意义。
大数据的重大价值需要通过求解各种各样的以大数据为输入的计算问题(以下简称大数据计算问题)来发掘利用。大数据计算问题的求解算法(以下简称大数据算法或大数据计算方法)的设计与分析是大数据价值发掘利用的关键。正如算法是计算机科学技术的核心一样,大数据算法是大数据科学技术的核心,也是大数据的实际应用的重要基础。
虽然算法已经具有悠久的研究历史,研究成果层出不穷,促进了计算机的普遍应用,但是,由于目前计算资源的受限性和大数据的巨大规模,大数据问题的求解十分困难,多项式时间已经不再是大数据计算问题易解性的标准,多项式时间算法也不再是大数据计算问题的有效求解算法。传统计算复杂性理论和多项式时间算法面临着大数据计算问题的严峻挑战。大数据算法已经成为大数据应用的瓶颈。因此,大数据算法的设计与分析已经成为计算机科学技术的重要研究领域,吸引了大量的科技工作者。
从20世纪80年代开始,越来越多的计算机科技工作者开始从事大数据算法设计与分析的研究工作,也有一些计算机科学工作者开始从事大数据计算的复杂性理论研究。最近几年,随着大数据的迅速增长和大数据应用的风起云涌,人们对大数据算法设计与分析的研究兴趣有增无减,大有方兴未艾之势。目前,人们在大数据算法设计与分析方面已经取得了很多研究成果,为大数据应用奠定了初步基础,促进了大数据应用的进展。
遗憾的是,系统介绍大数据算法设计与分析的理论与技术的学术著作目前在国内外还很少见。为了满足国内外大数据计算理论研究者、大数据管理系统研制者、大数据应用系统开发者的需要,我撰写了这本书,试图为从事大数据研究与开发的科技工作者提供尽量系统全面的大数据算法设计与分析的知识,希望能够为大数据的基础研究、系统研制和应用开发尽绵薄之力。
在多年大数据算法研究过程中,我对大数据计算方法进行了长期探索,提出和验证了一些适用于大数据问题求解的计算方法,如亚线性时间计算方法、基于抽样的计算方法、基于压缩的计算方法、增量式计算方法、分布式并行计算方法等。本书以这些方法为主线,分为7章,系统地介绍5种主要大数据计算方法,包括大数据的亚线性时间计算方法、大数据的抽样计算方法、大数据的压缩计算方法、大数据的增量式计算方法和大数据的分布式并行计算方法。本书的结构如图1所示。第1章揭示了本书的撰写动机。第2章讨论大数据计算复杂性的几个基本理论问题和大数据计算问题的分类,为后面5章奠定理论基础。第3章描述了大数据计算的核心方法,与后面4章紧密相关。第4章、第5章、第6章和第7章则相互独立,介绍了其他4种重要的大数据计算方法。
图1本书的结构
下面简要地介绍各章的基本内容。
〖1〗〖1〗第1章讨论大数据、大数据算法和大数据计算的基本概念,介绍大数据计算面临的挑战和研究问题,综述大数据计算复杂性理论和高效算法两方面的研究进展,探讨大数据计算复杂性理论和高效大数据算法的研究问题。
第2章以随机存取图灵机(RATM)为大数据计算模型,介绍大数据计算复杂性的几个基本理论问题,包括RATM的定义和性能分析、基于RATM的大数据计算的易解性标准、基于RATM的大数据计算问题分类(如单纯易解类问题、伪易解类问题、可近似易解类问题等)以及类之间的关系、归约和大数据计算问题的完全性。第2章是其他各章的理论基础。
第3章介绍大数据的亚线性时间计算方法。这一章首先以两个单纯易解性大数据计算问题为例,讨论单纯易解性大数据计算问题的亚线性时间求解算法的设计与分析的原理和方法;然后以两个伪易解性大数据计算问题为例,讨论通过多项式时间预处理,实现伪易解性大数据计算问题的亚线性时间求解算法的设计与分析的原理和方法;最后以3个难解性大数据问题为例,讨论非易解性大数据计算问题的亚线性时间近似算法的设计与分析的原理和方法。
第4章介绍大数据的基于随机抽样的近似计算方法,包括(ε,)近似计算方法。这一章首先介绍抽样计算方法的基本思想和需要解决的关键问题;然后以多个不同的难解性大数据计算问题为例,讨论基于随机抽样的高效大数据算法的设计与分析的主要方法和基本原理。
第5章介绍大数据的压缩计算方法。这一章介绍的大数据计算方法是精确计算方法。这一章首先介绍压缩计算方法的基本思想、适用范围、需要解决的问题;然后介绍支持压缩计算的数据压缩方法;最后以不同的大数据计算问题为例,介绍基于压缩计算方法的大数据算法的设计与分析的主要方法和基本原理。
第6章介绍大数据的增量式计算方法。这一章首先介绍大数据增量式计算方法的基本概念和思想;然后以不同的大数据计算问题为例,介绍基于增量式计算方法的大数据算法的设计与分析的主要方法和基本原理,包括增量式流数据查询与挖掘算法。
第7章讨论如何在计算机机群或云计算环境下设计与分析求解大数据计算问题的分布式并行计算方法。这一章首先介绍并行计算系统和并行算法设计与分析的基本概念;然后介绍有效支持大数据分布式并行计算的大数据的分布式存储方法;最后以集合代数操作和关系代数操作为例,介绍求解大数据计算问题的分布式并行算法的设计与分析的主要方法和基本原理,特别是充分利用大数据分布式存储方法特点的分布式并行大数据算法的设计与分析的主要方法和基本原理。
本书不仅凝结着作者的心血,也凝结着所有对本书撰写给予鼓励、支持、关心和帮助的同志们的心血。
在本书问世之际,我特别感谢已经毕业并留在我身边工作的博士高宏教授、王宏志教授、邹兆年教授、程思瑶教授、张岩副教授、石胜飞副教授、张炜副教授、骆吉洲副教授、刘显敏副教授、韩希先副教授、苗东菁副教授、张开旗讲师,也特别感谢刚刚毕业和在读博士研究生石拓、朱同鑫、马恒钊、高翔宇、肖星星、李逸飞、巢泽敏、高天鹏、吕伯涵、韩帅、张楚涵等同学。这些已经毕业和在读的同学从20世纪90年代末开始陆续加入我的团队,每个人都陪伴我开展大数据科学技术研究至少5年,本书的主要内容都来自我们共同发表的学术论文,凝结着他们的心血。在本书的撰写过程中,很多同学也从多方面给予了我大力的支持和帮助。
我由衷地感谢国家自然科学基金委员会和国家科技部的支持。我的研究工作多次得到国家自然科学基金重点项目和面上项目的资助,也多次得到国家科技部863计划项目和973计划项目的资助,特别是本书得到了国家自然科学基金重点项目大数据分析的计算理论与高效算法(项目批准号: 61832003)和重大项目基于超算的大数据分析处理基础算法与编程支撑环境(项目批准号: U1811461)的直接资助。
我真诚地感谢我的妻子石敏教授。没有她的鼓励、支持、耐心和长期操劳,本书是难以完成的。我也要感谢我的女婿蔡志鹏教授和女儿李英姝教授的鼓励和鞭策,他们的鞭策对本书的尽快完成起到了重要作用。
由于作者水平有限,书中难免存在错误和不当之处,恳切希望同行和广大读者批评指正。
作者2022年1月
李建中,中国科学院深圳理工大学(筹)教授,哈尔滨工业大学教授,国家杰出青年基金获得者,国家973项目首席科学家。主要从事大数据计算等研究,主持完成国家973计划、国家863计划、国家自然科学基金重大与重点等项目20余项,在国际一流学术期刊和会议发表120余篇论文,他引2万余次,H-index 50,并研制了多个计算机软硬件系统,多次获得国家级和省部级科技进步和自然科学奖。
第1章绪论1
1.1大数据、大数据算法与大数据计算2
1.2大数据计算的挑战和研究问题3
1.2.1大数据计算的挑战3
1.2.2大数据计算的研究问题6
1.3大数据计算复杂性理论和算法的研究进展7
1.3.1大数据计算复杂性理论的研究进展7
1.3.2大数据算法设计方法的研究进展10
1.3.3大数据计算问题求解算法的研究进展12
1.4本章参考文献17
1.4.1本章参考文献注释17
1.4.2本章参考文献列表17
第2章大数据计算问题的复杂性26
2.1随机存取图灵机26
2.1.1确定随机存取图灵机26
2.1.2通用随机存取图灵机29
2.2大数据计算问题的复杂性与分类33
2.2.1大数据计算问题的复杂性33
2.2.2单纯易解性大数据计算问题类35
2.2.3伪易解性大数据计算问题类39
2.3归约与大数据计算问题的完全性41
2.3.1DLOGTIME归约41
2.3.2大数据计算问题的完全性44
2.4本章参考文献44
2.4.1本章参考文献注释44
2.4.2本章参考文献列表45
〖1〗〖1〗第3章大数据的亚线性时间计算方法46
3.1亚线性时间算法基础46
3.1.1亚线性时间算法的基本概念46
3.1.2数学基础50
3.2单纯亚线性时间精确算法54
3.2.1后继搜索算法54
3.2.2德洛奈三角剖分中的点定位算法56
3.3伪亚线性时间精确算法62
3.3.1Skyline问题的求解算法62
3.3.2Topk支配集问题的求解算法66
3.4亚线性时间近似算法75
3.4.1最小生成树代价近似求解算法76
3.4.2数据不一致性近似评估算法83
3.4.3欧几里得空间中最近邻近似求解算法91
3.5本章参考文献102
3.5.1本章参考文献注释102
3.5.2本章参考文献列表103
第4章大数据的抽样计算方法105
4.1抽样计算方法概述105
4.2图的平均参数估计算法106
4.2.1预备知识106
4.2.2平均度求解算法108
4.2.3平均单源距离求解算法113
4.2.4平均顶点距离求解算法115
4.3无线传感网感知数据聚集算法118
4.3.1预备知识118
4.3.2基于均匀抽样的近似聚集算法121
4.3.3基于伯努利抽样的近似聚集算法137
4.4度量空间上的聚类算法148
4.4.1聚类问题的定义148
4.4.2O(n4.77)时间8近似算法149
4.4.3时间复杂性独立于输入大小的近似算法162
4.5本章参考文献171
4.5.1本章参考文献注释171
4.5.2本章参考文献列表172
第5章大数据的压缩计算方法173
5.1压缩计算方法概述173
5.2数据压缩方法175
5.2.1数据编码方法176
5.2.2Header压缩方法179
5.2.3多维数据压缩方法184
5.2.4哈夫曼编码方法186
5.3压缩数据上的转置算法190
5.3.1问题定义190
5.3.2算法设计191
5.3.3算法分析192
5.4压缩数据上的聚集算法194
5.4.1问题定义194
5.4.2通用聚集算法195
5.4.3一遍扫描聚集算法199
5.4.4公共前缀聚集算法200
5.4.5公共中缀聚集算法203
5.4.6纯前缀聚集算法206
5.5压缩数据上的Cube算法207
5.5.1数据压缩和问题定义207
5.5.2算法设计208
5.5.3算法分析220
5.6压缩图上的可达性判定算法224
5.6.1问题定义224
5.6.2图压缩方法225
5.6.3算法设计227
5.6.4算法分析228
5.7压缩图上的图模式匹配算法229
5.7.1问题定义229
5.7.2图压缩方法230
5.7.3算法设计235
5.7.4算法分析235
5.8本章参考文献236
5.8.1本章参考文献注释236
5.8.2本章参考文献列表237
第6章大数据的增量式计算方法238
6.1增量式计算方法概述238
6.2增量式图模拟匹配算法241
6.2.1问题定义241
6.2.2图模拟匹配问题的批量求解算法246
6.2.3增量式常规图模拟匹配算法251
6.2.4增量式有界图模拟匹配算法260
6.3增量式数据不一致性检测算法266
6.3.1问题定义266
6.3.2基于数据垂直划分的检测算法270
6.3.3基于数据水平划分的检测算法274
6.4增量式数据流查询处理算法278
6.4.1问题定义278
6.4.2Inc3Agg类算法280
6.4.3Inc5Agg类算法282
6.5增量式数据流近似频繁项挖掘算法286
6.5.1问题定义287
6.5.2算法设计287
6.5.3算法的正确性与误差分析289
6.5.4算法的复杂性分析290
6.6增量式物化数据库视图维护算法290
6.6.1问题定义290
6.6.2问题的固有时间复杂性291
6.6.3算法设计296
6.6.4算法分析297
6.7本章参考文献299
6.7.1本章参考文献注释299
6.7.2本章参考文献列表300
第7章大数据的分布式并行计算方法301
7.1并行计算的基本概念301
7.1.1并行计算系统结构301
7.1.2并行算法及其复杂性分析306
7.2大数据的分布式存储方法308
7.2.1一维分布式存储方法308
7.2.2多维分布式存储方法311
7.2.3分布式Grid文件316
7.2.4分布式并行B树324
7.3分布式并行排序算法330
7.3.1基于合并操作的分布式并行排序算法331
7.3.2基于比较交换的分布式并行排序算法333
7.3.3基于数据划分的分布式并行排序算法335
7.4集合操作的分布式并行算法338
7.4.1集合并的分布式并行算法338
7.4.2集合交的分布式并行算法339
7.4.3集合差的分布式并行算法340
7.5关系代数操作的分布式并行算法341
7.5.1选择操作的分布式并行算法341
7.5.2投影操作的分布式并行算法344
7.5.3连接操作的分布式并行算法346
7.6基于CMD的连接操作的分布式并行连接算法351
7.6.1基本概念351
7.6.2算法CMDJoinHash353
7.6.3算法CMDJoinSortMerge354
7.6.4算法CMDJoinNestedLoop356
7.7基于并行B树的连接操作的分布式并行算法357
7.7.1预备知识357
7.7.2基于Range分布方法的并行B树连接算法357
7.7.3基于Hash分布方法的并行B树连接算法362
7.8本章参考文献364
7.8.1本章参考文献注释364
7.8.2本章参考文献列表365