大数据算法-空间时间亚线性算法举例(水库抽样,平面图直径)

来源:互联网 发布:mmd白金disco动作数据 编辑:程序博客网 时间:2024/04/29 14:49

大数据算法-空间时间亚线性算法举例

水库抽样

  • 问题描述
    Input:一组数据
    Output:这组数据的K个均匀抽样
  • 要求:
    • 扫描一次
    • 空间复杂度o(k)
    • 扫描到前n个数字时,保存当前数据的均匀抽样
  • 实现
    收到第i个元素t时,以k/i的概率随机替换抽样数组ans[]中的元素
  • 证明
    均匀:
    ki×(11i+1)×(11i+2)××(11n)=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)
  • 实现
    1. 任意选择km
    2. 选择使得Dkl最大的l
    3. 输出Dkl和(k,l)
  • 证明
    • 近似比
      DijDik+DkjDkl+Dkl2Dkl
    • 运行时间 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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 人工喂养大便次数少怎么办 4个月宝宝肠炎怎么办? 三个月的宝宝拉肚子有奶瓣怎么办 吃米粉后不拉屎怎么办 宝宝拉绿色稀水怎么办 3个月宝宝肠胃炎怎么办 两个月婴儿拉水怎么办 3个月宝宝拉绿水怎么办 宝宝拉绿色的水怎么办 宝宝大便绿又水怎么办 8个月婴儿便秘怎么办 2个月婴儿便秘怎么办 四个月宝宝拉稀带有泡沫怎么办 六个月宝宝拉肚子怎么办拉水 婴儿拉的是沫怎么办 婴儿拉泡沫屎是怎么办 宝宝吃奶粉上火大便干燥怎么办 没满月的宝宝拉肚子怎么办 婴儿吃奶粉上火不大便怎么办 四个月宝宝拉沫怎么办 4个月小孩拉肚子怎么办 3个月的宝宝拉稀怎么办 宝宝没喝过奶粉怎么办 宝宝喝冰酸奶咳嗽了怎么办 7个月不爱喝奶怎么办 宝宝不认妈妈该怎么办 九个月宝宝不喝牛奶怎么办 吃羊肉和西瓜后怎么办 娃儿感冒了很咳怎么办 5岁娃儿经常感冒发烧怎么办 娃儿冷得发抖感冒怎么办 吃羊肉和茶后怎么办 宝宝胆汁酸高22怎么办 5个月发烧38度怎么办 28个月宝宝不愿把尿怎么办 16个月宝宝咳嗽怎么办 宝宝晚上不用纸尿裤要尿床怎么办 宝宝头型睡偏了怎么办 初生婴儿鼻子被奶块堵住怎么办 月经排的不顺畅怎么办 四个月的小孩拉肚子怎么办