判断样本半数的一个方法 |
送交者: 田苗 2006年06月11日08:52:06 于 [灵机一动] 发送悄悄话 |
N个样本,如何判断半数或更多样本是相同的?如果有,并找出这样本。 我这里提出一个方法。肯定能成功。但是否最佳,不确定。最坏情况估计在2.2N左右。 为了便于描述清楚,设有袋子A,B,C,一开始样本全部在袋子A里。另外设有筐子M只,用来放同类样本。 一开始,从A里取两个样本。取一筐子作第一个同类筐子。 1:比较两样本,结果:(a)不一样,(b)一样。 2:如果是(a),把从A里取的样本丢在B里,把从C里取的样本丢在同类筐子里。 如果是(b),则把两样本全丢在C里。这时如果C里的样本已够半数,就可结束(当然如果N是偶数的话,还要确证一下是否另一半也全是一样的)。 3:如果(I):A里已空(C里必定有样本),或者(II):A和C里加起来只有四个或五个样本(取决于N是偶数还是奇数),去4。 否则,如果C里有样本,就分别从A和C里各取一样本。如果C里是空的,则从A里取两个样本。从A里取两个样本时,如果同类筐里不空,则换一个空的。回到1。 4:如果是(I),则把C里的样本定为候选者。如果是(II),则比较A和C里剩下的。如剩下的是四个,如果四个里有两个或两个以上是一样的,就把这样本定为候选者。如四个里有两对,那把这两种样本都定为候选者。如剩下的是五个,里面至少有三个是一样的,那就把这个样本定为候选者。 5:如没有候选者,则样本里没有可达半数的样本。如有候选者,就拿候选者先与同类筐里的样本比较(每个筐里只要比一个就行了;如找到一样的同类筐,就可跳过其余的同类筐),然后如需要,再和B里的样本逐个比较,直到达半数,或者可以确定不可能达半数为止。 注意,如不能设同类筐,则在两样本不一样时,全丢B。最后如有候选者,就拿候选者直接与B里的样本逐个比较。 |
|
|
|
实用资讯 | |