什么是概率数据结构?

时间:2014-12-05 01:09:43

标签: algorithm data-structures probability

我已阅读有关数据结构,例如布隆过滤器和跳过列表。

概率数据结构的共同特征是什么?它们用于什么?

4 个答案:

答案 0 :(得分:12)

可能有很多不同的(和好的)答案,但在我看来,概率数据结构的共同特征是它们为您提供了近似的,而不是精确的答案。

这里有多少件物品? 约为1523425,概率为99%

更新: 快速搜索产生了关于该问题的体面文章的链接:

https://highlyscalable.wordpress.com/2012/05/01/probabilistic-structures-web-analytics-data-mining/

答案 1 :(得分:10)

概率数据结构无法给出明确的答案,而是为您提供了答案的合理近似值以及近似估计值的方法。它们对于大数据和流应用程序非常有用,因为它们可以显着减少所需的内存量(与提供准确答案的数据结构相比)。

在大多数情况下,这些数据结构使用哈希函数来随机化项目。因为他们忽略了碰撞,所以他们保持大小不变​​,但这也是他们无法为您提供准确值的原因。他们带来的好处:

  • 他们使用少量内存(你可以控制多少)
  • 它们可以轻松并行化(哈希是独立的)
  • 他们有不断的查询时间(甚至没有像字典中那样的摊销常数)

经常使用的概率数据结构是:

答案 2 :(得分:1)

维基百科中有一个概率数据结构列表供您参考: https://en.wikipedia.org/wiki/Category:Probabilistic_data_structures

关于“概率数据结构”是什么有不同的定义。恕我直言,概率数据结构意味着数据结构使用一些随机算法或在内部利用一些概率特性,但它们不必从数据结构用户的角度来概率或不确定地表现。

  • 概率上存在许多“概率数据结构” 提及的bloom filterHyperLogLog等行为 通过其他答案。

  • 同时,还有其他“概率数据结构” 确定的行为(从用户的角度来看),例如skip list。对于跳过列表,用户可以类似地使用它作为平衡二进制搜索树,但是在内部使用一些概率相关的想法来实现。根据跳过列表的作者William Pugh:

      

    跳过列表似乎是一种概率数据结构   取代平衡树作为选择的实现方法   很多应用。跳过列表算法具有相同的渐近性   预期时间界限为平衡树,更简单,更快速,更实用   更少的空间。

答案 3 :(得分:1)

如果您对概率数据结构感兴趣,则可能需要阅读我最近出版的书《 大数据应用程序的概率数据结构和算法》(ISBN:9783748190486,在亚马逊上可以买到)已经解释了许多这种节省空间的数据结构和快速算法,这些数据结构和现代算法在现代大数据应用程序中非常有用。

在本书中,您可以找到有助于解决大数据处理中常见问题的最新算法和数据结构,例如

  • 成员资格查询(盛开过滤器,计数盛开过滤器,商过滤器,布谷鸟过滤器)。
  • 基数(线性计数,概率计数,LogLog,HyperLogLog,HyperLogLog ++)。
  • 频率(多数算法,频率,计数草图,计数最小值草图)。
  • 排名(随机抽样,q-digest,t-digest)。
  • 相似性(LSH,MinHash,SimHash)。

您可以在https://pdsa.gakhov.com

免费获得预览以及有关该书的所有相关信息。