当前位置: 首页> 书评> 正文

计算机算法的设计与分析《算法1/3》

  • 小小评论家小小评论家
  • 书评
  • 2023-03-26 08:35:04
  • 76

我一直认为搞算法应该看三本书,但是如果一个人把这三本书都花时间去钻研,那要么就是对算法极有天赋以及狂热的学者,要么就是附庸风雅的俗人。就如同当年胸口别四只钢笔的显摆人士,不足以模仿之。

这三本书中有两本可说是如雷贯耳,TAOCP和算法导论,而这本DACA却鲜有人问津。这恐怕得益于TAOCP的大牛作者Knuth,以及MIT OCW对算法导论的推广。相比之下,DACA名气就小很多了。尽管如此,DACA的编者阵容仍可说是十分豪华:大名鼎鼎的Aho和Ullman,以及86年图灵奖获得者Hopcroft。

估计绝大多数人认识Aho和Ullman是因为龙书,而Hopcroft知道的人就不见得多了。第一次认识这位老兄是因为当初学习自动机的时候运气较好,读到了他的《自动机理论、语言和计算导论》。后来对他印象十分深刻,所以当我后来看到他和老霍和老乌合写的书,便不能不弄来翻看一下。

这本DACA大凡在书店里都是有的,不过多半会放到数学的架子上去。但是每当有人拿起这本黄金壳子的书翻读的时候,最可能发生的情况就是看完前几页就放下了,因为这本书里面使用的是Algol60,大部分人就因此敬而远之。但实际上,Algol60在本书中并不重要,不过是描述过程的一系列代号而已,多看几次一定可以轻松阅读,甚至根本没有必要为此而去专门学习Algol60。

这三本书所针对的层次十分鲜明:

TAOCP->意图建立算法构建之前的思维体系,由此可以在其建立起来的基本思维框架下去推导新的算法。侧重于算法思维;

算法导论->侧重于对算法本身进行分析,尤其是如何提高算法效率方面,做了详实的讨论;

DACA->理论讨论的不多,不像算法导论里面一堆定理和证明过程,重点在于讲述如何把已有的算法拿来应用。但这种应用并不是实现层面的应用,不是去考虑如何用具体的语言来实现算法。而是讨论如何把已有的算法用到实际问题上去,也就是说在遇到具体问题的时候,如何利用已经研究成熟的算法和数据结构的一些适用的特性,用来来解决这些具体问题。但是千万不要把这种讨论想得太简单,这毕竟不是什么对照手册,查阅即可知道A问题对应B方法。其中讨论还是比较抽象的,所以对于想学了就能马上用的人来说恐怕这书还是深了点。对于研究算法的人来说,还是值得一读的,尤其是研究如何把前人研究成果拿来应用的人。

由此可以看到,TAOCP的内容最底层,但难度也是最高的;算法导论居中;DACA就比较适合对算法要求相对要“浅”一些的人,当然,这种所谓的“浅”,并不是指浅薄,仅是避免过于深入的钻研而已。本质上来说,这种“浅”对大多数人来说,已经足够深入了......

阅读全文