考慮這麼一個 14 位元 02565413989732 ,,它的數字先逐漸層大,然後開始變小,再變大,再變小,再變大,再變小。我們就說,它一共包含了 6 個單調區間。我們的問題就是:一個 n 位元平均有多少個單調區間?為了避免歧義,我們假設任意兩位相鄰的數字都不相同,因而像 77765589911 這樣的數我們就不考慮了。另外,大家可能已經注意到了,我們允許這個 n 位元以數字 0 開頭。因而,更精確地說,我們的問題是:相鄰數字都不相同的、允許以
0 開頭的所有 n 位元當中,平均有多少個單調區間?
這個題目來自 1987 年 IMO 候選題。
讓我們把所有這種 n 位元的個數記作 N 。那麼 N 等於多少?這個 n 位元的第一位有 10 種選擇,今後的每一位都只有 9 種選擇(因為要跟前一位不一樣),因而 n 位元一共有 N = 10 · 9n-1 個。接下來,我們要求的就是,所有 n 位元當中的所有單調區間一共有多少個。我們換一種方法來累計這些單調區間:先算所有從第一位開始的單調區間,再算所有從第二位開始的單調區間,等等,最後算所有從第
n 位開始的單調區間。如果用 ri 來表示所有從第 i 位開始的單調區間的數目,那麼我們要求的平均單調區間數就是 (r1 + r2 + … + rn) / N ,也就是 r1 / N + r2 / N + … + rn / N 。注意到其中的每一項 ri / N 其實就是從 N 個合法的 n 位元中任取一個後,存在以第 i 位元打頭的單調區間的機率。因此,我們只需要求出這
n 個機率值,加起來便是我們想要的答案了。
顯然, r1 / N = 1 ,因為第一位元字必然會引領一個單調區間。顯然, rn / N = 0 ,因為最後一位元字不可能引領一個新的單調區間。那麼,對於其他的 ri / N 呢?注意到,第 i - 1 位、第 i 位和第 i + 1 位的大小關係一共可能有以下四種情況:
其中,只有第三種情況和第四種情況下,第 i 位才會成為一個新的單調區間的開始。為了計算這兩種情況發生的機率,我們只需要算出情況 1 和情況 2 發生的機率,再用 1 來減即可。情況 1 發生的機率有多大呢?三位元字串一共有 10 · 92 個(第一位有 10 種選擇,後面的每一位都只有 9 種選擇,因為要跟前一位不一樣)。為了得到遞增的數字串,我們只需要選出三個不同的數字,然後把它們從小到大排列即可,這一共有
C(10, 3) 種方法。因此,情況 1 的發生機率就是 C(10, 3) / (10 · 92) = 4/27 。同理,情況 2 的發生機率也是 4/27 ,兩者加起來就是 8/27 ;反過來,情況 3 和情況 4 出現的機率就是 1 - 8/27 = 19/27 了。
因此,我們最終要求的答案就是 1 + 19/27 + 19/27 + … + 19/27 + 0 = 1 + (n - 2) · 19/27 。
這個結論還會引出很多有意思的問題。在一個 29 位元當中,平均會產生 20 個單調區間。我們似乎發現了一個很不合理的地方:這豈不意味著,平均每個單調區間的長度只有 29/20 = 1.45 個數字嗎?考慮到單調區間的長度不可能恰好是 1.45 個數字,為了得到 1.45 這個平均長度,一定有些區間的長度比 1.45 小,有些區間的長度比 1.45 大。有些區間的長度比 1.45 小,這不就意味著這些區間的長度為 1 嗎?而一個區間的長度顯然是不可能為 1 的。怎麼回事?
其實, 29/20 = 1.45 這個算式是錯的。在這 20 個單調區間中,除了最後一個區間以外,每一個區間的最後一個數與下一個區間的第一個數都是公用的。因此,這個 29 位元當中,有 19 個數被重複使用了。所以,在一個 29 位元當中,單調區間的平均長度應該是 (29 + 19) / 20 = 2.4 。
類似的, n 位元的單調區間的平均長度為 (n + (19/27)(n - 2)) / (1 + (19/27)(n - 2)) = (46n - 38) / (19n - 11) = (46 - 38/n) / (19 - 11/n) 。當 n 無窮大時,其極限為 46/19 。
參考資料:Ross Honsberger, From Erdos to Kiev: Problems of Olympiad Caliber, pp. 29-33
轉載自:http://www.matrix67.com/blog/archives/5296