用演算法找出人生最佳解:多久該動身前往雜貨店採買一趟?

用演算法找出人生最佳解:多久該動身前往雜貨店採買一趟?
Photo Credit: Corbis/達志影像

我們想讓你知道的是

堆疊(stack)的資料結構。正如其名稱所隱含的意義,「堆疊」將我們只在乎最上方資料的特性極大化,而不去管下方有多少項目。

文:阿里・艾默沙維(Ali Almossawi)

到雜貨店採買

伊恩・帕托斯是一位居住在倫敦東部的語言學退休教授。他在幾年前不小心摔倒導致背部患有隱疾,再加上他害怕鄰居養的那條狗,因此非常不喜歡出門。唉,可是為了溫飽肚子,他得時不時就外出採買食物。倫敦是這樣一座經常下雨的城市,伊恩有千萬個不想出門的理由,現在又增添了一項不喜歡被雨水濺濕。他究竟該怎麼做,才能在不至於餓肚子的前提下,縮減在一星期內外出採買的次數呢?

在英國雙人喜劇拍檔「兩個羅尼」(The Two Ronnies)所主演的長青幽默短劇中,有一經典橋段[1]是描繪一位顧客走進了一間五金行,接著向店老闆唸出手中購物清單的品項。然而,老闆並沒有等客人先把清單上的所有項目一次唸完,而是對方指名一樣物品,就隨即動身去拿取,結果把自己搞得團團轉。

請先記住這一橋段,我們稍後會再討論。先讓我們回過頭,想想情境裡的主人公伊恩可以如何決定自己要前往雜貨店採買的頻率次數。

目標:盡可能減少在一星期內前往雜貨店採買的次數。
方法一:發現某項食物吃完之後,即前往雜貨店購買。
方法二:將吃完的食物項目持續記錄成清單。當清單數量累積到一定程度時,或者是具有滋潤心靈或犒賞作用的重要物(例如,KIT KAT巧克力[2])吃光的時候,就動身前往雜貨店購買。

以下是我們已見過數次的兩種方法比較圖。

做決定不要靠運氣
Photo Credit: 商周出版

對於這一情境任務的解說,基本上就是「避免做重複的事務」。同理可證的情況還有像是:被交代要在十份不同文件上打孔的秘書,會選擇把所有文件先收攏整齊,然後一口氣打孔完畢,而不會一次只做一份。或是你在洗碗時,會先用洗碗精刷洗所有的髒碗盤,然後再以清水洗淨,而不會每刷洗一個碗盤就緊接著用水沖洗。或是你要將洋蔥切丁的時候,會先縱向切完再橫向切。又或者是在新式高樓建築裡的電梯,會裝設所謂的「目的層控制系統」,把要前往相同樓層的乘客聚集在同一部電梯裡。除此之外,你還可以從另一個更細微的觀察角度來看伊恩的故事情境,那就是誘發他動身前往雜貨店的主要因素為何?稍後我們會針對這一問題仔細探討。

在電腦運算中,資料集合的儲存方式有許多種。我們在不久前認識了最基本的一種,也就是一排未配對成功的襪子陣列(array)。接著在第二章場景裡,我們瞭解到陣列資料藉由分類排序,就能大幅提升搜尋能力。不妨回想衣架上按照尺碼排列的那一排衣服,這就是這些被稱作資料結構(data structures)或抽象資料型態(abstract data types)所發揮的基本功用。它將我們重視的一項或多項特性極大化,且通常會因此捨棄掉我們不那麼在乎的特性。從更廣泛的層面來說,某些特性就是無法相容並存。例如,安全性和易用性(usability)──某個應用軟體會在你每次點擊按鈕時,都要求你輸入密碼,這的確具有較高的安全性,但易用性也相對降低了。

接下來要介紹一個與本章情境切合,稱作堆疊(stack)的資料結構。正如其名稱所隱含的意義,「堆疊」將我們只在乎最上方資料的特性極大化,而不去管下方有多少項目。所以說,當你走進咖啡店看見一疊報紙時,你的視線大概只會掃過放在最上面的那一份,因為不須逐一翻找,你就知道擺在最上面的是當天的報紙,而你只是想看一眼今日頭版標題是什麼。在堆疊的資料結構中也是如此,我們最想檢視(peek)的是頂端的項目[3]。

就伊恩的情況而言,他的認知堆疊是由吃光的食物品項所組成。每當他把Kit Kat巧克力推入(push)到堆疊的頂端時,他就會一心掛記著要前往商店把堆疊的品項取出(pop),亦即反覆移除放在最上面的項目,直到堆疊空無一物為止。換言之,Kit Kat巧克力是清空堆疊的主要誘因。在Kit Kat巧克力被放進堆疊之前,他可以安然將其他吃光的食物品項暫時埋藏在堆疊裡,毫無掛念地繼續生活。

反觀「兩個羅尼」的短劇情境也存在相同的道理,如果五金行老闆可以針對各排貨架建立出認知堆疊,他就不必反覆在梯子間爬上爬下,搞得自己折騰不已。客人會一口氣唸完整份清單的品項,而老闆只須依循堆疊行動,即在繞經各排貨架的過程中,依次在每一排貨架的堆疊結構裡取出客人需要的物品。

艾倫・圖靈(Alan Turing)在一九四六年完成了一篇研究報告,以「埋藏」(burying)二字來介紹堆疊概念。誠如安德魯・霍奇斯(Andrew Hodges)撰寫的《圖靈傳》所述,這一概念對數學家馮紐曼來說是前所未聞。以下是該研究報告的簡短節錄:

要如何埋藏及探勘返回位址(note)?達成的方法當然有許多種。其中一種就是將這串返回位址與最後放入的資料,一起記錄在一個或多個標準大小(1024)的延遲線裡。最後放入的資料位址將被儲存在固定的暫存記憶體中,且每當副程式開始執行或完成執行後,這一索引指標就會跟著變動。

閱讀這些文獻,對於現今我們認為是直覺般的概念是如何從過去演進傳承至今,總會令人油然升起謙卑之情。我們也從中瞭解到,那些概念唯有歷經人們極力闡述說明後,才能漸漸奠定不辯自明的地位。關於描述此一感想的另類觀點,不妨參考以詹姆斯・弗林(Jim Flynn)命名的「弗林效應」(Flynn effect),其認為人類變得愈來愈聰明,部分原因是人們的理解智能持續成熟發展且愈來愈複雜,是以新一代人類的大腦先天具備了比前人更優越的直覺能力。

無論如何,閱讀古文本總是讓人樂此不疲,因為我們能由此探看從古至今一路走來的進程。猶記我曾讀過神學家伊拉斯謨(Desiderius Erasmus)於一五三〇年出版的《兒童良好教養手冊》(Handbook on Good Manners for Children),書裡教導人們的觀念,諸如「千萬不要讓鼻孔流淌著兩行鼻涕,那會讓你看起來跟邋遢鬼沒兩樣。蘇格拉底就是因為這種壞習慣才惹人詬病。」就生活在二十一世紀的讀者看來,這一教誨理所當然到讓人啼笑皆非,但在那時的環境背景裡卻是新穎的觀念。


猜你喜歡


AWS台灣雲端高峰會8月10日登場:實體活動盛大回歸,技術開發到產業趨勢兩日全掌握

AWS台灣雲端高峰會8月10日登場:實體活動盛大回歸,技術開發到產業趨勢兩日全掌握
photo credit:AWS

我們想讓你知道的是

2022AWS台灣雲端高峰會將於8月10日在台北南港展覽二館盛大登場,聚焦雲端9大主題、超過45場產業與技術專題演講,為開發者與經理人提供深度交流機會,任何與雲端有所接觸的工作者都不容錯過。

AWS公開年度雲端技術盛會──2022 AWS台灣雲端高峰會(AWS Summit Taiwan)即將在8月10日至8月11日於台北南港展覽館二館舉行!歷經新冠疫情紛擾,睽違兩年AWS台灣雲端高峰會即將重回實體舉行,讓每位參與者走入規劃豐富的實體專區與各路開發者深度共學。立即報名點此

今年主題「佈雲今日 ‧ 決勝未來」明顯表達數位轉型已是現在進行式。隨著新冠疫情及國際局勢改變的雙重影響,全球迎來的新常態經濟模式使雲端技術不再只是企業應變關鍵,更是走向安全、永續,以及鏈結未來的必經之途。因此,2022AWS台灣雲端高峰會中將展示當代最前瞻的雲端趨勢,帶領參與者運用現代化雲端洞悉市場數據,探索商業與技術的無限可能。

聚焦九大雲端主題:基礎設施、技術開發、數位轉型到產業實務面面俱到

9大雲端主題02
photo credit:AWS

今年AWS台灣雲端高峰會不只集結領域中傑出的AWS技術專家、產業代表以及社群領袖,舉辦超過45場的產業及技術專題演講,分享最佳實踐案例、Demo 實機展演和客戶案例分析,還規劃包含證照認證、實作演練、CISO實戰工作坊等與AWS相關課程及工作坊。除此之外,會場也設置「AWS Game day & Developer Lounge」與「新創焦點」兩大專區,讓會眾能在精心規劃的空間內與其他開發者、新創公司透過高度互動的競賽與短講,深度交流彼此技術與經驗。

立即報名:2022 AWS台灣雲端高峰會

2022年,AWS台灣雲端高峰會致力打造深度交流的產業平台,聚焦雲端技術的九大面向,搭配各具特色的活動設計,從基礎設施、技術開發、數位轉型到產業實務面面俱到。不僅為 C-level 與資深技術人員、企業經營與 IT 決策與管理者精心規劃議題內容,也在特別企劃內容中,為 IT Pro、解決方案架構師、開發人員、工程師與維運管理人員提供最佳實務經驗,讓無論AWS初學使用者還是資深產業經理人,都能在高峰會中吸收新知、了解趨勢,提升自我能力與視野。

無分初學大師,只要接觸雲端,你就應該參加AWS台灣雲端高峰會

符合以下關鍵字之一,你就應該參與AWS台灣雲端高峰會:

  • 學無止盡-開發者、工程師、架構師
  • 商業創新開發-新創團隊技術團隊成員
  • 最佳化生產力- IT專業人員、技術支援經理
  • 掌握趨勢-創辦人、經營決策者
  • 自我精進-學生、教職員、研究員
  • 洞見趨勢-任何關注雲端趨勢者

AWS台灣雲端高峰會首日聚焦雲端服務、開發技術及新創,以技術相關內容為主,較適合具備初級主題知識之開發人員、工程師與 IT 專業人員;次日則圍繞產業解決方案提供、數位轉型等,以應用相關內容為主,較適合欲了解雲端技術如何為企業經營加分之經營決策者、解決方案架構師以及系統管理員。

立即報名:2022 AWS台灣雲端高峰會

如此縝密的規劃,無論是初上雲端的新手,還是乘雲縱橫產業多年的技術大師,甚至是非技術相關人士,都能在高峰會中依照自身工作職掌和興趣,安排個人化的專屬議程,從不同主題和技術能力演講中,滿足個人技術或視野的成長。

最重要的是,2022AWS雲端高峰會為免費參加,絕對是任何需要開拓雲端新經濟、自我加值的工作者不可錯過的年度盛會。

玩轉雲端核心技術!AWS DeepRacer人工智慧賽車同步登場

AWSDR
photo credit:AWS

每年與台灣雲端高峰會共同舉行的「AWS DeepRacer智慧自駕車競賽」當然也不會缺席。AWS DeepRacer是 Amazon 產品背後所運用之人工智慧和機器學習等核心技術的具體化身,不僅是全球首個以自駕車競賽為主題賽車聯盟,也是機器學習(ML)與強化學習(RL)最友善、有趣、刺激的學習課程。

競賽設計不只替雲端技術增添不少趣味,激起各方開發者爭奪獎品、獲取冠軍榮耀的鬥志,搭配AWS所提供的免費入門課程及學習資源,更創造出技術學習與推廣的友善環境,也是AWS送給所有工程師最棒的寓教於樂場域。

精彩豐富的專題講座與寓教於樂的刺激競賽還不夠嗎?活動現場還有抽獎活動、深度參會集點以及問卷好禮,提早報到者再加碼早鳥禮!

立即報名豐富有趣的 2022 AWS 台灣雲端高峰會!


猜你喜歡