【发布时间】:2015-02-03 02:36:10
【问题描述】:
我已阅读有关布隆过滤器和跳过列表等数据结构的信息。
概率数据结构的共同特点是什么?它们的用途是什么?
【问题讨论】:
标签: algorithm data-structures probability
我已阅读有关布隆过滤器和跳过列表等数据结构的信息。
概率数据结构的共同特点是什么?它们的用途是什么?
【问题讨论】:
标签: algorithm data-structures probability
可能有很多不同的(和好的)答案,但在我看来,概率数据结构的共同特征是它们为您提供近似的而不是精确的答案。
这里有多少项目? 大约 1523425 概率为 99%
更新: 快速搜索生成了关于该问题的体面文章的链接:
https://highlyscalable.wordpress.com/2012/05/01/probabilistic-structures-web-analytics-data-mining/
【讨论】:
概率数据结构无法为您提供明确的答案,而是为您提供答案的合理近似值以及近似此估计值的方法。它们对于大数据和流式应用程序非常有用,因为它们可以显着减少所需的内存量(与为您提供准确答案的数据结构相比)。
在大多数情况下,这些数据结构使用散列函数来随机化项目。因为他们忽略了碰撞,所以他们保持大小不变,但这也是他们不能给你准确值的原因。它们带来的优势:
常用的概率数据结构有:
【讨论】:
维基百科中有一个概率数据结构列表供您参考: https://en.wikipedia.org/wiki/Category:Probabilistic_data_structures
关于什么是“概率数据结构”有不同的定义。恕我直言,概率数据结构意味着数据结构使用一些随机算法或在内部利用一些概率特征,但从数据结构用户的角度来看,它们不必表现出概率或不确定性。
有许多“概率数据结构”具有概率 行为,例如提到的bloom filter 和HyperLogLog 由其他答案。
同时,还有其他“概率数据结构” 具有确定的行为(从用户的角度来看),例如skip list。对于跳过列表,用户可以将其类似地用作平衡二叉搜索树,但在内部使用一些与概率相关的想法来实现。根据跳过列表的作者 William Pugh 的说法:
跳过列表是一种概率数据结构,似乎很可能 替代平衡树作为选择的实现方法 许多应用程序。跳过列表算法具有相同的渐近性 预期的时间界限为平衡树,更简单、更快且使用 空间更小。
【讨论】:
如果您对概率数据结构感兴趣,您可能想阅读我最近出版的书“大数据应用程序的概率数据结构和算法”(ISBN:9783748190486,可在 Amazon 获得),其中我已经解释了许多在现代大数据应用中非常有用的节省空间的数据结构和快速算法。
在本书中,您可以找到最先进的算法和数据结构,这些算法和数据结构有助于处理大数据处理中的常见问题,例如
您可以在https://pdsa.gakhov.com获得免费预览和所有与本书相关的信息
【讨论】: