《大数据算法》一导读


《大数据算法》一导读_第1张图片

前 言

本书的缘起
“大数据”在今天成为一个非常时尚的概念,其影响已经远远超过了计算机学科本身,甚至影响到了自然科学、社会科学、人文科学等。由于其深远的影响和广泛的应用,大数据一直得到IT从业人员的重视,他们对大数据相关理论、技术的学习有着强烈的需求。
“算法设计与分析”是计算机科学的重要主题,进行大数据计算,“算法设计与分析”是必不可少的步骤,可以说,算法设计是“大数据落地”的关键之一。然而,虽然在今天的书店里,关于大数据的书籍数不胜数,但真正从“算法设计与分析”角度关注大数据的书却很少。究其原因,当前“大数据算法”的知识体系还远不完备,因为“大数据”是计算机学科的增长点之一,“大数据算法”的内涵和外延也不断发生着变化,而且大数据上算法设计与分析得到的知识驳杂,难以梳理出一个明晰的知识体系。而大数据不同方面的从业人员,对“大数据算法”的理解也不尽相同。作者曾经调研过国内外和“大数据算法”相关的课程,其教学内容的差异非常大。
因而,笔者写了本书,作为一种勇敢的尝试,试图兼顾深度和广度来介绍“大数据算法”。其缘起有三。
其一,笔者从本科加入了李建中教授领导的哈尔滨工业大学数据库研究中心,留校工作到现在。随着“数据”在计算机学科扮演的角色日益重要,中心的名字经历了“数据库研究中心”到“知识与数据工程研究中心”到“海量数据计算研究中心”到“国际大数据研究中心”的变化,并且一直是围绕“数据”的计算开展研究。在中心良好的学术氛围下,笔者进行了十几年“数据”计算的研究,也一直在思考“数据为中心的计算到底需要何种特别的算法设计技术”这一问题,有一些不成熟的心得,希望与读者分享。
其二,机械工业出版社王彬编辑在2013年全国大数据会议上邀请笔者写一本和“大数据”、“算法”相关的书,促使笔者去思考和学习,试图梳理出一条“大数据算法”的脉络。
其三,在网易云课堂的孙志岗总监的鼓动下,笔者在2014年开设了自己的第一门MOOC课程“大数据算法”,2014年夏季学期笔者在哈尔滨工业大学作为全校选修课也开设了“大数据算法”这门课程,这督促着笔者不得不从教学内容到教学方法上去思考如何表述“大数据算法”。在教学过程中,很多学习这门课程的学生询问教材的事情,很遗憾,笔者只能提供一个参考文献列表,而无法推荐教材,这也促使笔者撰写这样一本书。
本书的特点
本书对大数据计算中涉及的算法设计与分析技术进行了介绍,针对大数据对算法的要求,主要涉及四个方面:亚线性算法、外存算法、并行算法和众包算法。书中给出了多个算法,并对其进行了分析,尽可能使本书适用于各个层次的读者。
书中每一章涉及一类大数据算法设计技术,算法主要用自然语言、伪代码和例子来描述,力图使本书介绍的算法易懂易用。由于为大数据设计算法,在“大数据”上进行实验的成本比较高,因此“算法分析”在“大数据算法”中扮演着更重要的角色,本书也在算法分析方面投入了相当的笔墨。有不同需求的读者可以着重阅读本书不同的部分。
由于“大数据”涉及的内容较广,本书围绕大数据的特点着重介绍大数据算法设计与分析的方法,和大数据分析、大数据系统、大数据编程等书籍具有互补性,可以相互参照进行阅读。
本书适合作为本科生和研究生“大数据”或者“大数据算法”课程的教材,也可以作为“算法设计与分析”等课程的补充教材或课外读物。同时,本书也适合大数据领域从业人员参考。
由于本书是一种新的尝试,涉及的内容非常宽且又是变化迅速,尽管笔者尽全力来写本书(其中的一部分内容甚至来自于2015年发表的文献),但是由于笔者水平有限,在本书内容的安排、表述、推导等方面的各种不当之处在所难免,敬请读者在阅读本书的过程中,不吝提出宝贵的建议,以改进本书。读者的任何意见和建议请发至邮箱[email protected]
致使用本书的教师
本书涉及了多方面内容,对于教学而言,本书适用于多门课程的教学,并可以作为“数据结构”、“算法设计与分析”、“数据库系统原理”等课程的补充教材,教师可以从本书中选择适合教学的内容,例如,第5章适合作为“数据库系统原理”这门课“数据库索引”部分的补充教学内容,第4章适合作为“数据结构”这门课“排序”部分的补充教学内容。
针对不同层次的教学可以选择不同的内容。针对本科生或者职业培训的教学可以侧重于算法设计,着重讲授算法本身和算法的应用场景,而对算法分析可以略讲;针对研究生的教学可以在讲算法设计的同时利用更多的时间来讲授算法的分析和推导。
本书每章后包含一些习题,供学生巩固所学内容。
致使用本书的学生
希望本书为学生提供“大数据算法”方面的入门指导,我们尽量让描述通俗易懂,但是一些算法、数据结构或者分析本身比较复杂,有些算法分析远看略显“高冷”,请在阅读时不要畏惧,可以按照相关的证明过程和推理步骤仔细梳理证明的脉络。对于本书涉及的一些可能没有学过的知识,通过“补充知识”部分进行了介绍。
要阅读本书,希望读者有一些算法和程序设计方面的基础,“数据结构”和“算法设计与分析”是本书的先修课程,如果读者没有学过这方面的课程,可以通过阅读《算法导论(原书第3版)》 该书由机械工业出版社出版,ISBN:978-7-111-40701-1。——编辑注如下章节自学相关知识:第1~12章、第15~17章、第18章、第22~24章。本书第2章和第3章涉及一些概率分析知识,如果不需要掌握概率分析的技术而仅读懂本书,本书提供的补充知识足以帮助你理解证明过程;如果希望系统掌握概率分析,可以先阅读一下《概率与计算》 该书由机械工业出版社出版,ISBN:978-7-111-20805-1。——编辑注的第1~6章,奠定概率分析方面的基础,再阅读本书第2章和第3章中的证明。本书第7~9章涉及了并行算法,但并不需要读者具备并行体系结构和并行计算相关的知识,因为当前平台(如Hadoop等)已经提供了足够方便的接口,可以让读者在不具备这些知识的前提下实现数据密集型并行算法。

目 录

第1章 绪论
 1.1  大数据概述
 1.2  大数据算法
 1.3  大数据算法设计与分析

1.4  [本书的内容](https://yq.aliyun.com/articles/107632)

第2章  时间亚线性算法
 2.1  时间亚线性算法概述
 2.2  最小生成树代价估计
 2.3  时间亚线性判定算法概述
 2.4  数组有序的判定算法
 2.5  串相等判定算法
第3章  空间亚线性算法
 3.1  空间亚线性算法概述
 3.2  水库抽样
 3.3  寻找频繁元素的非随机算法
 3.4  估算不同元素的数量
 3.5  寻找频繁元素的随机算法
第4章 外存算法概述
 4.1 外存存储结构与外存算法概述
 4.2 外存算法示例:外存排序算法
  4.2.1 外存归并排序算法
  4.2.2 外存多路快速排序算法
  4.2.3 外存计算的下界
 4.3 外存数据结构示例:外存搜索树
 习题
第5章 外存查找结构
 5.1 B树
 5.2 加权平衡B树
 5.3 持久B树
 5.4 缓存树
 5.5 KDB树
 5.6 O树
 习题
第6章 外存图数据算法
 6.1 线性表排名及其应用
  6.1.1 线性表排名问题
  6.1.2 欧拉回路
  6.1.3 父子关系判定
  6.1.4 前序计数
  6.1.5 计算子树大小
 6.2 时间前向处理方法
  6.2.1 DAG形式逻辑表达式计算问题
  6.2.2 最大独立集合算法
 6.3 缩图法
  6.3.1 基于缩图法的图连通分量计算半外存算法
  6.3.2 基于缩图法的图连通分量计算全外存算法
  6.3.3 最小生成树算法
 6.4 广度优先搜索和深度优先搜索
  6.4.1 有向图的BFS和DFS
  6.4.2 无向图的BFS
  6.4.3 无向图更高效的BFS算法
 6.5 单源最短路径
  6.5.1 竞赛树
  6.5.2 Dijkstra算法的I/O高效版本
 习题
第7章 MapReduce算法概述
 7.1 MapReduce基础
  7.1.1 MapReduce的基本模型
  7.1.2 mapper和reducer
  7.1.3 partitioner与combiner
 7.2 MapReduce算法设计方法
  7.2.1 局部聚合
  7.2.2 两种重要的算法设计模式——词对法和条块法
  7.2.3 二次排序
  7.2.4 MapReduce算法设计与算法实现技巧
 习题
第8章 MapReduce算法例析
 8.1 连接算法
  8.1.1 普通连接算法
  8.1.2 相似连接算法
 8.2 图算法
  8.2.1 基于广度优先搜索的MapReduce图处理算法
  8.2.2 PageRank的MapReduce算法
  8.2.3 最小生成树的MapReduce算法
  8.2.4 使用图算法的注意事项
 习题
第9章 超越MapReduce的并行大数据处理
 9.1 基于迭代处理平台的并行算法
 9.2 基于图处理平台的并行算法
  9.2.1 并行结点计算
  9.2.2 并行结点计算的平台
  9.2.3 基于并行结点计算的单源最短路径算法的设计与实现
  9.2.4 计算子图同构
 习题
第10章 众包算法
 10.1 众包的定义
 10.2 众包的实例
 10.3 众包的要素和关键技术
  10.3.1 众包的流程
  10.3.2 众包的报酬
  10.3.3 众包中的关键技术
 10.4 众包算法例析

你可能感兴趣的:(《大数据算法》一导读)