大数据算法学习笔记(3):亚线性算法概述

定义:

线性时间、空间、IO、通讯、能量等消耗是o(输入规模)
亚线性时间算法:亚线性时间近似算法、性质检测算法。
亚线性空间算法:数据流算法

亚线性时间问题:求图中节点的平均度。能否在不访问所有顶点的情况下完成此任务。
亚线性空间问题:源源不断的数据流,只扫描一次,如何求中位数。


水库抽样——亚线性空间算法

问题概述:一组数据,大小未知,要求扫描数据一次,空间复杂度O(k),扫描到数据的前n个数字(n>k)时,保存当前已扫描数据的k个均匀抽样。

算法:1、申请一个长度为k的数组保存抽样。
            2、保存首先接收到的k个元素
            3、当接收到第i个新元素t时,以k/i的概率随机替换A中的元素(即生成[1,i]间随机数j,若j<=k,则以t替换A[j])

性质1:该采样是均匀的。对于第i个数,k/i * (1-1/(i+1)) * (1-1/(i+2)) *……*(1-1/n)=k/n
性质2:空间复杂性o(k)。


平面图的直径——一个亚线性时间计算算法

输入:m个顶点的平面图,任意连点之间的距离存储在矩阵中,点之间的距离对称,并且满足三角不等式Dij<=Dik+Dkj,求最大的Dij。输入大小为n=m^2。(m*m矩阵)
要求运行时间为o(n)。

近似算法:
1、任意选择k<=m
2、选择使得Dki最大的l
3、输出Dkl和(k,l)
近似比:
Dij<=Dik+Dkj<=Dkl+Dkl<=2Dkl
近似比为2

运行时间:O(m)=O(根号n)=o(n)


关于近似算法

定义:近似算法主要用来解决优化问题,能够给出一个优化问题的近似优化解的算法。

近似算法解的近似度:问题的每一个可能的解都有一个代价,优化解可能具有最大或最小代价。

分析近似解代价与优化解代价的差距:ratio bound、相对误差


ratio bound: max{c/c*,c*/c}<=p(n)
相对误差:|c-c*|/c*


全0数组判定——时间亚线性判定算法

输入:包含n个元素的0,1数组A
输出:A中的元素是否全是0
要求:运行时间为o(n)

判定问题的近似:
ε-远离:对于输入x,如果从x到L中任意字符串的汉明距离至少为ε|x|,则x是ε-远离L的。
对于该问题,是否A=00……0或者其包含1的个数大于εn?

算法描述:
1、在A中随机独立抽取s=2/ε个位置上的元素
2、检查抽样,若不包含1,则输出“是”,若包含1,则输出“否”

判定精确性分析:
如果A是全0数组,始终输出“是”
如果A是ε-远离的,Pr[eeror]=Pr[抽样中没有1]<=(1-ε)^s 约为e^2<1/3

运行时间O(s)

证据引理:如果一次测试以大于等于p的概率获得一个证据,那么s=2/p轮测试得到证据的概率大于等于2/3.



你可能感兴趣的:(大数据算法学习笔记(3):亚线性算法概述)