胖老第(3)題制思考 |
送交者: 零加一中 2010年09月30日08:47:35 於 [靈機一動] 發送悄悄話 |
胖老的第(3)題:警察抓住一大幫人,有好人有壞人,好人過半。警察抽出一個,問其他人,是否壞人。好人說實話,壞人可能說實話,也可能不說。警察最少要問幾次能完成甄別。經過長考,~N解法似乎不行,就爭取在~NN上精益求精。 先用網友“真是好玩”的策略,抓出一個問眾人(一個個問),如是好人,問題就解決了,說他壞人的在撒謊,就是壞人,只要把其餘的人由他一一指認就行了。現在假定運氣不好,每次抓出的都是壞人,但只要剛過半,就一定會有好人,所以粗略地說,最倒霉需要指認(3/8)NN+N/2 人次。 現在來討論指認時壞人撒謊與否的得失。考慮第一輪,假定N=2M+1,M+1個好人,M個壞人。如果壞人都不撒謊,問了M+1個人後,就可得出結論。現在有一人撒謊,這一輪需要多問一次。但因為暴露了一個階級敵人,可以少問一輪,所以撒謊是給警察幫忙。所以最壞的情況是壞人都不撒謊。這時每一輪詢問次數如下。 (1)M+1 (2)M (i)M+2-i (M)2 剩下的都是好人(好人過半),就不用再問了。所以最惡劣的情況需要詢問(M+3)M/2次。原來的粗略估計為(3/2)MM + M。改進還是很大的。 |
|
|
|
實用資訊 | |