关于算法的文章我一直想写,但算法是我的软肋,自己难于下笔。首先自己非科班出身,没有进行过系统的算法设计课程训练;再者自己到目前为止还从未独立设计过一个完整的、实用的算法,在平时工作中较少的涉及到算法设计,这不能说不是一个遗憾。也许有人会问:"算法难道还没有过时吗,算法不是属于'Donald E. Knuth'那一代人的事情吗?'。我很难回答这个问题,不过当我今天看到CSDN上的一篇题为'算法是百度工程师的利器'的文章后,我隐约看到了算法的回归!

谈到目前互联网上最热的是什么?100个人有99个会回答:'搜索',剩下的一个的答案是'Google'。没错!技术公司出身的Google和Baidu在成功背后到底是什么在支撑呢?名为技术,实则算法。Google的成功难道不是'page rank'算法的贡献么?Baidu站在行业的顶峰其脚下也少不了优秀的算法设计。从Baidu工程师入司的练习题也可以看出Baidu是何等的重视算法。可以说搜索引擎技术带来了算法的回归。

2006第四期'程序员'杂志推出了一期技术专题,叫'算法的力量',在我的印象中'程序员'杂志好像是第一次推出算法专题。由于没买这期杂志所以这里也不知道其中的细节。谈到算法我们不能不提到算法的学习。Donald E. Knuth的'The Art Of Computer Programming'可以说是举世公认的算法领域的鼻祖之作,以至于很多人把这三卷书买回家恭恭敬敬的'供起来'^_^。从这点也可以看出如果拿这本书作为教程的话,难度可见一斑。我们还是介绍点'通俗'的。首当其冲的就是MIT的'算法导论'开放课程(6046),最新一期的开放课程还有Video可供下载,主讲教师就是'算法导论第二版'的作者之一Charles E.Leiserson。我觉得大师级人物的课与一般讲师不同之处在于其对知识本源的发掘、揭示和解释,有着亲身体会的大师们的见解会让你身临其境印像深刻。当然这门儿课也是一门'大部头'的课,其教材'算法导论第二版'也是一本足以'砸死人'的'大砖头',国内早在2003年就出版了其英文版,出版社应该是高教。记得当时还在读大三,但我去母校的大学书店买书的时候,店员告诉我"这是哈尔滨第一批展示品,本来是不准备卖的,你消息还挺灵通的吗"。就这样我买下了那本大部头,遗憾的是到目前为止它还和刚买来的时候一样新^_^。

正如百度首席架构师所说:"搜索引擎开发中使用的基本算法大部分都在大学课程中涵盖了。对于一个人来说,在学校学习过这个算法,和能够灵活运用是两个概念。只有通过参与较多的项目开发和程序编写,将算法和应用相结合,才能在这方面得到较好的发展。",单单死扣书本上的东西去学习算法是不能设计出好算法的,必须通过一个不断思考、实践、创新和总结的良性循环,你才能发现算法设计的真谛。最近自己也在理论和实践相结合的锻炼自己的算法能力,而尝试ACM练习是一个很好的将理论和实践相结合的方法,大家也不妨试试。

要想在算法领域有所深入,数学基础必不可少,相信很多人都能意识到这一点,前几天Google的一位科学家吴军在'Google黑板报'上贴出了一篇叫'数学之美'的Blog,也谈了数学工具在Google内部技术研究的重要性。其实对计算机知识认识越深的人越能认识到数学无处不在,CSDN编辑孟岩的一篇文章'数学与算法随想'让我们感受到数学语言的魅力!

题外话:在'南合文斗'的'让泪化作相思雨'-歌曲美妙节奏的驱动下,我的思维好像跑在美国的高速公路上,那是相当的快!周末了,一切都要放下放下!^_^

© 2006, bigwhite. 版权所有.

Related posts:

  1. 第一道ACM练习题
  2. 我来'Mixing Milk'
  3. Boost_1_32_0版源代码编译
  4. APR源代码分析-整体篇
  5. APR源代码分析-信号篇