|
|
发表于 2004-11-23 10:35:00
|
显示全部楼层
Re:微软的老题,关于狗的,不知道的来看看
如果每天只能观察一次的话。。
则如果只有一条狗,那么那条狗的主人在第一天就会把自己的狗杀了。
如果有两条狗,那么两条狗其中一个主人就会在第一天没有听到枪声的情况下,在第二天把自己的狗杀了,也就是说,在第二天会出现枪声。
如果有三条狗,那么三条狗其中的一个主人就会在前两天没有听到枪声的情况下,在第三天把自己的狗杀了。
其实挺好推测的,当某个人A看到周围的49只狗都是正常的时候,他肯定会杀自己的狗。
假设任意一个人看到的生病的狗为n个。。
那么实际的生病的狗就有n个或者n+1个(自己的狗也病了)
当n = 0的时候,只有n + 1才会 >= 1,所以病狗一定是自己的。
当n = 1的时候,在第一天里有人会杀自己的狗,或者自己的狗也病了,所以如果第一天没人杀狗的话,第二天就该杀自己的狗了。
当n = 2的时候,按照前面的理论,假设所有的病狗就是为2,那么两天的时间就应该有人杀狗了,如果没有的话,那么实际的病狗应该为3,所以自己的狗也是病狗。
这样推下来,当某个人观察到的病狗为n的时候。
就需要消耗n天或者n + 1天才能清除所有的病狗。
回到题目,假设第三天传出一阵枪声的话,那么假如观察者的狗不是病的,那么他观察到的就应该是三条病狗,因为在三天之后,确实有狗被杀死了。
如果观察者的狗是病的话,那么他观察到的就是两条病狗,因为在他等了两天之后,还没有发现病狗,那么自己的狗必然是病狗。同样也是三天发现。
其实博弈论范畴的题目最大的假设就是要假设每个人都一样聪明。
|
|