`
liuxinyu95
  • 浏览: 30077 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

初等算法

阅读更多
经过6年,我终于写完了《初等算法》一书。
这本书完全免费,可以从这里下载电子版:https://github.com/liuxinyu95/AlgoXY/releases/download/v0.618033/elementary-algorithms-zh-cn.pdf

Why
算法书籍汗牛充栋,《算法导论》,《计算机程序设计艺术》,《计算机程序的构造和解释》……,为什么要写这么一本书?是不是重复发明轮子?
这本书的特点有以下几个:
  1,形式化。所有的算法都尽量形式化为数学公式,同时给出伪代码。我希望能够让算法回归数学,具有代数符号般的简洁和优美;
  2,函数化和imperative对照。几乎所有的算法都同时给出了传统的imperative 实现和纯函数实现。
  3,多语言。尽量给出了多种语言的实现,包括C, Haskell, Python, C++, Scheme/Lisp等。
  4,尽量手绘插图,儿童画风格。








内容:
《初等算法》一书包括了如下内容(按照出现顺序给出):
二叉树、插入排序、红黑树、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,贪心策略和动态规划。

参考:
有两本书对《初等算法》影响最大。一本是Chris Okasaki的《Purely functional data structure》另外一本是《算法导论》。写作过程中还参考了一些其他书籍,包括Knuth的《计算机程序设计艺术》,Richard Bird的《Pearls of functional algorithm design》,Bentley的《编程珠玑》以及一些论文。

不足:
写这本书的六年中,我总是想起法国数学天才伽罗瓦最后写的那句话:“我没有时间了!”,我原计划用10年写完这本书,结果提前了4年。这样的代价很大。为了避免翻译,过滤“噪声”,我直接用英文写作。由于不是native speaker,书中的英文语法和拼写难免贻笑大方。为了赶时间,proof reading被压缩,许多结论采取了“拿来主意”,没有进行严格的数学证明。一些章节的课后习题也没有给出答案。

未来:
理想情况下,一本严肃的算法书应该在稳定、宽松的环境下精雕细琢。可是在社会剧烈发展的今天,在日新月异的中国,在人们习惯快餐而不再享受大餐的快节奏生活中,在微博、微信取代文章、书信的手机网络大潮下,这样的理想环境根本不存在。我经历了Symbian的裁员,然后经历了互联网创业公司,到Nokia后又经历了微软的裁员。未来不可预知。对于《初等算法》这本书,开放给社区是最好的选择。需要做的工作很多:
  * 翻译中文版
  * 社区proof reading和review,修正内容上的错误和英文上的不足
  * 提供一本习题集
  * 补足数学证明
  * 采用强大的数学工具,对形式化的算法进行分析

一些数据:
《初等算法》黄金分割0.618版本,历时6年,在github上总共提交1680次commit。全书600多页,19万字(word)。2万2千行示例代码。

保护:
《初等算法》在GNU FDL许可协议下发布,所有代码在GNU GPLv3协议下发布。
  • 大小: 30.7 KB
  • 大小: 26.6 KB
  • 大小: 51.4 KB
  • 大小: 46 KB
分享到:
评论
1 楼 liuxinyu95 2016-04-23  
中文版已经完成:
https://github.com/liuxinyu95/AlgoXY/tree/zh-cn

相关推荐

Global site tag (gtag.js) - Google Analytics