基本介紹
- 中文名:病狗問題
- 發生時間:2014年6月底
- 發生地點:中原區一中實驗分校(桐柏一中)
題目,分析,推理,結論,
題目
村子中有50個人,每人有一條狗,每天傍晚大家都在同一個地方遛狗。在這50條狗中有病狗(這種病不會傳染)。於是人們就要找出病狗。每個人可以觀察其他的49條狗,以判斷它們是否生病,只有自己的狗不能看。觀察後得到的結果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要槍斃自己的狗,而且每個人只有權利槍斃自己的狗,沒有權利打死其他人的狗。第一天,第二天都沒有有槍響。到了第三天村子傳來一陣槍聲,問有幾條病狗,如何推算得出?
網上有各種版本的答案分析,各有異同。現試分析推理如下:
分析
1,村中一定有病狗
2,村民都很聰明,不會發生推理錯誤,在不確定自己的狗一定有病的情況下,不會殺狗,一旦推斷出自己的狗有病,就一定會槍斃狗--有槍聲響起(必要性)
3,村民能看出哪只狗是病狗
4,一天看一次其他人的狗,不能看自己的狗,不能交流
5,推算病狗
網路瘋傳的這道題,其實有著邏輯缺陷:按照現有條件,是無法推斷出結果的。
其實這個漏洞就隱含在第四個分析中!
為什麼要一天看一次其它人的狗?第二天看其他人的狗,好狗病狗的數量與前一天的數字一樣嗎?
如果一樣,第二天乃至第n天就沒有再看的必要!
如果不一樣,說明實際好狗與病狗的數字是在不斷變化,就失去了推理的基礎。
本題的實際條件是:
1,總狗=50
2,病狗>=1
3,不能看自己的狗,不能交流。(隱含條件)病狗的主人看到的好狗數量=好狗的真實數量,(50位村民看到的好狗數量就是兩個值,病狗主人看到a條狗,好狗主人看到的是a-1條好狗)
4,村民都很聰明,不會發生推理錯誤,在不確定自己的狗一定有病的情況下,不會殺狗,一旦推斷出自己的狗有病,就一定會槍斃狗--有槍聲響起
5,本題缺乏的致命邏輯條件:村民們每天只完成一輪推理,既不多一輪推理,也不少一輪推理。
這個條件可改成:每位村民每天只有一次機會,來決定是不是要槍斃自己的狗。則原題答案不變,
如果村民每天上午和下午分別有一次機會,決定是不是槍斃自己的狗,則答案變成5條病狗(第三天上午槍斃)或6條病狗(第三天下午槍斃),這兩種情況二者必居其一,二者僅居其一。
如果不限制村民槍斃狗的機會,則沒有任何一位村民能夠推斷出病狗的數量,因為條件不足,第三天根本不會響槍,任何人都不會在沒有確實證據的情況下槍斃自己的狗(條件4)
具體推理如下請看
推理
原題錯誤推理
1,如果有一隻病狗A,第一天狗主人甲沒看到其他人有病狗,得出自己的是病狗,第一天槍斃病狗A;其他人看到有病狗A,認為自己的狗沒病,不作反應。
2,如果有兩隻病狗AB,第一天狗主人甲看到乙的病狗,以為自己的狗沒病,乙看到甲的病狗,也以為自己的狗沒病,其他人也以為自己的狗沒病,第一天均不作反應;第二天再看狗時,甲看到乙的病狗沒死,他得出乙第一天看到了別人病狗,而其他人都沒病狗,得出自己和乙的狗是病狗,乙想法同甲,於是第二天看完狗後兩人槍斃兩狗,其他人沒反應。(其他人第一天看到兩隻狗,第二天還是看到兩隻狗,他們知道甲乙要第二天才能推理出各自的病狗,不做反應)
3,如果有三隻病狗ABC,推理同上,得出第三天槍斃病狗。
以上的標準答案推理是錯的,因為它混淆50位村民頭腦假設的病狗數量與真實病狗數量,這是不一樣的。
真實的病狗數字是不會變化的!而村民也不需要在第二天再看狗,狗死不死聽槍響。數量第一次看到就知道了:如果村民第一次看狗,病狗的數字是n,那么病狗的數字對於這位村民來說,要么是n,要么是n+1,沒有第三種情況。而村民為了防止自己的狗被誤殺,是從病狗只有一條假設起,逐步推理到病狗為n以及n+1的各種情況,從而得出準確的病狗數量,並以此來確定自己家狗是否病狗,再決定自己是否開槍響槍。所以他們的推理是這樣的:
推理1,有人看到49條好狗=響槍不響槍(等值於)病狗>=2 具體過程:
如果有人看到49條好狗,疊加條件1和2,即:【好狗=49 & 總狗=50 & 病狗>=1】 =自己的狗是病狗=響槍。這個推理表明:有人看到49條好狗=一定會響槍
不響槍=沒有人看到49條好狗=病狗主人看到的好狗也小於49條(加上隱含條件,病狗的主人看到的好狗數量,就是好狗的真實數量)=好狗<49,疊加條件1:【好狗<49 & 總狗=50】,推出:病狗>=2,這個推理表明:不響槍(等值於)病狗>=2
因此,在第一天不響槍的情況下,大家完成了推理1,都知道了病狗>=2,大家也知道了彼此的知道,因此進入推理2:
推理2,有人看到48條好狗=響槍 不響槍(等值於)病狗>=3 具體過程:
【好狗=48& 總狗=50 & 病狗>=2】 =自己的狗是病狗=響槍。這個推理表明:有人看到48條好狗=剩下的2條狗都是病狗=自己的狗是病狗=一定會響槍
不響槍=沒有人看到48條好狗=病狗主人看到的好狗也小於48條(加上隱含條件,病狗的主人看到的好狗數量,就是好狗的真實數量)=好狗<48,疊加條件1:【好狗<48& 總狗=50】,推出:病狗>=3,這個推理表明:不響槍(等值於)病狗>=3
疊加推理1和推理2,我們知道:50人全部看完其他人的狗後,
第一次開槍機會,看到49好狗人會響槍,不響槍,大家推理1,知道病狗多於2隻,
第二次開槍機會,應該由看到48好狗人響槍,不響槍,大家推理2,知道病狗多於3隻,以此類推
如果不限制開槍機會,村民A永遠不知道該在什麼時候,大家一起推理2,
結論
題目有問題,病狗可能有3隻。
這個題目的來源是Halpern和Moses以及Halpern和Fagin提出的經典muddy children難題。疊加條件1和條件2