題目:50人有50條狗,有病狗。每個(gè)人只能看到其他人的狗(不能看到自己的狗),只有狗的主人才能打死狗。相互不能交流,不能通知狗的主人。如果推斷出自家狗是病狗,就要槍斃,只能槍斃自家狗。第一天沒(méi)有槍聲,第二天有一陣槍聲。請(qǐng)問(wèn)有幾只病狗?
聽(tīng)說(shuō)這是小升初的考試題,這實(shí)在是太難了,懷疑那些出題的老師第一次看到這個(gè)題能不能做出來(lái)。這應(yīng)該是離散數(shù)學(xué)中典型的邏輯分析題,我想除了專(zhuān)門(mén)修過(guò)離散數(shù)學(xué)和少數(shù)天才外應(yīng)該很少有人在規(guī)定時(shí)間內(nèi)算出答案,反正我算不出。下面的分析過(guò)程,是我參考了網(wǎng)上的答案,再按照自己的理解寫(xiě)出來(lái)的。
其實(shí)我認(rèn)為這個(gè)題之所以難,我覺(jué)得是題目表達(dá)的不夠清晰。理解這個(gè)問(wèn)題首先有幾個(gè)隱含的條件要搞明白。
a、50只狗里面至少有1只病狗。
b、病狗是一眼就能分辨出來(lái)的,但是狗的主人無(wú)法觀察判斷自己的狗是不是病狗。
c、狗的主人推斷出自己的狗是病狗后,一定要在當(dāng)天殺死狗,在當(dāng)天中的0:00到24:00任何時(shí)候都行。
從而還能得到一個(gè)推論d:如果病狗的主人看到N只病狗,那么好狗的主人能看到N+1只病狗,也就是說(shuō)病狗的主人看到的病狗的數(shù)量是實(shí)際病狗數(shù)量再減1.
明確了上述的3個(gè)條件和1個(gè)結(jié)論,再去解答這個(gè)問(wèn)題,就會(huì)簡(jiǎn)單很多。
1, 假設(shè)只有1只病狗,所有人在觀察完其他人的狗后,那么根據(jù)推論d,病狗的主人不會(huì)看到病狗,再根據(jù)條件a,從而能夠推斷出自己的狗是病狗,于是會(huì)在當(dāng)天24點(diǎn)之前殺死自己的狗。
2, 但是第一天沒(méi)有槍聲,說(shuō)明至少有2只病狗(把這個(gè)結(jié)果當(dāng)成推論e)。于是從第二天0:00開(kāi)始,所有人都應(yīng)該知道至少有兩只病狗。假設(shè)只有2只病狗,根據(jù)推論d,病狗的主人只看到1只病狗,說(shuō)明剩下的那只沒(méi)有看到的病狗就是自己的狗,于是在第二天可以從0:00到24:00選擇任何一個(gè)時(shí)間點(diǎn)殺死自己的狗,第二天就會(huì)聽(tīng)到槍聲。
3, 繼續(xù)假設(shè)有3只病狗的話。由根據(jù)推論d,病狗的主人能觀察到2只病狗,再根據(jù)推論e,所以無(wú)法判斷自己的狗是否為病狗,所以在第二天不可能殺狗,也就不會(huì)有槍聲,綜合1和2,答案為2只狗。
4, 把題目改一下,改成是第三天聽(tīng)到槍聲。第二天0:00一到,大家都知道有2只病狗了,那么第二天一直到24:00都沒(méi)有槍聲的話,說(shuō)明每個(gè)人都看到至少2只病狗。根據(jù)推論d,那么從第三天0:00開(kāi)始,每個(gè)人會(huì)知道至少有3只病狗。假設(shè)也只有3只病狗,那么病狗的主人只能看到2只病狗,說(shuō)明剩下的那只沒(méi)有看到的病狗就是自己的狗,于是在第三天肯定要?dú)⑺雷约旱墓罚谌炀蜁?huì)有槍聲。
5, 以此類(lèi)推,第幾天聽(tīng)到槍聲,就有幾只狗。