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

本文主要是介绍大数据算法-空间时间亚线性算法举例(水库抽样,平面图直径),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

水库抽样

  • 问题描述
    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;//outputcout << "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,大数据算法)

这篇关于大数据算法-空间时间亚线性算法举例(水库抽样,平面图直径)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1044860

相关文章

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

Java中八大包装类举例详解(通俗易懂)

《Java中八大包装类举例详解(通俗易懂)》:本文主要介绍Java中的包装类,包括它们的作用、特点、用途以及如何进行装箱和拆箱,包装类还提供了许多实用方法,如转换、获取基本类型值、比较和类型检测,... 目录一、包装类(Wrapper Class)1、简要介绍2、包装类特点3、包装类用途二、装箱和拆箱1、装

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt