合并流中Misra-Gries的准确性的正确性

时间:2019-05-09 15:42:55

标签: algorithm bigdata frequency correctness

我对组合流的Misra-Gries算法的准确性做了作业。证明合并流的准确性至少与混合流的准确性一样好。因此,我试图提出一些实例来更好地理解问题。我发现的一个是以下内容:

假设流X =(a,a,b,b,c)和Y =(c,c,d,d,a)且k = 3

将Misra-Gries应用于X:

| x_i || a      | a      | b      | b      | c      |
|-----||--------|--------|--------|--------|--------|
| d   || d[a]:1 | d[a]:2 | d[a]:2 | d[a]:2 | d[a]:1 |
|     ||        |        | d[b]:1 | d[b]:2 | d[b]:1 |

和Y:

| x_i || c      | c      | d      | d      | a      |
|-----||--------|--------|--------|--------|--------|
| d   || d[c]:1 | d[c]:2 | d[c]:2 | d[c]:2 | d[c]:1 |
|     ||        |        | d[d]:1 | d[d]:2 | d[d]:1 |

然后根据Wikipedia,我对结果求和并递减计数器,直到仅剩k个计数器为止。 或者,根据我的讲师说:

  1. 合并两组候选者,将频率相等 项目。
  2. 减去第k个最频繁出现的候选人的频率 所有频率估算值中。
  3. 删除具有非阳性频率的候选者。

这将导致略有不同的摘要,但是此时并不重要。让我们采用维基百科的方法:

  1. 总结:
  

d [a]:1,d [b]:1,d [c]:1,d [d]:1

  1. 减少直到k个计数器剩余:
  

每个计数器都减一,所以一无所有。

因此准确度为f1

准确度= 10/3

现在让我们检查合并流中的Misra-Gries:

| x_i | a      | a      | b      | b      | c      | c | c      | d      | d      | a      |
|-----|--------|--------|--------|--------|--------|---|--------|--------|--------|--------|
| d   | d[a]:1 | d[a]:2 | d[a]:2 | d[a]:2 | d[a]:1 |   | d[c]:1 | d[c]:1 | d[c]:1 | d[d]:1 |
|     |        |        | d[b]:1 | d[b]:2 | d[b]:1 |   |        | d[d]:1 | d[d]:2 |        |

对于准确性:f2

准确度= 9/3

据我了解,这比运行两个单个流并将其组合更为准确。但是,这与Wikipedia上的说法相矛盾:

  

算法输出的摘要(数组)可以在   感觉到两个流s和r的总结通过相加来组合   按键排列数组,然后减少结果中的每个计数器   数组,直到仅保留k个键,结果相同(或   与运行Misra-Gries算法相比   s与r的串联。

那我的错误在哪里?

P.S。我确实想为这些公式提供图像,但由于信誉<10 ......

而被禁止

0 个答案:

没有答案