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

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

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

水库抽样

  • 问题描述
    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 controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自