1. 大数据算法的定义:
在给定的资源约束下,以大数据为输入,在给定时间约束下可以生成满足给定约束结果的算法。
2. 大数据算法与传统算法的区别:
2.1 大数据算法可以不是:
精确算法;
内存算法;
串行算法;
仅在电子计算机上运行的算法。
2.2大数据算法不仅是:
云计算;
MapReduce;
3. 大数据算法难点:
3.1 访问全部数据时间过长:
时间亚线性算法:读取部分数据。
3.2 数据难于放入内存计算:
外存算法:将数据储存到硬盘;
空间亚线性算法:仅基于少量数据计算;
3.3 单个计算机难于保存全部数据:
并行算法。
3.4 计算机能力不足:
众包算法。
4. 大数据算法设计方法:
4.1 精确算法
4.2 并行算法
4.3 近似算法
4.4 随机算法
4.5 在线/数据流算法
4.6 外存算法
4.7 GPU算法
4.8 现代优化算法
5. 大数据算法分析方法:
5.1 时间空间复杂性
5.2 IO复杂性
5.3 结果质量
5.4 通讯复杂性
6. 亚线性算法:
复杂度严格低于输入规模。
6.1 水库抽样——空间亚线性算法:
输入:一组数据
输出:这组数据的k个均匀抽样
要求:
1.仅访问数据一次;
2.空间复杂度为O(k);
3.扫描到数据的前n个数字时,保存当前已扫描数据的k个均匀抽样。
解法:
1.申请一个长度为k的数组A保存抽样;
2.保存首先收到的k的数;
3.当接收到第 i 个新元素 k 时,以 k / i 的概率随机替换A中的元素。(即生成1到 i 间的随机数 j ,若 j < k,则以 k 替换 A[ j ])。
6.2 平面图的直径——时间亚线性算法:
n条边,选最长的边。
精确算法:
遍历一次。
近似算法:
固定一个起点,遍历一次,能得到的结构好于最大值的一半。
6.3 全0数组的判定——亚线性时间判定算法:(?)
输入:包含n个元素的0,1数组A;
输出:A的元素全为0;
算法描述:随机抽取s=2/υ个进行判定;
6.4 数据流中频繁元素:
6.4.1 大数据的数据流模型的要求:
数据只能顺序扫描几次;
内存有限;
快速处理每个元素。
6.4.2 寻找频繁元素:
精确解:对每个元素设置计数器。
问题:需要的计数器太多。
6.4.3 近似解:
MG算法:新来x元素
如果x已经分配计数器,则x的加1;
如果没有但又空余计数器,则分配一个给x并置为1;
否则所有计数器减1,删除值为0的计数器。
有效的原因:Zipf原罪。
6.5 最小生成树:(?)
精确解:prim或kruskal算法。
问题:时间复杂度超过线性。
6.6 序列有序性判定:
输入:整个数组。
输出:判定是否有序。
精确算法:遍历数组。
近似算法:
υ远离:我们必须删除大于υn个元素才能保证剩下的元素有序。
解法:
如果远离有序,则返回false的概率大于2/3。
7. 近似比:
近似比等于max{C/*C,*C/C};
相对误差等于|C/*C|/*C。