【趣味題目】n維切k刀

1. 引

之前做了一道題:

有一個大西瓜, 用水果刀平整地切, 總共切9刀, 最多能切成多少份, 最少能切成多少份?

最少很好求,就是 10 份唄。關鍵是最多是多少。

這個問題可以一般化爲一個很經典的數學問題:

k 個超平面可以把 n 維空間最多分爲多少部分?

我們定義 f(n, k)f(n,\ k) 表示該問題的解,首先我們會給出這個解的遞推公式,然後給出其通項公式。

2. 遞推公式

首先考慮平凡問題解:

  1. k 個點可以最多把一條直線分成幾個部分?
    k+1k + 1

  2. 1 個超平面可以最多把 n 維空間分成幾個部分?
    2 個

所以:
{f(n, 1)=2f(1, k)=k+1 \begin{cases} f(n,\ 1) = 2\\ f(1,\ k) = k + 1 \end{cases}

再考慮一般情況 f(n, k)f(n,\ k)。我們把它分成兩個部分來看:

  1. 前面 k1k - 1 刀把空間分成了幾份?

我們不知道,但是我們可以用 f(n, k1)f(n,\ k - 1) 來表示。

  1. kk 刀給空間多劃分了幾份?

這個問題就比較關鍵了。爲了方便理解,我們可以從最簡單的二維世界開始講。如果我們已經在平面上劃了 k1k - 1 條線,現在劃第 kk 條線,且需要儘可能多的分割平面應該怎麼做呢?

顯然,稍加思考就會發現這是一個貪心問題,可以貪心的求解:只需要讓新的一條線同之前所有的線都相交就可以了。原本的 k1k - 1 條線會把新的線分割成 kk 個部分,然後新增出 kk 個空間出來。

如下圖所示,原本三條直線把空間分爲 7 個部分,新增了一條線後,一下子多出來了 4 個空間。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-T7v9SisW-1584633914640)(demo.png)]

同樣的道理擴展到 n 維空間也是一樣的。原本已經有了 f(n, k1)f(n,\ k - 1) 個部分,多了一個超平面後,原本的超平面把新的超平面分割爲 f(n1, k1)f(n - 1,\ k - 1) 個部分,因此也會多處同樣數量的子空間出來

綜上所述,我們有:

{f(n, 1)=2f(1, k)=k+1f(n, k)=f(n, k1)+f(n1, k1)n2 \begin{cases} f(n,\ 1) = 2\\ f(1,\ k) = k + 1\\ f(n,\ k) = f(n,\ k - 1) + f(n - 1,\ k - 1) & n \geqslant 2 \end{cases}

3. 通項公式

通項公式的具體推導很複雜,具體可以見 這裏

這裏直接給出結論:

f(n, k)=i=0nCki f(n,\ k) = \sum_{i = 0}^{n}\large C_k^i

比如在三維空間裏,9 個平面最多可以把空間分爲:

C90+C91+C92+C93=130 \large C_9^0 + C_9^1 + C_9^2 + C_9^3 = 130

即 130 個部分。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章