判斷樣本半數的一個方法 |
送交者: 田苗 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里的樣本逐個比較。 |
|
|
|
實用資訊 | |