大数据算法-空间时间亚线性算法举例(水库抽样,平面图直径)
来源:互联网 发布:mmd白金disco动作数据 编辑:程序博客网 时间:2024/04/29 14:49
大数据算法-空间时间亚线性算法举例
水库抽样
- 问题描述
Input:一组数据
Output:这组数据的K个均匀抽样- 要求:
- 扫描一次
- 空间复杂度o(k)
- 扫描到前n个数字时,保存当前数据的均匀抽样
- 实现
收到第i个元素t时,以k/i的概率随机替换抽样数组ans[]中的元素- 证明
均匀:
ki×(1−1i+1)×(1−1i+2)×⋯×(1−1n)=kn
代码如下:
#include <iostream>#include <cstdlib>#include <ctime>using namespace std;int random(int min ,int max){ return (min+(rand()%(max-min+1)));}int main(){ srand(unsigned(time(0))); int k; int i; cout << "Input k:" ; cin >> k; double *ans = new double[k+1]; double input; cout << "Input k numbers:" << endl; for(i = 1;i <= k; ++i) { cin >> ans[i]; } cout << "Input stream numbers:(q to quit)" << endl; while(true) { int j = random(1,i); if(!(cin >> input)) break; if(j <= k) ans[j] = input; //output cout << "Ans :" ; for(int p = 1;p < k; ++p) cout << ans[p] << ","; cout << ans[k] << endl; i++; } delete [] ans; return 0;}
平面图直径
- 问题描述
Input:m个点的平面图,任意两点的距离储存在矩阵D中。
* 输入大小n = m^2
* 最大的Dij 为图的直径
* 点之间距离满足三角不等式
Output:该图的直径和距离最大的Dij
- 要求:
- 运行时间o(n)
- 实现
- 任意选择
k≤m - 选择使得
Dkl 最大的l - 输出
Dkl 和(k,l)
- 任意选择
- 证明
- 近似比
Dij≤Dik+Dkj≤Dkl+Dkl≤2Dkl - 运行时间
O(m)=O(n√)=o(n)
- 近似比
代码实现
#include <iostream>#include <cstdlib>#include <ctime>using namespace std;int random(int min ,int max){ return (min+(rand()%(max-min+1)));}int main(){ srand(unsigned(time(0))); int m; cout << "Input m:"; cin >> m; int **ans = new int * [m]; for(int i = 0; i < m; ++i) { ans[i] = new int[m]; } cout << "Input martrix:" << endl; for(int i = 0; i < m; ++i) { for(int j = 0;j < m; ++j) { cin >> ans[i][j]; } } int line = random(0,m-1); int maxd = 0,maxi; for(int i = 0;i < m; ++i) { if(ans[line][i] > maxd) { maxd = ans[line][i]; maxi = i; } } cout << "MAX_D:" << maxd << ", D_(i,j):(" << line << "," << maxi+1 <<")" <<endl; for(int i = 0; i < m; ++i) { delete [] ans[m]; } delete [] ans; return 0;}
(证明和例子参考王宏志MOOC,大数据算法)
0 0
- 大数据算法-空间时间亚线性算法举例(水库抽样,平面图直径)
- 亚线性空间算法-水库抽样算法
- 亚线性空间算法-水库抽样算法
- 大数据算法MOOC笔记3:水库抽样Reservoir Sampling(蓄水池问题)
- 水库抽样算法
- 空间亚线性算法
- 水库抽样算法精简总结
- 大数据算法学习笔记(3):亚线性算法概述
- 大数据工程师必备之蓄水池抽样算法
- 数据挖掘中的抽样算法
- 抽样算法
- 【算法】大数据与空间限制
- 水库抽样问题
- 算法 线性时间排序算法
- 线性时间选择算法
- 线性时间选择算法
- 线性时间选择算法
- 线性时间排序算法
- linux中select网络通信
- Android Fragment基础
- 三维凸包大全
- protel win7添加库文件的软件
- 安卓sqlite之增删改查(一)
- 大数据算法-空间时间亚线性算法举例(水库抽样,平面图直径)
- vimperator的使用
- 操作系统---------题外篇1
- POJ 3348 Cows(凸包面积)
- 第26章:AdapterViewFlipper的用法
- 工具
- eclipseRCP深入浅出(学习总结)2015.08.08
- JDK容器 Vector源码剖析
- 【101-Symmetric Tree(对称树)】