如何利用37%法則 做出最好的選擇

雖然演算法潛力無窮,能夠協助我們處理日常生活的許多面向,但絕不是所有的問題都能用演算法找出最佳解答。

氣泡排序法

尼克.宏比(Nick Hornby)在1990年代寫下《失戀排行榜》(High Fidelity)這部經典小說,主角佛萊明(Rob Fleming)熱愛音樂,開了一家二手唱片行「冠軍黑膠片」。佛萊明會定期把自己的大量唱片依照不同的系統重新排列:可能是按字母順序、時間順序、甚至是按自己的生命自傳來排列(依自己買這些唱片的時間,講出自己的人生故事)。

像這樣重新整理的舉動,除了對音樂愛好者來說有種情緒宣洩的效果,也可以用來迅速查詢及記資料,展現其中不同的特色。就像是整理電子郵件的時候,只要點一下就能選擇排列方式是依日期、寄件人、或是郵件主旨,這正是電子郵件的客戶端執行了一套有效率的演算法來做分類排序。

而在eBay上,你可以選擇要用「精準度」、「價錢由低到高」或「即將結束」來排序,這也是因為eBay用了有效率的分類排序演算法。

至於谷歌,在它判斷了各個網頁與你搜尋的關鍵字匹配程度後,也需要迅速加以排序,用正確的順序顯示。人們夢寐以求的,就是能實現目標的高效演算法。

要排序一定數量的項目時,一種做法是盡可能窮盡所有排法,再一一檢查是否正確。假設我們就只蒐集了五張唱片,齊柏林飛船(Led Zeppelin)、皇后合唱團(Queen)、酷玩樂團(Coldplay)、綠洲合唱團(Oasis)和阿巴合唱團(Abba)各一張。光是五張專輯,就已經有一百二十種不同排法。六張會有七百二十種排法,到了十張,就有超過三百萬種排法。隨著唱片數量增加,排法的數量會急速成長,不管多痴狂的樂迷都不可能窮盡所有的排法:這單純就是件不可行的事。

但幸好,你應該已經從自己過去的經驗發現,整理自己收藏的唱片、書籍或DVD其實是個P問題,也就是確實有某種可行的解決方案。在此,最簡單的演算法稱為「氣泡排序法」(bubble sort),原理如下。

讓我們先把那五張唱片依樂團原文名稱的縮寫L、Q、C、O和A來排序。氣泡排序法會從左到右檢查過去,只要相鄰的兩張順序不對,就互換位置。這個過程不斷重複,直到任何相鄰的兩張順序都正確,也就代表整個列表都排序完成。

第一次排序的時候,L在Q之前沒錯,所以位置不變,但比到Q和C的時候,就會發現順序有誤,於是兩者互換位置。氣泡排序法就這樣繼續,於是Q再與O互換、接著與A互換,到此時完成了第一次排序,結果是L、C、O、A、Q;Q已經排到了列表最後面的這個正確位置。

第二次排序,L與C互換、O與A互換,於是O也來到了正確的位置:C、L、A、O、Q。接著只要再兩次排序,A就會到達列表最前面,整個列表也成功依字母排序。

我們把算式簡化一點好了。如果要排序五張唱片,就得將未經分類的唱片做四次排序,每次做四次比較。如果有十張唱片,就得排序九次,每次做九次比較。這意味著,我們每次排序過程中的工作量,幾乎就是需要排序的項目數量平方。

倘若你收藏了一堆唱片,這件事做起來當然還是相當費功夫,三十張唱片就得做幾百次的比較;然而,相較於暴力破解法需要列出天文數字的所有可能排法,採用氣泡排序法仍然省力不少。

雖然這已經是一大進步,但電腦科學家一般認為氣泡排序法的效率還是太低。在實際應用上,不論像是臉書的動態消息、或是Instagram的最新動態,隨時都有幾十億則發文必須依據這些科技龍頭的最新優先順序來排序顯示,於是簡陋的氣泡排序法也就被更新、更有效率的類似方法取代。例如「合併排序法」(merge sort),做法就是先將所有發文分成幾小批,經過迅速分類排序,再組合成正確的順序。

2008年美國總統大選期間,馬侃(John McCain)成為候選人之後不久,受邀到谷歌發表演講,討論他的政策。谷歌當時的執行長施密特(Eric Schmidt)和馬侃開玩笑,說整個競選過程就像是谷歌的面試,接著就問了一個谷歌確實會問的面試問題:「如果只有2 MB的RAM,你要怎麼將一百萬個32位元整數進行排序?」馬侃看起來一頭霧水,而施密特玩笑開夠了,立刻問了下一個真正的問題。

六個月後,輪到歐巴馬(Barack Obama)來到谷歌接受考驗,施密特也拋出了同一個問題。歐巴馬看向觀眾,擦了一下眼睛,說道:「這個嘛,嗯……」施密特以為歐巴馬一時語塞,本來想接過話題,但歐巴馬直視著施密特的眼睛,繼續說著:「……不、不、不,我只是在想,絕不能用氣泡排序法吧」,全場的電腦科學家對此報以熱烈掌聲及歡呼。

歐巴馬的回應,反映出他出乎意料的博學多聞:他說了一個內行人才懂的笑話,笑點就在於這種排序演算法的效率有多麼低落。他的整個競選過程不斷顯露這種舉重若輕、信手捻來的魅力(唯有經過精心充分的準備才能做到),最後一路送他進白宮。

最佳停止時機

上面提到的某些最佳化演算法,都是以大規模施行的方式來取得商業利益,似乎會讓人覺得,只有科技龍頭才有辦法使用那些背後的數學道理。但也有一些更直接簡單的演算法(雖然隱藏的數學原理很複雜),可以為日常生活帶來一些微小但重要的改善。其中一類稱為「最佳停止策略」(optimal stopping strategy),能讓人知道在決策過程中何時該停止選擇,開始實際行動。

比方來說,假設你和另一半在陌生的地方逛街,正在想該去哪裡吃晚餐。雖然你們都很餓,但你不想隨便遇到一間餐廳就進去,寧願再走走,挑間好的來吃。你自認眼光精準,一看就能知道這家餐廳的品質如何,還可以跟其他餐廳比較。你更判斷出在另一半不耐煩之前,大概有時間逛到最多十間餐廳。而且,因為你不想留下優柔寡斷的印象,所以決定只要走過,絕不回頭。

遇到這樣的問題,最好的策略是先瞭解一下大致的狀況,也就是前幾間餐廳都只是觀察,卻不走進去。其實你也可以隨便遇到一間餐廳就走進去,但既然你完全不知道這個環境的情況,能夠挑到最佳餐廳的機率就只有1/10。所以,最佳的做法是先看過幾間,接著在剩下的選擇當中,只要看到「比先前幾間都好」的選擇,就決定是它了。

說明這樣的餐廳挑選策略。前三間餐廳是做為品質判斷的基準,單純觀察品質如何,而不會進去用餐。當你逛到了第七間餐廳,發現它比過去幾個選擇都優秀,那麼就可以在這裡停下,進去用餐。

然而,選前三間做為基準,這個數字正確嗎?在這種最佳停止時機的問題裡,重點在於到底該先觀察幾間餐廳(而不進去用餐),才能瞭解這個環境大致的情況?如果看得不夠多,就無法充分瞭解環境,但如果觀察(並排除)了太多間,可能剩下來的選擇就十分有限。

這項問題背後的數學原理十分複雜,總而言之就是:你應該觀察前37%的餐廳(在只有十間的時候,捨去算成三間),接著只要遇到比先前都優秀的餐廳,就以此為最後決定。

說得更精確一點,就是先拒絕所有可得選項個數的1/e,這裡的e是歐拉數(Euler’s number)的簡寫,因為歐拉數大約是2.718,所以1/e大約是0.368,或是寫成大約37%。

如果要從一百間餐廳當中挑選,到底該先觀察幾間餐廳,能夠讓選到最佳餐廳的可能性達到最高。我們可以料想到,如果太早做出決定,等於是盲目選擇,所以能選到最佳餐廳的機率很低;同理,如果太晚做出決定,很有可能已經錯過最佳的選擇。倘若你觀察的是前三十七個選項,就能把挑到最佳餐廳的可能性提升到最高。

只不過,如果最佳餐廳就在前37%裡怎麼辦?那不就錯過了嗎?在此要提醒各位,這種「37%」的規則本來就不是成功的保證,它只是一個機率法則,告訴你有37%的時候能夠挑出最好的餐廳。37%已經是這種情況下的最高機率,高於有十間餐廳可選而隨便選的10%,更遠遠高於有一百間餐廳可選而隨便選的1%。在選項個數愈多的時候,相對成功率也會愈高。

最佳停止時機的規則並不只適用於挑餐廳。事實上,數學家一開始是把這套規則用在「雇用問題」上。假如你得依序面試一定數量的應徵者,並在面試每個人後立刻告知是否錄用,那就該採用37%的規則。先面試37%的應徵候選人(但都不錄用),以此做為基準。而在接下來,只要出現比先前都優秀的應徵者,就直接錄用。

我家附近的超市有十一個結帳台,我也會先走過前37%(四個)結帳台,觀察現在的隊伍有多長,接著只要看到更短的隊伍,就排那一排。

如果我和朋友出門夜歸,打算趕上最後一班列車,但乘客似乎不少,而我們又希望能找到空位最多的車廂,好讓我們坐在一起;這時也可以運用37%的規則。要是遇到的列車總共有八節車廂,我們就會先走過前三節,觀察空位的狀況,接著在空位比先前都多的車廂坐下來。

活用37%法則

以上的場景雖然已經盡量舉實際的例子,但還是有一部分略為牽強,再修正一下或許會更加貼近現實。例如在觀察餐廳的時候,如果發現有一半都沒有空桌了,你該怎麼辦?在這種時候,很顯然該減少拒絕的餐廳。所以,不要再堅持觀察完前37%,而是觀察了前25%之後,一出現比先前都優秀的選項時,就該做出決定。

像是在搭上末班列車的時候,如果有時間可以回頭走進剛才經過的車廂,但車廂有50%的機率坐滿了乘客,那又該怎麼選擇?可以回頭,代表選項變多、也有餘裕可以挑久一點,所以此時就可以先觀察並拒絕前61%的車廂,接著選擇下一節最空的車廂。當然,你得在列車跑掉之前上車才行。

此外,不管是想知道賣房的最佳時機,或是該離電影院多遠才最有機會找到不必走太久的車位,這些問題都有相關的最佳停止時機演算法。只不過,隨著條件愈來愈貼近現實,相關的數學也會愈來愈複雜,無法再用一個簡單的百分比來表示。

甚至,還有一套最佳停止時機演算法,算的是你應該先跟多少人約會,再決定你的最佳終生伴侶。首先,你得判斷在自己定下來之前,大概可以交幾個男女朋友。假設你大概一年交一個,那麼從十八歲到三十五歲之間,就有十七人可供選擇。這時,根據最佳停止時機法則,你應該先遊戲人間六年到七年(大約是十七年的37%),觀察自己可以遇上怎樣的對象。接著,只要出現比過去都優秀的選擇,你就該認定這是今生的伴侶。

對於像這樣由一套預定規則來支配自己的愛情生活,很多人都會感到懷疑。如果在那前37%裡,真的有很合得來的人怎麼辦?難道真的要為了執行這套求愛演算法,就狠心放下對方嗎?如果你自己遵守了一切規則,但認定是最佳選項的對方卻不認為你是最佳選項,又該怎麼辦?如果走到一半,發現自己喜歡的條件不一樣了,又要怎麼辦?

還好,講到內心、或是其他更明顯的數學最佳化問題時,我們並不一定需要找到絕無僅有的真命天子/天女、最好的解決方案。世界上可能有很多人都會跟我們處得不錯,能讓我們有幸福的一生。最佳停止時機的策略,並不會提供所有人生問題的答案。

雖然演算法潛力無窮,能夠協助我們處理日常生活的許多面向,但絕不是所有的問題都能用演算法找出最佳解答。

我們雖然可以利用演算法來簡化、加速單調乏味的任務,但風險也常常伴隨而來。因為演算法包含輸入、規則和輸出這三個面向,也就代表有三個可能出錯的地方。就算使用者確信所用的規則完全符合自身需求,只要輸入不小心,或是輸出不合規範,就有可能造成災難。

達到天價的二手書

亞馬遜在2011年就曾引發演算法爭議,那次是因為商家採用自動定價策略。該年4月8日,柏克萊大學的計算生物學家艾森(Michael Eisen)請研究人員替實驗室買一本已經絕版的演化生物學經典《蒼蠅的構造》(The Making of a Fly)。這位研究人員上了亞馬遜,很高興看到架上還有兩本。但他定睛一看,卻發現一本的賣家是波夫奈斯(profnath),售價1,730,045.91美元,另一本的賣家是博迪書城(bordeebook),要價更是二百萬美元。

不管多需要這本書,這種價錢都實在叫人買不下手,所以他決定繼續觀察,看看價格會不會下跌。隔天他再查看價格,卻發現書價又向上飆了:現在兩位賣家的售價已經都來到將近二百八十萬美元。再一天,又飆到超過三百五十萬美元。

艾森很快就想通了為什麼會有這種瘋狂的情形。每天,波夫奈斯都會設定自己的售價是博迪書城售價的0.9983倍,但在同一天稍晚,博迪書城也會掃描抓出波夫奈斯的售價,再把自己的售價定為大約是1.27倍。於是,博迪書城的售價就這樣一天又一天水漲船高、指數成長,而波夫奈斯的售價也跟著向上。

如果是真人賣家在控制售價,很快就會發現開價超出合理價格。但不幸的是,調整這種動態定價的並不是人,而是重新定價演算法。有的亞馬遜賣家會使用這類演算法,不過當初顯然沒人想到該給這些演算法規定某個上限,又或者是這兩位賣家沒有想到要去設定。

雖然講了這麼多,至少波夫奈斯那種比別人定價稍低的做法確實有道理,能夠確保自己的售價最便宜,顧客搜尋時就會出現在列表最上方,而且這樣做也不算太過犧牲利潤。但這樣說來,博迪書城到底為什麼要選擇那樣的定價演算法呢?這樣一來,他們的定價不就永遠高於行情、乏人問津、還得占用倉庫空間?除非博迪書城根本沒有這本書,否則怎樣都說不通吧?

艾森懷疑,博迪書城在這裡玩的手法,是仗著自己可靠而備受信賴(使用者評分高),以此營利。如果真有人決定向他們購買這本書,他們就會立刻向波夫奈斯買下真正的那本,再寄給買家。由於他們已先把價錢提高,不僅足以支付買書的郵資,還能夠從中獲利。

在艾森首次發現書價不像話之後過了十天,書價已經逐步攀升到了兩千三百萬美元。但實在可惜,在4月19日,波夫奈斯的某位員工發現他們竟把一本二十年前的教科書訂出這種荒唐的天價,就把價錢狠狠砍回106.23美元,這對艾森來說實在掃興。隔天,博迪書城的書價也變成134.97美元,仍然大約是波夫奈斯的1.27倍,整個循環即將重新開始。

書價在2011年8月再次達到頂峰,不過這次只來到五十萬美元,而且在接下來的三個月裡一直沒什麼動靜。顯然有人學到教訓,訂出了書價的上限,只不過他訂的上限還是不太實際。在我寫這本書的時候,亞馬遜架上的《蒼蠅的構造》大約有四十本,起價大約七美元,這就合理多了。

雖然《蒼蠅的構造》確實要價頗高,但還不是亞馬遜網站史上列出或成交最高價的商品。2010年1月,工程師克魯格(Brian Klug)發現亞馬遜上有一張名為《細胞》(Cells)的光碟片,還只與Windows 98相容,卻要價將近三十億美元(另外再加上3.99美元的郵資和包裝費用)。

可以想見,這個天價又是另一次演算法價格螺旋的結果。另一位賣家也有同樣的光碟片,價錢已經來到他所設定的上限,所以相對較低,只有二十五萬美元。 克魯格輸入了信用卡詳細資訊,要買那張三十億美元的光碟。幾天後,亞馬遜寄來電子郵件向他道歉,表示無法履行訂單。克魯格雖然失望,但可能也同樣鬆了一口氣。他回信問亞馬遜,因為他是在亞馬遜網站使用亞馬遜信用卡下訂,理論上可以有1%的回饋金,可不可以還是把回饋金給他呢?

攸關貧富與生死的數學

(本文摘自葉茲著《攸關貧富與生死的數學》,天下文化提供)


延伸閱讀

鹼性離子水 越喝越健康?

「零檢出」只是個美麗的神話

坐在辦公室比電視機前健康?久坐的真相