大数据算法

大数据算法

  • 1. 大数据算法的定义:
  • 2. 大数据算法与传统算法的区别:
    • 2.1 大数据算法可以不是:
    • 2.2大数据算法不仅是:
  • 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 水库抽样——空间亚线性算法:
    • 6.2 平面图的直径——时间亚线性算法:
    • 6.3 全0数组的判定——亚线性时间判定算法:(?)
    • 6.4 数据流中频繁元素:
      • 6.4.1 大数据的数据流模型的要求:
      • 6.4.2 寻找频繁元素:
      • 6.4.3 近似解:
    • 6.5 最小生成树:(?)
    • 6.6 序列有序性判定:
  • 7. 近似比:

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个元素才能保证剩下的元素有序。
解法:
大数据算法_第1张图片
如果远离有序,则返回false的概率大于2/3。

7. 近似比:

近似比等于max{C/*C,*C/C};
相对误差等于|C/*C|/*C。

你可能感兴趣的:(大数据算法)