最近很火的50只狗,有好狗有病狗,去判断有几只病狗的的逻辑推理题目

题目:50人有50条狗,有病狗。每个人只能看到其他人的狗(不能看到自己的狗),只有狗的主人才能打死狗。相互不能交流,不能通知狗的主人。如果推断出自家狗是病狗,就要枪毙,只能枪毙自家狗。第一天没有枪声,第二天有一阵枪声。请问有几只病狗?

听说这是小升初的考试题,这实在是太难了,怀疑那些出题的老师第一次看到这个题能不能做出来。这应该是离散数学中典型的逻辑分析题,我想除了专门修过离散数学和少数天才外应该很少有人在规定时间内算出答案,反正我算不出。下面的分析过程,是我参考了网上的答案,再按照自己的理解写出来的。


其实我认为这个题之所以难,我觉得是题目表达的不够清晰。理解这个问题首先有几个隐含的条件要搞明白。
a50只狗里面至少有1只病狗。
b、病狗是一眼就能分辨出来的,但是狗的主人无法观察判断自己的狗是不是病狗。
c、狗的主人推断出自己的狗是病狗后,一定要在当天杀死狗,在当天中的0:0024:00任何时候都行。

从而还能得到一个推论d:如果病狗的主人看到N只病狗,那么好狗的主人能看到N+1只病狗,也就是说病狗的主人看到的病狗的数量是实际病狗数量再减1.


明确了上述的3个条件和1个结论,再去解答这个问题,就会简单很多。 

1, 假设只有1只病狗,所有人在观察完其他人的狗后,那么根据推论d,病狗的主人不会看到病狗,再根据条件a,从而能够推断出自己的狗是病狗,于是会在当天24点之前杀死自己的狗。

2, 但是第一天没有枪声,说明至少有2只病狗(把这个结果当成推论e)。于是从第二天0:00开始,所有人都应该知道至少有两只病狗。假设只有2只病狗,根据推论d,病狗的主人只看到1只病狗,说明剩下的那只没有看到的病狗就是自己的狗,于是在第二天可以从0:0024:00选择任何一个时间点杀死自己的狗,第二天就会听到枪声。

3, 继续假设有3只病狗的话。由根据推论d,病狗的主人能观察到2只病狗,再根据推论e,所以无法判断自己的狗是否为病狗,所以在第二天不可能杀狗,也就不会有枪声,综合12,答案为2只狗。

4, 把题目改一下,改成是第三天听到枪声。第二天0:00一到,大家都知道有2只病狗了,那么第二天一直到24:00都没有枪声的话,说明每个人都看到至少2只病狗。根据推论d,那么从第三天0:00开始,每个人会知道至少有3只病狗。假设也只有3只病狗,那么病狗的主人只能看到2只病狗,说明剩下的那只没有看到的病狗就是自己的狗,于是在第三天肯定要杀死自己的狗,第三天就会有枪声。

5, 以此类推,第几天听到枪声,就有几只狗。

posted on 2014-07-02 16:06 古月 阅读(13094) 评论(11)  编辑 收藏 引用 所属分类: 离散数学及其应用

评论

# re: 最近很火的50只狗,有好狗有病狗,去判断有几只病狗的的逻辑推理题目 2014-07-03 16:15 吉祥

大于等于2条病狗  回复  更多评论   

# re: 最近很火的50只狗,有好狗有病狗,去判断有几只病狗的的逻辑推理题目 2014-07-03 17:31 球爸爸

只能说明病狗数大于2小于50,原理一样首先只要在狗群里看到病狗不管是看到1只还是49只都会觉得自家的狗是好狗,这是第一天不杀狗的原因,其实这个题目就是解释这个问题,第二天人就会开始怀疑第一天大家都没有杀狗,那肯定是自己家的是病狗,杀之。第二天50只狗一部分就会被群杀,而有部分人还在犹豫。跟病狗数没有太多关系,只跟人有关系  回复  更多评论   

# re: 最近很火的50只狗,有好狗有病狗,去判断有几只病狗的的逻辑推理题目 2014-07-03 22:57 古月

不是这样的。第一天没有人杀狗,只能推出来至少有2只病狗。我们假设有3只病狗,那么病狗的主人在第一天会实际观察到2只病狗,由于病狗的主人在第二天的时候能推断只能推断出至少有2只病狗,而他又看到2只病狗,所以他不会在第二天杀自己的狗。所以只能是有2只病狗。  回复  更多评论   

# re: 最近很火的50只狗,有好狗有病狗,去判断有几只病狗的的逻辑推理题目 2014-07-03 23:03 古月

说说你认为为什么是大于等于2条狗,我认为答案就是2条狗@吉祥
  回复  更多评论   

# re: 最近很火的50只狗,有好狗有病狗,去判断有几只病狗的的逻辑推理题目 2014-07-04 15:19 开心

要是,第一天看到49条病狗呢?  回复  更多评论   

# re: 最近很火的50只狗,有好狗有病狗,去判断有几只病狗的的逻辑推理题目 2014-07-04 15:21 古月

假设病狗的主人第一天看到49只病狗,那说明50条狗都是病狗,大家会在第50天的时候杀狗@开心
  回复  更多评论   

# re: 最近很火的50只狗,有好狗有病狗,去判断有几只病狗的的逻辑推理题目 2014-07-04 17:20 开心

第一天大家都看到49只病狗,说明除自己的狗,其他人全部都是病狗,第一天大家都没有杀狗,说明自己的狗也是病狗,第二天就应该杀50条狗!@古月  回复  更多评论   

# re: 最近很火的50只狗,有好狗有病狗,去判断有几只病狗的的逻辑推理题目 2014-08-14 13:52 chen sir

你这个推论,需要所有的狗主人都足够聪明,起码要比我强,不是你解释,我就搞不懂啥时候该杀狗。咱的离散数学白学了。

所以,我认为,啥时候杀狗,取决于狗主人。要是有一个狗主人没算清楚,那就会误杀很多只狗。  回复  更多评论   

# re: 最近很火的50只狗,有好狗有病狗,去判断有几只病狗的的逻辑推理题目 2014-08-29 15:04 古月

做这问题,肯定是要假设狗主人都是头脑清楚的,知道什么时候该杀狗,否则题目没有做了@chen sir  回复  更多评论   

# re: 最近很火的50只狗,有好狗有病狗,去判断有几只病狗的的逻辑推理题目 2014-08-29 15:08 古月

你的这个解释没有看明白,为什么第一天大家都没有杀狗,自己的狗就是病狗呢@开心
  回复  更多评论   

# re: 病狗 2014-11-16 23:07 胡涛锦

我记得这题,题目大意是:
一个村庄,50人有50条狗,警察告诉村民有病狗。每个人只能看到其他人的狗(不能看到自己的狗),只有狗的主人才能打死狗。相互不能交流,不能通知狗的主人。如果推断出自家狗是病狗,就要枪毙,只能枪毙自家狗。第一天没有枪声,第二天有一阵枪声。请问有几只病狗?

首先强调题目默认的:50个人都是聪明人。

还有一点你没讲清楚:
所有正常狗的行为都一样,病狗的行为都一样,正常狗与病狗行为不一样。也就是有2种行为,但是人们并不知道哪种行为的狗是病狗,就是说人们只能区分2种行为,并不能以狗的行为来断定狗是否有病。()警察只是告诉村民有病狗


你的第一条:假设只有1只病狗,||并不||能够推断出自己的狗是病狗。
假设A的狗是病狗。
第一天
A观察到其他49人的狗行为症状一样,可以得出3种结论:1是自己的狗是病狗,2是其他49人的狗是病狗,3是49只加上自己的共50病狗,于是不杀。
其他49人的观察是一样的:48只行为一样,1只行为不同于那48,于是能得出4种可能性:1只病狗、1只加上自己的那只共2只病狗、48只病狗、48只加上自己的共49只病狗,所以那49人也不杀自己的狗。
第二天
好像很分析下去了... 所以题目应该加个限制,病狗的数量<狗总数的一半,才是博主分析的那样。
  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2014年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章档案

C++/C

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜