如何系统地学习算法?

栏目: 编程工具 · 发布时间: 6年前

内容简介:下面开始今天的学习~

点击上方 蓝字 关注我们

下面开始今天的学习~

如何系统地学习算法?

提到算法学习,不得不给大家推荐一本实用的书籍:

《算法导论》,或称 CLRS,是一本可以和 《编译原理》,《CS:APP》等相提并论的超经典书籍。

豆瓣上对于此书的介绍如下:

在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。 本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。 全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。全书选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在IT专业人员的职业生涯中,本书也是一本案头必备的参考书或工程实践手册。

如何系统地学习算法?

《算法导论》是一本公认的学习算法的好书,其次,它还是一本教材,对应的是 MIT 的 Introduction to Algorithms (SMA 5503) 课程。

算法导论怎么学

如果英文水平不是非常好,建议大家还是先从中文版开始比较合适。

个人认为专业书籍在你能看出来“这翻译的是啥破玩意”之前都可以看中文版。——某网友

关于算法描述,在书中所有的算法描述都是伪代码形式,我认为不用太纠结如何编程实现,毕竟这个是 "算法" 教学,不是编程教学,无需过于追求在算法课上学习编程。

如何系统地学习算法?

算法本就是很纯粹的数学对象,它的设计思想完全依托于背后的数学结构,它运作的机制以及它的美,也都来自它的数学,如果对应书上的伪代码来僵化自己写程序的思路的话,就会让算法的数学之美沦为一段机械代码。辛苦地把自己的思维变成机器,即使读懂了这些代码,也并不能直接带来对算法本身的领悟。

就像一个人懂得了打牌的游戏规则,但并不意味着他就会打牌了,因为他可能依旧不通晓牌理。对算法的学习也要从问题本身的数学结构入手,理解解决此种结构问题的算法的设计思想,掌握分析具有各种结构特征的算法的数学工具,学习怎样发现问题的结构并从中推出问题的下界(lower bound),这些才是学习算法的根本。

学习顺序

关于学习顺序,本书是一本教材,美国的教材和中国的教材差异较大,《算法导论》对于很多细节写得非常详细,《算法导论》还为我们建立了数据结构与算法之间的联系。书中的前篇,除了一些基础的算法,都在由浅入深地介绍数据结构的知识,这些结构拥有各自有趣的特性,当然如果你是一个没有数据结构基础的萌新的话,建议先看一下前面几个章节,加深对于数据结构的理解之后,再对后面各个章节进行兴趣驱动阅读。(比如我个人就不会直接从 排序 开始看)

如何系统地学习算法?

此外,一些关于《算法导论》的书评也值得关注和注意:

我认为这本书最大的缺点,也是它最大的优点,就是内容非常充实,需要相当多的时间来仔细阅读。作为入门书,这本书陪伴了我很多年,很多章节都被反复阅读了。国内大学的本科生,迫于课业、实习、琐事和环境的压力,能做到这一件事的人并不多。然而我认为这是在本科阶段最重要的事情之一,没有算法就没有整个计算机科学。《算法导论》的知识略显死板,给人谨慎、细致的感觉,行文和脉络远不如 Kleinberg 和 Dasgupta 那种大快朵颐的感觉,然而严谨的思路、详细的证明、全面详实的内容,无疑奠定了它在人们心中的地位。这本书的一大特点就是严谨,我个人的经验是一定要熟练掌握里面的所有算法和数据结构,它们都是计算机科学的基础,不但要掌握算法和数据结构的思路,还要懂得证明算法的复杂度。不要觉得里面的证明过于“理论化”在实际当中可能用不上,等你实际编码的时候就会发现这里面的知识让你学会像计算机一样思考,在解决问题时有一个最基本的思路(比如如何根据 QQ 号码找到这个人的信息?有了数据结构的基础你起码知道可以用哈希表实现),也懂得分析某种算法会耗费多少时间和空间,进而判定它是否是可接受的。计算机科学涵盖广泛,但算法是所有行家公认的基础。

算法课程推荐

除了《算法导论》这本书以外,还有一些在线的课程也是非常值得推荐的,例如在 Coursera 上面:普林斯顿大学的 Algorithms, 以及 UCSD 的 Data Structures and Algorithms Specialization。

如何系统地学习算法?

如何系统地学习算法?

总之,《算法导论》对于算法(而不是编程能力)的学习上非常有帮助,且通过一个合适的学习路径可以让自己的算法学习之路变得更加轻松, 力扣(LeetCode) 平台可以让算法活学活用,让学到的算法不仅仅是停留在书上的一些伪代码上,还可以了然于心,这样无论是在面试还是在和别人吹牛的时候都可以获得很好的个人形象的提升。

如何系统地学习算法?

本文作者:Nova

编辑&版式:霍霍

声明:本文归 “力扣” 版权所有,如需转载请联系。

推荐阅读

如何系统地学习算法?

如何系统地学习算法?

如何系统地学习算法?

如何系统地学习算法?

如何系统地学习算法?

如何系统地学习算法?

如何系统地学习算法?

如何系统地学习算法?


以上所述就是小编给大家介绍的《如何系统地学习算法?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

How to Think About Algorithms

How to Think About Algorithms

Jeff Edmonds / Cambridge University Press / 2008-05-19 / USD 38.99

HOW TO THINK ABOUT ALGORITHMS There are many algorithm texts that provide lots of well-polished code and proofs of correctness. Instead, this one presents insights, notations, and analogies t......一起来看看 《How to Think About Algorithms》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具