Misra-Gries算法最早由J. Misra和D. Gries在1982年提出 [1]。Misra-Gries算法可以看成是对Majority算法的一个扩展,可以对数据流中的频数提供相对误差为$\epsilon$的估计,使用的空间复杂度为$\mathrm{O}(1/\epsilon)$。
Misra-Gries算法最早由J. Misra和D. Gries在1982年提出 [1]。Misra-Gries算法可以看成是对Majority算法的一个扩展,可以对数据流中的频数提供相对误差为$\epsilon$的估计,使用的空间复杂度为$\mathrm{O}(1/\epsilon)$。
LossyCounting是R. Motwani和G. S. Manku在[1]中提出的另一个频数估计算法(该论文中的另一个算法为 Sticky Sampling算法)。虽然LossyCounting算法在Misra-Gries算法提出之后20年提出,但LossyCounting算法在估计误差上和Misra-Gries算法是一样的,在空间复杂度和计算复杂度上还不如Misra-Gries算法。
StickySampling是R. Motwani和G. S. Manku在2002年提出的一种基于采样的频繁项估计算法 [1]。在原始论文中,作者号称它能够对数据项的频数以超过$1-\delta$的概率提供相对误差为$\epsilon$的估计,并返回数据流中所有频率超过给阈值的所有数据项,其所需的空间复杂度为$\mathrm{O} \left( \log \frac{1}{\epsilon \delta} \right)$。但这个结论的证明可能存在问题。
MorrisCounter算法是R. Morris于1978年提出的一种用于估计频数的算法 [1]. 当时Morris需要编写一段代码来对大量事件进行计数,但是他能使用的只有一个8位的计数器。为了能在有限的存储空间内完成任务,他发明了MorrisCounter算法,能够使用 $ O(\log \log N + \log 1/ \epsilon + \log 1 / \delta ) $个比特,对频数进行估计,并且保证估计频数$\hat{f}$和真实频数$f$之间满足: