《算法导论》(CLRS)是我经常强烈推荐的一本算法教材(这是我写的学习指南),经常被大家问,这书到底有啥用?嗯,其实我的答案因人而异的。比如......
一位大一新生问我,CLRS真的有用吗?我就问,你怎么理解有用?他说,就是以后工作了,做个码农,天天就靠它吃饭,一工作就拿起来能用,算法导论可以吗?我说:啊啊哈哈,可以的吧...... 他接着问,不对啊,都是理论在里面,怎么可能有用?我说,是的,是没啥用的...... 他就问,哪你为啥推荐,这不是...... 我差点就回答,没错,是的,我其实就是为了坑你!哈哈~
这段对话的潜台词是这样的,CLRS都是理论,好难,难而且以后可能用不上,陡峭的学习曲线,收获不大,为什么要学?而我回答的潜台词是:怕难说明你菜,不学就不学,没人逼你。我之所以推荐是因为:如果要学习算法,要入门,算法导论是不二的教材选择。如果你认为有,没关系,学去!没什么好争论的。条条大路通罗马,找自己适合的道路,不断前进。
另一个例子,是我同学,我大学本科同学。他说,说真的,我工作了20年,写了10年代码,学习算法导论这种东西,有啥用啊?只有你这种搞理论的家伙才会认为它有用吧?我说,老兄,你错了,其实算法导论对我也没啥用。他说,操!怎么可能?你还整天推荐呢......
其实,CLRS对我真没有用!为啥?很简单,CLRS里面的算法结构都超级简单:方法只有分治、贪心、动态规划,数据结构无非是列表、链表、树,最复杂也不过是棵红黑树。当真在我的科研中,随便碰一个难题,你都无法在算法导论中找到任何思路。无论椭圆曲线、环上的带误差学习还是各种多线性映射等等,都需要重头再来,重新审视,从”无“当中寻找出路。你还能指望啥?
以上这段对话中,我同学的潜台词是:CLRS太难,也许只有搞高深科研的人才能用到。我的潜台词是:CLRS只是入门书而已,离高深的东西还差个跟斗云的距离......
总结,CLRS无论是入门者还是从业者都会说它太难,或者太简单。从它的定位来看,它就是一本大一新生的算法入门书!纠结啥,看吧,学吧!至于它有啥用...... 我怎么回答得出来呢?