圓桌喫飯問題

  【例2】圓桌喫飯問題 n個人圍着一張圓桌喫飯,每個人都不願意兩天與同一人爲鄰,問最多能坐多少天,並給出一種排列方案?     爲了清楚的理解問題的實質,我們以圖的模型來描述它:設G=(V,E)爲一完全圖,|V|=n。圖中的每個頂點代表一個人,連結頂點的邊表示人之間的相鄰關係。因此,每種圍繞圓桌的喫飯方案就成爲圖中的一條哈密爾頓迴路。設L=<v1,v2,…,vn>爲G中的一條哈密爾頓迴路,其中所含的邊的集合記爲e(L)。試求m與L1,L2,…,Lm,使得e(Li)∩e(Lj)=φ,並且m達到最大值。 爲了求得m的最大值,我們可以先估算一下m上界。完全圖G共有n(n-1)/2條邊,每條哈密爾頓迴路含有n條邊,可見m的上界是(n-1)/2。當n爲奇數時,m=(n-1)/2;當n爲偶數時,m=n/2-1。那麼這個上界是不是精確上界呢?如能構造出m條哈密爾頓迴路,也就證明了它是本題的答案。     現給出構造方法:作一圓,把圓周分成n-1等分,標上n-1個刻度,將頂點1至n-1依次排列在圓周上,頂點n放在圓心。先從圓心出發,向任意點連一條線,再從這點出發,沿圓周向左右兩個方向迂迴連線,直到連完圓周上所有的點,再連回圓心。這樣就構造出一條哈密爾頓迴路。保持所有的頂點位置不變,把所有連線圍繞圓心逆時針方向旋轉一個刻度,得到一條新的哈密爾頓迴路。這樣連續旋轉(n-1)div 2次,就得到了(n-1)div 2條迴路。     下面來證明此算法的正確性。這隻要證明所有的邊旋轉時都不重疊即可。 觀察下圖,可以把所有邊分爲兩大類,圓的半徑和絃,弦又可以按它的長度分爲(n-1)div 2類。顯而易見,不同類別的邊在旋轉時是不會重疊的。那麼相同類別的邊會不會重疊呢?其實每類邊至多隻有兩條,且又處在圓中相對的位置上,所以當所有的邊都旋轉半周以後,是不會重疊的。

    小結: 通過構造數學模型解題,常常能使題目變得易於解決,程序也易於實現。當然,數學方法對選手的數學功底要求也很高,必須有很高的創造性思維能力,有時還需要很好的空間想象能力。用數學方法解題,最重要是要做到不重不漏。數學方法不像其他一些方法如動態規劃,有一個現成的模式可套,實際上,每道具體的問題都有它具體的方法。競賽的時候時間緊張,數學方法不一定就是靈丹妙藥。想出來自然最好,想不出來,有時也不妨試試一些笨方法,做得了多少算多少。當然,當發現搜索的方法根本不可能在規定時間內給出答案的話,不妨從數學的角度出發,尋找規律。本來,數學規律與我們平常說的搜索一類的方法就是互相補充的。

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