算法导论-生日悖论

 

算法导论第五章讲到了生日悖论。

 

1、定义:生日悖论[1]是指,如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。这就意味着在一个典型的标准小学班级(30人)中,存在两人生日相同的可能性更高。对于60或者更多的人,这种概率要大于99%。从引起逻辑矛盾的角度来说生日悖论并不是一种悖论,从这个数学事实与一般直觉相抵触的意义上,它才称得上是一个悖论。大多数人会认为,23人中有2人生日相同的概率应该远远小于50%。计算与此相关的概率被称为生日悖论, 在这个问题之后的数学理论已被用于设计著名的密码攻击方法:生日攻击。

它的计算方式是这样的: 
  n个人可能的生日组合是365×365×365×……×365(共n个)个,记作a; 
  n个人生日都不重复的组合是365×364×363×……×(366-n)个,记作b; 
  所以n个人生日不重复的概率是b/a,则n个人生日重复的概率是1-b/a。 

     只要有23人在一起,其中两人生日相同的概率就达到51%!

 

具体细节维基百科[1]有分析。

 

生日悖论的本质就是,随着元素增多,出现重复元素的概率会以惊人速度增长,而我们低估了它的速度[2]。


2、推广:

     a.一个房间要有多少人,才能让某人与你生日相同的概率至少为1/2?(习题5.4-1)

    答:至少要253个,见维基百科。

     b.一个聚会需要邀请多少人,才能让其中很可能有3个人的生日相同?(习题5.4-3)


3、相关

    a.你和朋友参加聚会,包括你们两人在内一共有10个人在场。 你朋友想跟你打赌,说这里没有一个人生日和你相同,你就给他1元, 没有一个人生日和        你不同,他给你2元。你会接受么?(坊间流传的google疯狂面试题)

        答:接收,跟你生日不相同人的概率远大于有一个人跟你生日相同的概率,算下来期望大于零。

    b.网上的一道推理题:小明和小强都是张老师的学生,张老师的生日是m月n日,2人都知道张老师的生日是下列10组中的一天,张老师把m值告诉了小明,把n值告诉了小强,张老师问他们知道他的生日是那一天吗?

  • 3月4日 3月5日 3月8日
  • 6月4日 6月7日
  • 9月1日 9月5日
  • 12月1日 12月2日 12月8日
  • 小明说:如果我不知道的话,小强肯定也不知道
  • 小强说:本来我也不知道,但是现在我知道了
  • 小明说:哦,那我也知道了

请根据以上对话推断出张老师的生日是哪一天?

          答:答案是9月1日,稍加推理就可。


4、参考:

1.维基百科-生日问题:http://zh.wikipedia.org/zh-cn/生日悖论#.E5.AF.B9.E6.AD.A4.E6.82.96.E8.AE.BA.E7.9A.84.E8.A7.A3.E9.87.8A

2.科学松鼠会,生日悖论与生日攻击: http://songshuhui.net/archives/23737.html

posted @ 2010-08-05 21:58  瓦尔登湖  阅读(4810)  评论(0编辑  收藏  举报