【編程之美】金剛坐飛機問題


 題目描述

現在有一架飛機要起飛,乘客們正准備按機票號碼(1,2,3...,N)一次排隊登機。突然來了一只大猩猩(金剛)。他也有機票,但是他插隊第一個登上了飛機,然后隨意的選擇了一個座位坐下了。根據社會的和諧程度,其他的乘客有兩種反應:

1.乘客們都義憤填膺,“既然金剛同志都不守規矩,為什么我要遵守?”他們也隨意的找位置坐下,並且堅決不讓座位給其他乘客。

2.乘客們雖然感到憤怒,但是還是以“和諧”為重,如果自己的位置沒有被占領,就趕緊坐下,如果自己的位置已經被別人(或者金剛同志)占了,就隨機的選擇另一個位置坐下,就開始閉目養神,不在挪動。

問題:在這兩種情況下,第i個乘客(出去金剛同志外)做到自己原機票位置的概率分別是多少?


問題解答

第一問:該問題相當於排序問題,總的排序總數是n個人的全排列為N!,如果第i個人做到第i個位置上,那么其余n-1個人的全排列為(N-1)!,綜上所求概率為(N-1)!/N!=1/N。

第二問:《編程之美》講得比較復雜,沒怎么看懂,在網上找了幾個博文對該問題的解答,綜合一下,這樣理解比較容易:

假設:F(i,n)表示在有n個座位的前提下,第i個人恰好做到第i個座位的概率;

P(K=j)表示金剛剛好坐在位置j上的概率;

P(i|K=j)表示在金剛做到位置j的前提下,第i個人恰好做到第i個位置上的概率。

由以上的假設根據全概率公式有:

  由於金剛坐到每一個位置上的概率是相等的,容易知道P(K=j)=1/n;

  接下來我們只需要考慮后一項條件概率的值即可。

  (1)如果j=1,則表明金剛坐到第一個位置,則i坐到i位置的概率為1;如果j>i,前面的人必然按位置坐,所以概率也為1.所以我們只需要考慮1<j<i的情況,見下。

  (2)在1<j<i的情況下,即金剛坐在第j(1<j<i)個位置上,則j個乘客除非坐在金剛的位置上,否則同樣要同樣要搶占其他人的座位。這和金剛的行為是相似的(因為金剛除非坐在自己的位置上,否則搶占別人的座位),所以我們可以講第j個乘客當做新的金剛,此時還剩余n-j個座位,同時把剩余乘客的編號也都減去j,則先前的第i個乘客座位號變為i-j,此問題和原問題相似,只是規模更小,所以該種情況下,條件概率為F(i-j,n-j).

  所以有如下等式:

   然后可以從上面的公式推出遞推式:F(i,n)=F(i-1,n-1).(筆者驗證了一下,公式是對的,但是不會推導,希望有會的網友指點)。

  有上面的遞推公式,我們可以到:nF(i,n)=(n-i+1)+(i-2)F(i,n),則問題的最終答案為:

  


參考文獻:

1. 《編程之美》P265-P267

2. http://hi.baidu.com/maxint/blog/item/8ac3c49707911f6354fb96e9.html

3. http://blog.sina.com.cn/s/blog_7cd1ba470100rgkz.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM