全0数组判定问题

整理自《大数据算法》(王志宏 哈尔滨工业大学)24页

问题描述

  给定一个由0、1构成的数组,在不遍历整个数组的情况下,判断它是否为全0数组。

算法描述

  从数组中随机抽取s个元素,如果样本全是0,就认为它是全0数组。

算法分析

  对于全0数组来说,无论抽取多少个元素看到的都是0,不会发生误判;

  对于含有1的数组来说,仅当这s个元素都为0时才会引起误判,那么误判的概率就等于抽取的s个元素都是0的概率。

  假设共有n个数组元素,其中1有ɛn个,0有(1-ɛ)n个。任意抽取一个元素,它是0的概率为(1-ɛ),抽取s个元素全是0的概率为:

  

  可见在抽样数s固定的情况下,1的个数比例ɛ趋于1时,误判率δ就会趋于0。

  这里可以把ɛ视为判断误差。当ɛ=0时,数组中没有1,算法不可能失误,此时误判率为0。当ɛ>0时,如果算法误判为全0数组,即认为数组中1的比例为0,则ɛ的值越大,误判的程度越离谱,但也正如上面所述,这种情况发生的概率会更低。

  所以这里可用(ɛ,δ)衡量算法的质量,即误差超过ɛ的概率小于δ时,就认为算法是合格的。为此我们需要选取一个合适的抽样数s,令

 

  由此就可以通过(ɛ,δ)计算出能满足要求的最小s

相似问题

  

 

posted @ 2020-12-19 19:13  x3477  阅读(1168)  评论(0)    收藏  举报