圖片來源:*https://www.dcard.tw/f/funny/p/225385728
大家小時候應該有看過這個時代的眼淚 ——— 電話簿,厚厚的一本跟字典一樣,裡面有著密密碼碼的小字,時光倒回到20年前,假如我今天想要找到彰化縣鹿港鎮的海霸王餐廳的電話號碼,就要先從彰化縣的行政區開始翻起,然後找到餐廳類別後再依照筆劃數找到海霸王,順序就是彰化縣>鹿港鎮>餐飲業>第一個字是筆劃10劃的>海… 海之味、海世界、海霸王!經過千辛萬苦,總算找到海霸王餐廳的電話。
時間回到現代,如果想要找到彰化鹿港的海霸王餐廳你會怎麼做?當然是二話不說打開網頁用關鍵字「彰化、鹿港、海霸王餐廳」搜尋對吧?不到10秒就找到餐廳的電話了。以上兩個例子跟演算法有甚麼關係?可以發現這兩種方式都可以達到找到電話號碼的最終目的,但是花費的步驟和時間可是天差地遠,中間這個解決問題的步驟和方式就是演算法的精隨。
經過一連串的步驟 ,可以解決某個問題。
以做一道黃金炒飯來說,準備好食材,依照食譜上的步驟一步一步烹調,最後做出成品,而程式也是如此,我們可以輸入特定的值,經過程式的有限運算步驟之後輸出預期的結果,演算法可以用pseudo code(虛擬碼)或程式語言表示。
下圖就是pseudo code,概略地描述程式邏輯但不包括實作
圖片來源:assignmentaccess
其實演算法在現實生活中無所不在,最常見的就是臉書會自動推薦一些好友給你,然後這個人可能是你的國小同學之類的,透過你們之間的共同好友關係,進而推論出這個人有可能是你認識的人,抑或著像是youtube會根據用戶的觀看習慣,推薦相關的影片,像我最近很喜歡看3c產品開箱,每次點進去youtube首頁就會優先推薦我3c相關的影片,或是在Sportify聽一些老歌的時候,歌單下方也會出現一個列表「你可能也有興趣的歌曲」,接者會推薦一些年代相近的懷舊歌曲給我,以前都會驚嘆這是甚麼神奇的魔法,現在就知道這都是演算法的推算結果了!