讀古今文學網 > 愛情數學:如何用數學找到真愛? > 第八章 如何優化婚禮? >

第八章 如何優化婚禮?

現在我們知道了如何捕獲完美伴侶,希望我們有機會在幸福、成功的伴侶關係中安定下來。不過對於那些決定結婚的人來說,王子和公主在過上幸福的生活之前還要面對另一個難題。訂婚的興奮感平復之後,你將面對籌劃實際婚禮的可怕事實。

沒有一個年輕羞澀的浪漫女孩會想到自己有朝一日會變成怪獸新娘,沒有一個準新郎能想像自己會為桌布的顏色搭配而大發雷霆。然而一想到有這麼多互相矛盾的考慮因素——雙方父母、預算、婚紗、場地、伴娘——我們每個人都會有一點點抓狂(相信我,我有過這方面的慘痛經歷)。

不過在你盯著各種書法字體和用來裝飾椅子的透明紗質蝴蝶結失控之前,我想試著告訴你如何能用數學幫助你更順利地度過大喜日子。

數學化邀請

你要面對的首要事件便是令人畏懼的賓客名單,這總比想像中要難。能邀請你所見過的每個人是理想化的想法,然而你很快便因預算和場地大小的現實,在同樣有機會被邀請的人中做棘手的取捨了。

取決於你定的「攜同未婚伴侶出席」條件的嚴苛程度,你邀請的人往往會帶著伴侶或家人出席。比起孤獨、單身的人來說,他們更有可能被優先邀請。

即便做完了這些決定,也不是所有受邀請的客人都會出席。保證恰當的來賓人數是一件棘手的平衡工作。來人太少,你有可能拒絕了可能出席的重要人物;來人太多,你則會打破預算,空間也會非常擁擠。

大多數人的應對方式是分批發送請柬,按回復人數來調整邀請數量。然而在這個人們覺得連早餐吃什麼都值得在網上發一條狀態的年代,這種方式安全嗎?婚禮請柬幾乎一定會成為公開信息,提醒著第二批被邀請的朋友和家人,他們被排除在你的第一批名單之外。

另一個策略是少邀請,或者確定人數之後再訂場地。你也可以用大多數人在此類情形中運用的策略:全憑盲目的猜測。

但是在你和對方父母發生爭執之前,還有一種數學方式能夠為你提供合理的出發點。

這個方法從列出所有可能被邀請的人開始,以伴侶或家人為單位分組,並由你對其出席的期待程度來排序。這或許已然像是一個艱巨的任務,但如果連你都不知道自己對朋友的喜愛程度,那數學也幫不上忙了。

把這個名單做成一張列表。第一列是被邀請的一行人的名字,第二列是這一行人的人數。

下一步便要判斷每組人收到請柬後答應參加婚禮的概率了。思考一下人們住地的遠近。他們生活中還在忙什麼?他們是否私下很討厭你?你明白我的意思。

思考的時候用百分比計算,但用小數點的方式記下數字。比如說,你家鄉的親密朋友和她的男友出席的概率或許有95%,所以他們二人共同得分0.95。這個數字要被記錄在表格的第三列中。

用第二列數字(每組中的人數)乘以第三列中的相應得分,這會產生第四列數據。它包括了將答應出席的「期望」人數。

列表從上至下,由重要賓客過渡到泛泛之交,同時在第五列中輸入期待賓客人數的累加值。最簡單的方式便是,在這個累加值超過場地人數限制時停止邀請。一般而言,這樣做你便能邀請適當數量的賓客參加婚禮。

下面的表格展示了上述情形。如果場地能容納100名客人,你便應該把邀請截止在戈登一家人之後。你會寄出大於100封請柬,但一般來說只會有100人出席。可惜,戴維和山姆這次未能入選,但這或許是最好的安排。

心細的讀者會發現,得到適當人數這個想法中存在一個問題。因為我們在和概率打交道,所以最後來賓人數或超過場地容量,或少於場地容量。邀請的人少了,能給你機會在最後關頭邀請那些不甚重要的人或是被遺忘的客人,然而邀請的人太多則會為婚禮那天帶來災難。

這個想法的升級版本是計算最壞情況並調整停止邀請的標準,這樣一來,災難性超額邀請的可能性將會變得很小。

不過你又要如何計算災難情形發生的概率呢?

假設你需要邀請150位客人,預計100位會出席婚禮。實際上,接受邀請的有可能是0到150之間的任何一個數字,但是兩個極端情形出現的概率極低。

的確,計算所有賓客都出席的概率很容易,你只需把表格第三列中的全部概率相乘。比如,約翰、托尼、戈登與他們的家人、伴侶全部出席的概率是0.95×0.2×1.0=0.19,即19%。

理論上,你可以通過每種接受和拒絕出席的排列組合來計算任意人數的賓客出席婚禮的概率。[1]

如果你把所有可能性畫在一張圖上,它看上去類似上圖。靠近中間的來賓數量的出現概率大得多,而你可以期待大約會有100人出席。

現在要決定合理、安全的緩衝區則更加容易。如果你邀請了150人,你可以相當確信,在這個例子中實際出席的賓客數量將處於曲線頂峰——在85和110之間。

然後你可以重新製圖,觀察在邀請130人而非150人,或邀請120人而非130人等情形中,曲線以及上下限發生的變化。反覆嘗試,直到你找到自己可以接受的最好和最壞情況為止。這種方式可以運用在實際生活中。2013年,兩位頗具數學頭腦的婚禮籌辦者達米揚·武克切維奇和瓊·高就運用了完全一樣的技巧安排了他們的客人名單。他們把賓客分成四個類別,並為每個類別估算了一個出席概率。他們寄出了139份請柬,根據模型預測,106位賓客會出席—102~113的出席人數範圍處在95%的置信區間。

實際有105位賓客出席了婚禮,雖然只有97%的人來自原始邀請名單。儘管武克切維奇和高犯了兩個相互抵消的錯誤:高估了本地朋友的出席率,低估了最後時刻加入名單的朋友數量,他們依然正確預測了來賓數量。

就如我們在第一章中所見,這種誤差之間的互相抵消是估算問題中反覆出現的主題,也是給列表上的每一組數據設置概率的原因之一。毫無疑問,你會對一些賓客過度樂觀而又低估了另一些人。雖然你有可能不走運,但是總的來看,一切終將得到解決。沒有任何一種方式是完全沒有風險的。但它的確能夠在決定邀請名單之前為你提供調整名單的著手點。

數學方式安排酒席

不過不幸的是,有些婚禮上的錯誤人們無法輕易忘記。拋開可怕的伴郎發言或是不合身的婚紗不談,最難以原諒的錯誤莫過於安排兩個仇家坐在一桌。

座位安排是婚禮中至關重要的部分。賓客在這一天裡愉快與否很大程度上取決於你如何安排他們入座。安排得好,你能成功地把新郎新娘雙方的朋友聚到一起。安排得不好,你便很難抑制室內蔓延的怨氣或是室外不可避免的爭吵。

你需要盡可能地把成對出席的人或一家人安排到同一張桌子上,並且不惜一切代價分開仇家。

然而這便是優化數學法則能派上用場的時刻了。分配問題與當前討論的問題非常類似,它無處不在。每當你聽到某事物最好、最便宜或最有效率的時候,其中往往蘊含了優化算法。這些被應用在政府、對沖基金、沃爾瑪等各個角落的算法可以提供實際操作方案,從而確保婚禮上不會發生與座位相關的爭吵。

為了定下最佳座位安排計劃,首先定義「最佳」是很重要的。它可能意味著使重要來賓的快樂程度最大化,也可能意味著使整體快樂程度最大化。你私下討厭一個人,卻因禮貌原因不得不邀請他,很有可能你會把目標設定為使這些人的快樂程度最小化。

這些目標都可以達成(雖然我不建議最後一種),不過讓我們假設你的目標是使全體人的快樂程度最大化。

我們首先需要定義「快樂」,才能做好這件事。

簡單的方法是設置一張表格。通過為每兩個賓客坐在一起的快樂程度打分來進行兩兩比較。當二人熟識並願意坐在一起時將得到正分。分數越高,越應該安排在同一桌。

不認識的兩人將得到零分,而應該被隔開的兩個人則會得到負分。當你必須不惜一切代價讓某兩個人分桌坐時,他倆之間會得到很低的負分。

我們可以用一個讓人分外焦慮的只有兩桌酒席的婚禮來舉例測試這種方式。可惜他們都不是真人,是從一大袋名字中隨機選出來的。

這裡的答案很明顯:讓盧克、布魯斯和小斑點狗坐在一桌,讓愛煞風景的達斯、小丑和庫伊拉坐另一桌。

看看盧克那一列我們就知道,他若和布魯斯坐在一起能得到20分的「快樂點數」,若和小斑點狗坐在一起則能得到60分。總共是80分。

同樣,布魯斯將一共得到60個快樂點數,而小斑點狗則會和他的兩個新朋友在一起度過快樂時光並得到100分。

在暴躁席上,達斯得到45分,小丑50分,庫伊拉35分。至少他們為一同卑鄙而感到快樂。把所有賓客的得分相加,這個席位安排共得到370分。對於派對來說,這是個不錯的開始。

不過僅僅調換兩位客人就會引發災難。如果把小斑點狗和達斯調換位置(所以盧克、布魯斯和達斯一桌,小斑點狗、小丑和庫伊拉一桌),總分會跌到-120。

這個例子很簡單,最理想的坐法從一開始就很明顯,但是在更大型的婚禮中,這個計算技巧的確能為更大規模、更真實的席位安排提供方案。

基本方式是一樣的。從理論角度來看,你可以手動分析每一種席位安排的排列組合。那麼問題就解決了。

哦,還有一個問題。即便是在只有17個來賓分兩桌坐的小婚禮上,席位分配方式也已經有131 702種了。

一個能每秒鐘處理一種安排方案的電腦程序,要用兩周多的時間才能處理完所有可能的排列組合。手動計算需要幾十年時間,這可能會嚇跑你的伴侶。邀請的來賓越多,這個計算時間就越長。一個有十桌、共一百位客人的婚禮則有65萬億萬億萬億萬億萬億萬億萬億種不同的席位安排方式。祝你好運,盡量在婚禮之前算出結果。

數學優化的魔力在這裡才真正派上用場。有大量巧妙的數學方式能夠幫助你不必細看就能略過絕大多數糟糕的排列組合方式。[2]這意味著你不必為每一種席位安排計算總分,不必分析每種情形,快速、高效地從各種排列組合中找到最好的方式。

梅根·貝洛斯和J·D·彼得森運用這一策略為二人在2012年的婚禮制定了酒席座位安排。他們首先為107位賓客中的每個人評出一個快樂點數。

考慮到問題的規模,他們決定放棄筆紙,做了每個自重的婚禮籌劃者都會做的事:運用通用代數建模系統(GAMS)軟件和CPLELX求解程序幫助他們解題。[3]他們在36小時內做出了席位安排。

如果你對數值優化問題的電腦編程技術知識略知一二的話,你應該可以手動算出較複雜的一兩個座位圖,否則還是向你那友好的數學家鄰居尋求幫助吧。我發現他們往往樂此不疲。

很難保證結果永遠完美。數學答案的質量取決於你提供的數值。不過在你把席位安排交給對方父母之前,數學可以提供給你一個好的切入點。之後你們就可以進行真正的討論了。

[1] 儘管運用蒙特卡羅電腦模擬更加合理,蒙特卡羅法提供了允許不必考慮每一種排列組合的抽樣方式。

[2] 相關例子包括模擬退火算法和下山單純形法,二者都有助於高效尋找最優方案。

[3] CPLEX求解程序運用了線性規划算法,並利用快樂指數在求解空間中建立可行域。它假設最優解位於單純形的表層,因此略過了位於這個凸多胞形內部的一切數據。