大数据算法

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。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值