Misra-Gries算法最早由J. Misra和D. Gries在1982年提出 [1]。Misra-Gries算法可以看成是对Majority算法的一个扩展,可以对数据流中的频数提供相对误差为的估计,使用的空间复杂度为。
Misra-Gries算法最早由J. Misra和D. Gries在1982年提出 [1]。Misra-Gries算法可以看成是对Majority算法的一个扩展,可以对数据流中的频数提供相对误差为的估计,使用的空间复杂度为。
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]。在原始论文中,作者号称它能够对数据项的频数以超过的概率提供相对误差为的估计,并返回数据流中所有频率超过给阈值的所有数据项,其所需的空间复杂度为。但这个结论的证明可能存在问题。
MorrisCounter算法是R. Morris于1978年提出的一种用于估计频数的算法 [1]. 当时Morris需要编写一段代码来对大量事件进行计数,但是他能使用的只有一个8位的计数器。为了能在有限的存储空间内完成任务,他发明了MorrisCounter算法,能够使用 个比特,对频数进行估计,并且保证估计频数和真实频数之间满足: