基數估算HyperLogLog

2022-03-11 19:17:42 字數 357 閱讀 4002

hyperloglog 可以接受多個元素作為輸入,並給出輸入元素的基數估算值:

• 估算值:演算法給出的基數並不是精確的,可能會比實際稍微多一些或者稍微少一些,但會控制在合理的範圍之內。

hyperloglog 的優點是,即使輸入元素的數量或者體積非常非常大,計算基數所需的空間總是固定的、並且是很小的。

在 redis 裡面,每個 hyperloglog 鍵只需要花費 12 kb 記憶體,就可以計算接近 2^64 個不同元素的基數。這和計算基數時,元素越多耗費記憶體就越多的集合形成鮮明對比。

但是,因為 hyperloglog 只會根據輸入元素來計算基數,而不會儲存輸入元素本身,所以hyperloglog 不能像集合那樣,返回輸入的各個元素。

基數估算HyperLogLog

hyperloglog 可以接受多個元素作為輸入,並給出輸入元素的基數估算值 估算值 演算法給出的基數並不是精確的,可能會比實際稍微多一些或者稍微少一些,但會控制在合理的範圍之內。hyperloglog 的優點是,即使輸入元素的數量或者體積非常非常大,計算基數所需的空間總是固定的 並且是很小的。在 ...

基數計數 HyperLogLog

假設元素個數為m,去重後個數為n 時間複雜為o m2 空間複雜度隨元素個數線性增長。資料量一大就崩了。將資料插入到b 樹中達到去重目的,然後順序訪問葉節點鏈從而得到n值。時間複雜的為o lgm n 記憶體亦隨元素個數線性增長。資料量一大就崩了。用位陣列來表示各元素是否出現,每個元素對應一位,所需的總...

redis HyperLogLog 基數估算

hyperloglog 可以接受多個元素的輸入,返回輸入元素的基數估算值 基數,集合中不同元素的數量。如集合的基數是4。估算,hyperloglog演算法返回的基數不是完全精確的,但會控制在合理的範圍內。hyperloglog不會儲存輸入的多個元素,只返回估算的基數 127.0.0.1 6379 p...