一个数理逻辑问题(经典)

原问题应该是这样的:

有一个小村庄,住着50户人家,每家都有一只狗。从前,村子里有一只疯狗。大家一起来讨论一下:每天早上都要去每家每户查看狗狗的情况。一旦发现自己的狗是疯狗,当天晚上一定要开枪打死。这个村的人都有这么一个本事,能分辨别人家的狗是不是疯狗,却分辨不出自己家的狗是不是疯狗。又不能告诉对方真相。第一天,第二天,村子里没有枪声。第三天晚上,村子里响起了枪声,村子里所有的疯狗都被打死了。村子里有多少只疯狗?

首先:大家都知道疯狗肯定是存在的。

假设:一个人发现,他观察的49个家里,除了他自己,有48个是好狗,1个是疯狗。

因为无法判断自己的狗,他得出的结论是:疯狗至少有1只,最多两只(加上自己的)。

如果是1,那么有49只好狗,属于“49只好狗阵营”;如果是2,那么有48只好狗,它们属于“2个疯狗阵营”

虽然他不确定是1还是2,但他会推理:

如果是1,那就是他的狗也是好狗,只有他能看出来那只狗是唯一的疯狗,那就让它的主人是a。

然后A会看到别人家的狗都是好狗,A知道肯定有疯狗,只能是A自己的狗。

所以A会在第一天拍狗。

但是第一天,没有人开枪,

这说明A没有看到“别人家的狗都是好狗”,

所以疯狗的数量不是1,而是2。“一个人”属于“2个坏狗营”而不是“49个好狗营”——除了他自己和a,48个都是好狗。

所以第二天他会射杀他的狗。

a和《有一个人》一模一样,基于同样的推理第二天就要拍了。

所以,如果第二天有人开枪,说明疯狗的数量是2只。

但是第二天没有人开枪,

所以“一个人发现他观察的49个家里除了自己以外有48个是好狗,1个是病狗”的假设不成立。

疯狗的数量不是2,当然也不是1。

我们继续假设一个人发现他观察的49个家里除了他自己以外,有47个是好狗,2个是疯狗。

因为无法判断自己的狗,所以得出结论,疯狗最少两条,最多三条(加上自己的)。

如果是2,那么有48只好狗,属于“48只好狗阵营”;如果是3,那么有47只好狗,它们属于“3个疯狗阵营”

虽然他不确定是2还是3,但他会推理:

如果是2,就是他的狗也是好狗,他看到两只狗都是疯狗,主人是A和b。

a或者B也会做推理。比如A会推断出病狗的数量是1或者2,推理过程前面已经讲过了。

如果是2,第二天A和B都会出手,但是第二天没有人出手。

所以只能是3,也就是说“一个人”不属于“48好狗阵营”而是属于“3病狗阵营”

于是第三天,有人开枪了,意思是“有一个人”,A和B意识到自己的狗有病,就开枪了。

结论:推理可以一直进行下去,拍摄的前几天有几只疯狗。