北京liu xinyu同學六年完成《初等算法》
北京 liuxinyu 同學寫完《初等算法》。全書英文寫作,600 多頁:我終于寫完了《初等算法》一書。
這本書完全免費,可以從這里下載電子版:https://github.com/liuxinyu95/AlgoXY/blob/algoxy/preview/elementary-algorithms.pdf?raw=true
Why
算法書籍汗牛充棟,《算法導論》,《計算機程序設計藝術》,《計算機程序的構造和解釋》……,為什么要寫這么一本書?是不是重復發明輪子?
這本書的特點有以下幾個:
1、形式化。所有的算法都盡量形式化為數學公式,同時給出偽代碼。我希望能夠讓算法回歸數學,具有代數符號般的簡潔和優美;
2、函數化和 imperative 對照。幾乎所有的算法都同時給出了傳統的 imperative 實現和純函數實現。
3、多語言。盡量給出了多種語言的實現,包括C, Haskell, Python, C++, Scheme/Lisp 等。
4、盡量手繪插圖,兒童畫風格。
- 歸并排序的插畫
- 跳躍青蛙問題的插畫
- 狼、羊、白菜過河問題的插畫
- 選擇排序的插畫 </ul>
- 翻譯中文版
- 社區 proof reading 和 review,修正內容上的錯誤和英文上的不足
- 提供一本習題集
- 補足數學證明
- 采用強大的數學工具,對形式化的算法進行分析 </ol>
內容:
《初等算法》一書包括了如下內容(按照出現順序給出):
二叉樹、插入排序、紅黑樹、AVL 樹、Trie 和 Patricia,后綴樹、B樹;
Binary heap, Leftist heap, Skew heap, Splay heap, 選擇排序,Binomial heap, Fibonacci heap, Pairing heap;
隊列,基于 Finger tree 的序列,快速排序,歸并排序,眾數查找、二分查找,Saddleback 查找,KMP 和 Boyer-Moore 查找,DFS, BFS,貪心策略和動態規劃。
</blockquote>參考:
有兩本書對《初等算法》影響最大。一本是 Chris Okasaki 的《Purely functional data structure》另外一本是《算法導論》。寫作過程中還參考了一些其他書籍,包括 Knuth 的《計算機程序設計藝術》,Richard Bird 的《Pearls of functional algorithm design》,Bentley 的《編程珠璣》以及一些論文。
不足:
寫這本書的六年中,我總是想起法國數學天才伽羅瓦最后寫的那句話:“我沒有時間了!”,我原計劃用 10 年寫完這本書,結果提前了 4 年。這樣的代價很大。為了避免翻譯,過濾“噪聲”,我直接用英文寫作。由于不是 native speaker,書中的英文語法和拼寫難免貽笑大方。為了趕時間,proof reading 被壓縮,許多結論采取了“拿來主意”,沒有進行嚴格的數學證明。一些章節的課后習題也沒有給出答案。
未來:
理想情況下,一本嚴肅的算法書應該在穩定、寬松的環境下精雕細琢。可是在社會劇烈發展的今天,在日新月異的中國,在人們習慣快餐而不再享受大餐 的快節奏生活中,在微博、微信取代文章、書信的手機網絡大潮下,這樣的理想環境根本不存在。我經歷了 Symbian 的裁員,然后經歷了互聯網創業公司,到 Nokia 后又經歷了微軟的裁員。未來不可預知。對于《初等算法》這本書,開放給社區是最好的選擇。需要做的工作很多:
一些數據:
《初等算法》黃金分割 0.618 版本,歷時 6 年,在 github 上總共提交 1680 次 commit。全書 600 多頁,19 萬字(word)。2 萬 2 千行示例代碼。
保護:
《初等算法》在 GNU FDL 許可協議下發布,所有代碼在 GNU GPLv3 協議下發布。
Larry, LIU Xinyu
<span id="shareA4" class="fl"> </span>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!