3 Matching Annotations
  1. Jul 2024
    1. HyperLogLog

      这是一个基于LogLog改进而来的算法,用于估算给定的数据中有多少个唯一值: def LogLog(input: list) -> int: return len(set(input))

      1. 每个数据通过一个散列函数转化为64bit

      2. 64bit拆成14bit msb和50bit lsb

      3. 14bit msb用于决定计算LogLog在哪一轮,2^14为16384,要执行16384轮

      4. 50bit lsb用于统计第一个1出现在第N位,可能出现在0位到50位

      5. 计算每一轮的最大的N,N可能为0到50,用6bit记录即可

      6. 求出所有轮的N的调和平均值,用于伯努利估计

      7. HyperLogLog在此基础上加入校正

      8. 占用空间16384轮*6位/8/1024=12KB