2014年11月23日 星期日

改變世界的九大演算法 (Algorithms That Changed the Future)

https://4rdp.blogspot.com/2014/11/algorithms-that-changed-future.html

更多有關 改變世界的九大演算法 的事情改變世界的九大演算法 ─ 讓今日電腦無所不能的最強概念 (Algorithms That Changed the Future),ISBN 978-986-6031-55-7,經濟新潮社出版,約翰‧麥考米克 (John MacCormick) 著,陳正芬譯。

在三十年程式寫作的歷程,第一個學習的演算法是排序問題,我想這是所有程式設計員必經之路,從這裡我理解了,想要電腦處理事情,必須先想出處理事情的方法或是流程,這樣才有辦法寫程式,程式寫久了、寫多了、經驗豐富了,就沒有再畫流程圖,邊打程式一邊思考,只有遇到難解的問題,才會再次利用它釐清思路。

學生時代熟悉 BASIC 語言之後,就利用 CASIO FX-700P 寫橋牌叫牌程式,從這裡學到只要能建出一堆 IF ... THEN ...,就可以讓電腦有智慧判別事物,電腦的智慧就在這些程式碼逐漸堆積出來。

不過不是所有的程式都能被設計出來,
判斷性的程式是無法設計得盡善盡美,可能會有疏漏或是邏輯矛盾的地方,因為人想不出來的東西,程式也當然無法解決,不過我們還是可以獲得有用的部分解法。另外,有一點蠻詭異的地方,有些問題計算機能解它,但是要求解正確答案卻需要花幾百萬年時間,像是推銷員旅行問題 (Traveling Salesman Problem,簡稱 TSP),反而不是實務上能夠解決的,除非科學進步想出一套快速演算法解決。

作者以淺顯易懂的文字,深入說明下面九大領域的演算法:
搜尋引擎的索引 (search engine indexing)
網頁排序 (page rank)
公鑰加密 (public-key cryptography)
錯誤更正碼 (error-correcting codes)
模式辨識 (pattern recognition)
資料壓縮 (data compression)
資料庫 (databases)
數位簽章 (digital signature)
甚麼程式是不可能存在

讀後令我獲益良多,搞懂以前很多不會的地方,尤其是資料加密的部分,現在即使沒有程式庫,很多程式我也可以利用書中所提的原理來處理,強力推薦給程式設計師們細讀,

2 則留言:

  1. Error-Correcting Codes, 算是我在大學時,應用數學中學習抽象代數學最佳的應用。還記得線性碼,Reed-solomon code...用得都是很艱深的代數理論. 學校畢業 15年,只記得名稱,不記得內容了。

    回覆刪除
    回覆
    1. 在這個章節,令我印象最深的是 (7,4) Hamming code,如果以後有機會在通訊雜訊紛亂的地方,我一定會運用它。

      太深的數學,會讓工程師不敢用它,這留給研究型的人繼續研究。

      刪除