MG算法(英文版)题解
翻译:
考虑一个加法流,其中一个特定项目出现 n^(1/2) 次,并且有 n - n^(1/2) - 1 个其他不同的项目,每个项目出现一次。在应用 Misra-Gries(MG)算法时,应该选择哪个 ε(epsilon)值以确保在流结束时频繁出现的项目在我们内存单元中的一个中得到表示?
选择:
A) ε = 1/n
B) ε = 1/n^(1/3)
C) ε = 1/n^(2/3)
D) ε = 1/n^(1/2)
答案:D
解析:
Misra-Gries算法是一种用于在数据流中寻找频繁元素的概率算法。在这个问题中,我们需要确定一个合适的ε值,以确保在数据流结束时,频繁出现的元素(出现n½次)至少在一个内存单元中被表示。
Misra-Gries算法的工作原理是通过为每个元素分配一个概率ε,该概率决定了该元素被选中并放入内存单元中的可能性。算法的目标是确保至少有一个内存单元包含频繁元素。
为了找到合适的ε值,我们需要考虑以下几点:
1. 总元素数量:总共有n个元素,其中一个元素出现n½次,其余n - n½- 1个元素各出现一次。
2. 频繁元素的期望出现次数:我们希望频繁元素至少在一个内存单元中被表示。这意味着我们需要确保频繁元素被选中的概率足够高。
3. 其他元素的期望出现次数:其他元素各出现一次,因此它们被选中的概率应该相对较低。
为了确保频繁元素至少在一个内存单元中被表示,我们需要选择一个ε值,使得频繁元素被选中的概率至少为1。这可以通过确保频繁元素的期望出现次数至少为1来实现。
频繁元素的期望出现次数可以表示为:
期望出现次数 =( n½)*ε
为了使期望出现次数至少为1,我们需要:
(n½) *ε>=1
解这个不等式得到ε:
ε= 1/(n½)
因此,满足这个条件的最小值ε是:
ε= 1/(n½)
愿我们都能成为我们想要去成为的人!