當你在一個大城市租房時,怎樣才能使自己租到最好房子的概率達到最大?認知科學家說,假如你給自己一個月的尋找時間,你應該把其中37%的時間(約11天)用于探索你的選項。過了這個時間點之後,你就要租下你看到的第一個勝過之前看過的房子的那套房子。找房子屬于數學上的“最優停止”問題,37%法則是解決這類問題的算法。
布萊恩·克裡斯蒂安是《華爾街日報》的記者,湯姆·格裡菲斯是加州大學伯克利分校的心理學和認知科學教授,二人合著了《賴以生存的算法》一書。書中說:“‘算法’一詞總讓人覺得高深莫測,但一個算法其實就是用于解決問題的有限的步驟序列。”
許多人對電腦都有一個誤解,以為電腦會為困難的問題找出簡單、正确的答案。其實計算科學關心的是困難問題的近似答案。我們讓計算機以閃電般的速度做許多事情,但它們的處理能力是有限的,于是總要權衡。什麼時候快比準确更好?在什麼時候要停止搜尋完美的解決方法,轉而給出一個手頭就有的辦法?這跟人在生活中遇到的問題類似。
找停車位跟找房子一樣,屬于“最優停止”問題。人們都想找一個離自己的目的地比較近的停車位,但在不斷靠近目的地時,每當經過一個空的車位,你都要做一個決定:就停在這裡,還是看看自己的運氣是否足夠好,前面還有車位?假如你走在一條無限長的路上,停車位是均勻分布的,你的最優選擇是駛過一定距離内的所有空車位,然後停在之後的第一個空車位上。至于多遠的距離,這取決于車位的被占用比率。如果99%的車位都被占用了,你應該從距離目的地還有大約70個車位的地方(約0.4公裡)開始,再看到空車位就該停車了。與之類似,如果一個人打算從18歲開始找對象,并在40歲以前結婚,他應該選擇在26歲時遇到的心儀對象。
另一個對日常生活有幫助的算法叫摩爾算法。冰箱裡的每一樣食物都有各自的保質期,先吃馬上要過保質期的食物能夠最大限度地減少浪費。但有時候快過期的并不是你最想吃的,為了把壞掉的食物量降到最低,可以使用摩爾算法。根據摩爾算法,我們按照食物的保質期食用,最先過期的要最先食用,可一旦看上去無法及時吃掉下一樣食物,我們就該暫停,檢視一下計劃中想吃的食物,然後扔掉最大的那一種,即需要最多時間才能吃掉的那一種。比如扔掉那個好幾次才能吃完的西瓜,這樣才能早點食用後面的食物。然後重複這一模式,按照保質期的長短擺放食物,趕不上時就扔掉其中最大的。
(春水摘自《三聯生活周刊》2017年第3期,小黑孩圖)