100个人坐座位

问题描述:

这100个人分别拿到了从1号到100号的座位,这些乘客会按号码顺序登机并对号入座,如果他们发现对应号座位被别人坐了,就会在剩下空的座位随便挑一个坐.现在假设1号乘客不记得自己的座位,他会在100个座位中随便选一个座位坐下,问:第100人正确坐到自己坐位的概率是多少?

设P(k)是总共k个人时第k个人坐到自己座位的概率,那么100个人时概率如下:

若第1个人坐到自己位置上,第100个人肯定可以坐到自己座位,若第1个人坐到第100个人座位上,那么第100个人坐到自己位置的概率为0,若第1个人坐到第i个人的位置,那么第2到i-1个位置的人都不会坐错,第i个人选择时与第一个人情况相同,若坐到第1个人的位置上,第100个人肯定可以坐到自己座位,因此后续子问题相当于总共i个人时第i个人可以坐到自己位置上的概率。

但是当我推出这个式子时感到内心还是崩溃的,这感觉是一个动态规划问题递归求解..如何能笔算出答案呢.. 此时我想到了如果从反向看是否能有所突破。

设Q(k)是总共k个人时第k个人不能坐到自己座位的概率,那么100个人时概率如下:

若第1个人坐到第100个人位置上,第100个人肯定坐不到自己座位,若第1个人坐到自己座位,那么第100个人坐不到自己位置概率是0,若第1个人坐到第i个人的位置上,那么第2到第i-1个人不会坐错,第i个人选择时与第一个人情况相同,若坐到第1个人位置上,第100个人坐不到自己位置概率是0,坐到第100个人的位置上,第100个人肯定坐不到自己座位,因此问题分解和P的假设形式一样但是代表意义不同。

两个表达式初值方面,P(2)与Q(2)的概率均为1/2,P(k)与Q(k)有以下统一形式:

那么P(100)与Q(100)的值也应该相同,而P(100)+Q(100)=1,所以问题答案是1/2。

更详细的思路:

这个问题答案是1/2,算法有很多种。

先给飞机座位(100个)按登机的顺序排个序号1~100(不是座位号,只表明他们之间顺序),傻子原本应该做1号的位置,因为他傻,所以他就随便挑个位置坐了(当然,他也可能有挑1号的);按照题中所给的规则,问最后一个人坐100号的概率。

假设一、所有人只能坐大于等于自己登机顺序的座位或1号座位,也就是说所有小于自己顺序的座位(除了1号座位)都已经有人坐了。
反证法,如果第M个人坐了N(1<N<M)号座位,那第N个人先于第M个人上飞机时,N号座位应该是空的,由题意可知,第N个人应该坐到自己的座位(N)上,2人坐一个座位,矛盾;所以假设成立。

推论:最后一个人只能坐1号或100号。


假设二、假设第N个人坐了1号座位,所有比他后登机的人(登机顺序>N)都能坐到自己的位置。
由假设一,可知最后一个人只能坐自己的位置上,依次倒推,第100~N+1人都只能坐自己座位上;假设二成立。

推论:某人登机时,其座位已经被其他人坐,那么1号座位一定没人坐。


假设三、每个人坐1号座位的概率等于他自己坐100号座位的概率。傻子登机时,按题意,他坐1号和100号的概率是相等的,都为1/100。

当第N(100>N>1)个人登机时,有2种情况:
1、自己座位还没有人坐,这时他应该坐到自己的座位上,此时他坐1号和100号的概率都为0;
2、座位已被其他人坐,由假设二推论可知,1号座位肯定还没有人坐,由假设一,2~N-1号座位都已经有人坐了,再加上自己的座位,正好N-1个人,也就是说100号座位肯定也没有人坐,此时他坐1号和100号的概率也是相等的。

综合以上2种情况,当第N(100>N>1)个人坐1号和100号的概率是相等的。

第100个人,所有人坐1号座位概率的和=所有人坐100号座位概率的和=1(最后每个座位肯定有人坐)
第1~99个人每人坐1号座位的概率等于他自己坐100号座位的概率,那么第1~99个人坐1号座位的概率和=第1~99个人坐100号座位的概率和

由以上2点可以推出最后一人(第100人)坐1号和100号的概率是相等的。

最后,由假设三、及假设一的推论,可以得到最后一人做到自己座位的概率为1/2,由以上过程也可以看出,不管多少人(人数>2)坐飞机,最后一人坐到自己座位的概率都为1/2。