亚线性算法的定义
亚线性时间算法
-
亚线性时间近似算法
- 性质检测算法
亚线性空间算法
- 数据流算法
亚线性时间问题 例子
给定一个社交网络,如何平均每个人的朋友个数,即在图中计算其节点的平均度
(如果随机抽取样本的方式 有些度很大的点将会抽不到)
能否在不访问所有顶点的情况下完成次任务?
- 精确计算需要访问最少n-1个 顶点
亚线性空间算法 例子
一个(源源不断的到来)数据集合(流),只扫描一次,如何求其中位数?
- 不能存储所有数据->不能对其进行排序
- 应当存那些数据?
水库抽样--一个亚线性空间算法
-
输入:一组数据,其大小未知
- 输出:这组数据的k个均匀抽样
- 要求:
- 仅扫描数据一次
- 空间复杂性为o(k)
- 扫描到数据的前n个数字时(n>k),保存当前已扫描数据的k个均匀抽样
水库抽样算法
- 申请一个长度为k的数组A保存抽样
- 保存首先接收到的k个元素
- 当接收到第i个新元素t时,以k/i的概率