1. 程式人生 > >關於二維情況下另類切蛋糕問題的思路

關於二維情況下另類切蛋糕問題的思路

這個情況下,我們不再考慮切幾刀,而是圓周上有n個點,每一刀的刀痕都必須通過圓周上這n個點中的兩個點的情況。求最大分割數。
這個問題有一個非常有趣又詭異的答案
當只有1個點的時候,最多隻能有1個區域
當有2個點的時候,最多可以分成2個區域
當有3個點的時候,最多可以分成4個區域
當有4個點的時候,最多可以分成8個區域
當有5個點的時候,最多可以分成16個區域
似乎是非常簡單的規律,然而:
當有6個點的時候,最多隻能分成31個區域了,差一個就滿足2n1的規律了,但已經不太對了
當有7個點的時候,最多隻能分成57個區域了,差的有點多
當有8個點的時候,最多是

99個區域
當有9個點的時候,最多是163個區域了
然而,後面又出現一個巧合,
當有10個點的時候,最多是256個區域了,雖然不是29=512,但是2的冪再次出現

解題主要的思路是根據尤拉示性數公式(Euler’s Characteristic Formula):V-E+F=2
解釋一下這個公式,這是指在聯通的平面圖(Planar graph)上,頂點的個數-邊的調數+平面區域的個數=2
舉個例子:
下圖中有5個頂點,8條邊,5個平面區域(其中第五個區域是環繞1234區域的無限大平面)
這裡寫圖片描述
尤拉公式的證明這裡不給出

因為切蛋糕問題也可以變成一個平面圖問題,我們為了得到蛋糕可以分成的塊數,即F,只剩下了兩步:

  1. 求出平面圖中頂點的個數
    我們需要判斷是否有多條切痕交於一個點的情況,但如果多條切痕交於圓內同一點,其實會導致能夠產生的平面區域數量減少,舉一個簡單的例子如下:第一張圖中心區域由於三切痕交於圓內一點,相比第二張圖少了一個區域。
    這裡寫圖片描述
    這裡寫圖片描述
    那麼,我們就從任意三條切痕都不交於圓內同一點的情況進行討論
    觀察下面這張圖,我們發現,任意一個交點(橙色箭頭)對應圓周上的四個點(紅色剪頭),換而言之,對於邊上有n個點的情況而言,圖中將會有Cn4個交點,此外還有n個交點是本身存在的,所以圖中的總頂點數表示為:
    V=Cn4+n
    這裡寫圖片描述
  2. 求出平面圖中邊的個數
    如果僅僅將切痕和圓周看作邊,原本就存在的頂點看作圖的頂點的話,圖中的邊其實是相交了的,這就不能算是平面圖了。所以我們將這些刀痕的交點也算作是圖的頂點。我們就得到了一張平面圖。
    如何計算邊的條數呢?
    在圖論中,有一個度(degree)的概念,對於無向圖來說(這篇博文中的內容都是無向圖),一個頂點的度數定義為與該頂點相連的邊的條數。由於任意三條刀痕都不交於圓內的同一點,所以圓內的所有交點由且僅由兩條切痕構成,所以這些點的度數是4,而圓周上的n個點中,由於每個點都會與其他n-1個點相連,而與最近的兩個點會連線兩條邊(一條是切痕,另一條是圓周),所以每個點的度數都是n+1
    所以圖中的總度數表示為
    Degree=4Cn4+n(n+1)

度數跟邊的關係非常簡單,由於在無向圖中,每條邊都會給兩個頂點各貢獻一個度,所以無向圖中邊數就等於總度數的一半

E=2Cn4+n(n+1)2=2Cn4+Cn+12=2Cn4+Cn2+Cn1

根據尤拉示性數公式,

F=EV+2=(2Cn4+Cn2+Cn1)(Cn4+n)+2=Cn4+Cn2+2
當然,由於這個F是考慮了圓外的那片無限大空間的,所以真實的結果還要減一,答案是:
Cn4+Cn2+Cn0

這個時候,我們結合帕斯卡三角(或者說楊輝三角)來看待最前面的那個詭異的現象是如何產生的。
因為Cnm=0,m>n
所以最好的方法是將三角寫成如下矩陣,且行列都從0開始計數
除去第0行,每個數都由其上方與左上方的數相加而得