数据流算法
来源:互联网 发布:科蓝软件 编辑:程序博客网 时间:2024/05/29 13:40
在有些情况下,数据以一个或者多个流的方式到来,如果不对数据进行及时的存储和处理,数据将永远丢失。这就是我们所说的数据流问题。
既然说是数据流,说明我们只能以流的方式一个一个按顺序访问数据。也就是说没法像访问访问数组一样随机访问数据流中任意位置的元素。我们只能对数据进行少数次的整体扫描,最好情况只扫描数据一次。
一、有关结论
在数据流算法里面,有2个一般化结论为值得牢记:
1.通常情况下,获得问题的近似解比精确解要高效得多。
2.为了产生与精确解相当接近的近似解,与哈希相关的技术被证明十分有用。
二、相关定义
我们假设数据流 = (其中m为数据流的长度),任意元素从(n为可能出现的元素总数)中选择。一般情况下,m和n的值都非常大。所以我们需要空间亚线性算法来处理数据流问题。
如果我们对数据流处理想要求的函数为,通常为一个实数。很多基本函数被证明在空间亚线性(o(min{n,m}))的情况下无法得到精确解,所以我们需要找到的估计或近似。那我们如何对算法结果的质量进行判断呢?假设我们算法的输出为。如果算法满足下面的不等式,我们将算法称为-近似的。
如果为0或者非常接近0,则满足下面不等式即可。
对于数据流的定义,有不同的方式。一般只涉及数据到来(vanilla streaming model)。另外一种变种(turnstile streaming model)是某些元素不仅可以到来,而且还可以离开。
前面提到对于在数据流算法中,经常使用到哈希。具体使用的hash必须保证具有较低的冲突率。2-universal hashing和strongly 2-universal hashing定义如下。如果H是一个从U映射到D的哈希函数族,,,满足下面不等式:
则称hash函数族是2-universal的。
如果满足:
则称hash函数族是strongly 2-universal的。该定义可以拓展到k-universal。
在接下来的几个博客里,我将讲述基础的数据流算法,包括采样问题,频繁元素问题,独立元素个数问题,k阶矩问题。后续可能会添加高阶内容。
- 数据流算法
- 1786 数据流中的算法
- 数据流挖掘_Flajolet-Martin算法
- 51Nod 数据流中的算法
- [51nod1786]数据流中的算法
- 51Nod-数据流算法-1785
- 数据流
- 数据流
- 数据流
- 数据流
- 数据流
- 数据流
- 基于数据流的挖掘算法研究
- 基于数据流的挖掘算法研究
- 51NOD1785 数据流中的算法 【水】
- 51Nod-1785-数据流中的算法
- 51nod-1785:数据流中的算法
- 51nod 1785 数据流中的算法
- 如何锁定Python脚本使其无法编辑?
- 164Maximum Gap
- iOS开发:关于加入开发者计划的几个问题
- Android闹钟实现原理
- 如何下载和安装CocoaPods?
- 数据流算法
- Centos7下Hadoop-2.5.1和Hbase1.0.1的伪分布式安装
- 关联函数-3 获取网页中的指定文本
- 黑马程序员------------内存管理
- 从零开始打造一个新闻订阅APP之服务器篇(一、系统结构设计&开发流程简介)
- Loader 学习
- 黑马程序员学习日记--javaAPI(二)
- 详解BMP格式
- HDOJ 不可摸数 1999