算法与复杂度 | #手册 #算法
“这个系列的博文会逐个介绍计算机科学里面最基础、也是最重要的一部分内容:算法(algorithm)。提到它,这可能是你最擅长的部分,亦或是你学生生涯的噩梦。不管怎么样,对于学计算机的小伙伴来讲,它始终是不可回避的一个话题。不论是学生时代的你还是已经踏上了工作的岗位,算法都会一直陪伴着你。
为什么要做这个系列呢?因为网上对于这一块的内容实在是太多,甚至是太杂,而很少有把算法的知识体系整合起来形成一个系列的教学博客。于是乎想尽自己的微薄之力,让更多的人能够更好地理解算法,不畏惧算法,在未来求职的面试中不再因为它而与自己理想的公司失之交臂。
我将有别于国内的教学方式和教学内容。形式上不再是只针对如何解决这个问题,因为只会解决问题并不代表真正理解这个问题。我会花一些篇幅着重介绍一些概念性的内容,这也是国内的教学最欠缺的部分。国内的课堂不会告诉你自然对数 e 揭示了自然界生长的规律;学完了线性代数,你可能光学会了如何解行列式,却忽视了行列式也是有几何意义的。在内容上我不再按照“排序算法”、“搜索算法”等方式分类,而采用了解决问题的不同方式来划分,比如“暴力求解”、“分治法”、“动态规划”等等。整个系列我以 Levin 编写的 Introduction to The Design and Analysis of Algorithms, 3rd Edition 作为参考。要是你觉得这本书讲得太基础,你也可以参考 MIT 的《算法导论》,绝对的算法界的权威书籍。”