《算法的乐趣》作者王晓华:"玩"过就是收获 - 图灵访谈 - SegmentFault
就我的经验而言,在计算机上学习算法首先需要熟悉编程语言和数据结构,关于编程语言和数据结构有很多经典的书籍,我就不多介绍了。但就算法而言,我看过的书有Cormen的《算法导论》、Knuth的《计算机程序设计艺术》、Weiss的《数据结构与算法分析》、Levitin的《算法设计与分析基础》、Kleigberg的《算法设计》等等。想参加算法竞赛的同学可以参考刘汝佳等人编写的《算法艺术与信息学竞赛》,以及《ACM国际大学生程序设计竞赛题解》。因为时间过去太久了,已经不记得看这些书的顺序了,只记得最早看的是《算法导论》,关于顺序实在没有什么经验可谈。
至于如何读这些算法的经典书籍,我倒是有一些经验和大家分享。不管哪一本书,都不要泛泛地看一遍就觉得看懂了,而是要把书中的每一个例子算法都用程序写出来,这样才能留下深刻的印象。如果遇到看不懂的地方,不要停下来,跳过去看其他算法,过几天在回头来看,如果还看不懂就再过几天再回头来看。千万不要在一个地方停下来,否则你很可能就此失去兴趣,恐怕永远也看不完这本书了。
问:有哪些学习算法的网站值得推荐?
有很多游戏开发相关的算法介绍:
http://www.gamedev.net
http://theory.stanford.edu/~amitp/GameProgramming
http://www.gamasutra.com
http://www.sudoku.com
俄罗斯方块游戏的算法网站:
http://gforge.inria.fr/projects/mdptetris
http://colinfahey.com/tetris/tetris.html
leetcode,最近很火的算法网站:
http://www.leetcode.com
Topcoder,也很经典,每周都有竞赛,有奖金的:
http://community.topcoder.com/tc
晋中教育网的"信息学竞赛辅导":
http://www.jzsyz.jzedu.cn/xxjs/suanfa/index.html
很多大学也有自己的竞赛题库,比如:
北大:http://poj.org/
杭电:http://acm.hdu.edu.cn/
华中科技大学:http://acm.hust.edu.cn/vjudge/toIndex.action
问:很多人都认为"学习算法很难",你是否知道有哪些方法可以降低学习算法的难度?
许多算法是有难度的,理论很复杂,不容易理解和掌握,这是客观存在的现实。但是我们可以通过提高自身分析问题和解决问题的能力来相对地降低学习难度。从基础来讲,要深入理解数据结构,至少要非常熟练地掌握一种排序算法,各种线性表的插入、删除算法,树的遍历和插入、删除算法,图的遍历算法等等。然后要多学习,掌握一些常见问题的解决模式,比如穷举算法如何应用,动态规划算法如何应用等等。最后要勤思考,对应已经掌握并解决的算法,要想想为什么用这种方法解决,有没有其他方法,类似的问题怎么办,提高举一反三的能力。
Read full article from 《算法的乐趣》作者王晓华:"玩"过就是收获 - 图灵访谈 - SegmentFault
No comments:
Post a Comment