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

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

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

水库抽样

  • 问题描述
    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

相关文章

Mysql数据库聚簇索引与非聚簇索引举例详解

《Mysql数据库聚簇索引与非聚簇索引举例详解》在MySQL中聚簇索引和非聚簇索引是两种常见的索引结构,它们的主要区别在于数据的存储方式和索引的组织方式,:本文主要介绍Mysql数据库聚簇索引与非... 目录前言一、核心概念与本质区别二、聚簇索引(Clustered Index)1. 实现原理(以 Inno

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

SpringBoot中ResponseEntity的使用方法举例详解

《SpringBoot中ResponseEntity的使用方法举例详解》ResponseEntity是Spring的一个用于表示HTTP响应的全功能对象,它可以包含响应的状态码、头信息及响应体内容,下... 目录一、ResponseEntity概述基本特点:二、ResponseEntity的基本用法1. 创

Java 结构化并发Structured Concurrency实践举例

《Java结构化并发StructuredConcurrency实践举例》Java21结构化并发通过作用域和任务句柄统一管理并发生命周期,解决线程泄漏与任务追踪问题,提升代码安全性和可观测性,其核心... 目录一、结构化并发的核心概念与设计目标二、结构化并发的核心组件(一)作用域(Scopes)(二)任务句柄

C#使用iText获取PDF的trailer数据的代码示例

《C#使用iText获取PDF的trailer数据的代码示例》开发程序debug的时候,看到了PDF有个trailer数据,挺有意思,于是考虑用代码把它读出来,那么就用到我们常用的iText框架了,所... 目录引言iText 核心概念C# 代码示例步骤 1: 确保已安装 iText步骤 2: C# 代码程

Pandas处理缺失数据的方式汇总

《Pandas处理缺失数据的方式汇总》许多教程中的数据与现实世界中的数据有很大不同,现实世界中的数据很少是干净且同质的,本文我们将讨论处理缺失数据的一些常规注意事项,了解Pandas如何表示缺失数据,... 目录缺失数据约定的权衡Pandas 中的缺失数据None 作为哨兵值NaN:缺失的数值数据Panda

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别