经过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
分享到:
相关推荐
在Python学习过程中,掌握基础算法是非常重要的,这些题目旨在帮助初学者巩固Python编程技能。下面分别解析这四个问题: **问题1:牛顿-拉弗森方法(Newton-Raphson method)** 牛顿-拉弗森方法是一种求解方程根的...
本文将深入探讨算法的多个重要方面,包括初等算法、数据结构、搜索算法、树结构等,并着重介绍541127算法新解中所包含的丰富内容和创新思路。 首先,我们要明确算法的核心地位。计算机科学的基石之一便是算法,它...
在编程领域,排序算法是数据结构与算法中的基础部分,对于理解和优化代码性能至关重要。本文将详细介绍五种常见的排序算法:快速排序、合并排序、堆排序以及基于整数和字符串的计数排序,并通过比较它们的特性来分析...
《算法竞赛中的初等数论》是一本针对编程竞赛,如ACM/ICPC和信息学奥林匹克竞赛等,深入探讨初等数论知识的著作。作者繁凡(孟繁宇)通过这本书,详细阐述了数论在编程竞赛中的应用,包括整除、素数、同余、积性函数...
以损失一部分精度为代价来节省代码量并提高运算速度,包括:正弦、余弦、反正切、全角度反正切、反正弦、反余弦、平方根、平方根倒数、自然指数、自然对数、数字低通滤波器等。
在研究初等函数算法的过程中,针对申威SW26010处理器的特性进行算法设计显得尤为关键。该处理器拥有独特的主核与从核协同工作的架构,能够实现复杂计算任务的高效处理。然而,这也对算法设计提出了更高的要求。本文...
《基于邻接矩阵初等变换算法的图同构识别》 在计算机科学中,图同构问题是一个重要的研究领域,它涉及到两个图是否在结构上相同但可能有不同的顶点命名。这个问题可以应用于网络分析、数据库索引优化以及生物信息学...
学习数论,算法分析的必备知识,快下载初等数论
### 初等组合学漫话:算法的基础 在探讨初等组合数学之前,我们首先要明确这一领域的核心概念及其与算法之间的联系。初等组合数学作为数学的一个分支,它研究的是有限集合元素的不同组合方式,包括排列、组合以及...
- 基本算法处理:初等算法、排序算法(冒泡、插入、合并、快速)、查找(顺序、二分)、搜索、字符串处理、回溯、递归等。 **复赛内容与要求** - 在初赛基础上,增加计算机软件使用(操作系统、编程语言)和更复杂...
基本算法处理包括初等算法、排序算法、查找和回溯算法等。 初赛试卷题型分析表明,选择题考查的是知识,而问题解决题、填空更加重视能力的考查。因此,在备考中应当注重知识的积累和能力的培养。同时,问题解决题目...
标题中的“《ACM模板》《算法全家桶》《算法竞赛中的初等数论》”表明这是一份关于ACM(国际大学生程序设计竞赛)竞赛准备的资源集合,包含了算法模板、全面的算法教程以及初等数论在算法竞赛中的应用。这份压缩包...
Day1通常被认为是对参赛者基础能力的检验,题目类型包括初等算法、数学应用、字符串处理等。这些题目虽然难度相对较低,但却能有效地评估出选手是否具备扎实的编程基础和良好的问题分析能力。例如,初等算法题目可能...
- **初等算法**:学习计数、统计、数学运算等基础算法。 - **排序算法**:理解并能实现冒泡排序、插入排序、合并排序、快速排序等常见排序算法。 - **查找算法**:掌握顺序查找和二分查找方法。 - **回溯算法**...
基于C++邻接矩阵初等变换算法的图同构识别源码+详细文档+全部数据资料.zip基于C++邻接矩阵初等变换算法的图同构识别源码+详细文档+全部数据资料.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,...
"信息学奥赛考试大纲" 信息学奥赛考试大纲是NOIP所涉及内容大纲,OIer备考必备。该大纲涵盖了信息学奥赛考试的各种...1. 初等算法 2. 排序算法 3. 查找 这些知识点涵盖了信息学奥赛考试的各种领域,OIer备考必备。
《算法竞赛中的初等数论》是一本专为ACM、OI、MO竞赛以及数论爱好者编写的十五万字符的数论书籍。本书首先从整除这一基础概念入手,介绍了整除的定义及其一系列相关性质。整除是指一个整数a能够被另一个整数b整除,...
"C++数学与算法之初等数论" 本文主要讲解了C++数学与算法系列之初等数论,涵盖了数的定义、数的进制、数论的概念、欧几里德算法等知识点。 数的定义:数是一个抽象概念,用于计数、标记或用作量度。数可以表示为...
"初等数论-第一章.ppt"和"初等数论第三章课件.ppt"分别涵盖了数论的入门内容和更深入的主题,可能包括数的分类、整除性、最大公约数与最小公倍数、欧几里得算法等内容,以及可能涉及到素数分布、算术函数等高级话题...