##关于
Introduction to Algorithm这本书,第三版出来的时候,我在第一时间就入手了,也有34年了吧,反复看过很多次,奈何每次都感觉不得其意。这是一部大部头的书,将近有800页,书中的代码大部分都是用伪代码写的,很多地方晦涩难懂。而且在工作中除了极少的场合,很难用到一些高深的算法(如动态规划、摊还分析,B树等),所以一直没花时间去整理和消化。
整理
早些年只研究过图算法,研究的时候,却不得其法。工作中,由于性能各方面的要求,也需要慢慢接触到一些比较“厉害”的算法,有时候甚至需要自己去设计算法,然后分析,测试,封装(这事我上研究生的时候干过。。,也吃过算法的亏)。因此下定决心整理,一些算法
书结构
全书共分为8个部分(7个部分的正文+1个部分的附录),每个部分大约是3—5个章节。作者非常用心,在第八部分添加了常用的数据基础只是,如果在书中看到某一个不懂的术语,查看第八部分的附录,基本上都能查到。
第一部分:
基础知识:主要通过两种简单的算法,告诉你后续的章节要怎么样(如评价算法的规则,标准的流程,符号等)去介绍算法,分析算法。
第二部分
排序算法:这下你知道为什么校招和大公司的社招都看重排序了吧,“算法导论”作为算法届圣经一样的存在,都单独列出一章详细讲解,说明对排序算法的掌握是考验一个人算法功底的重要指标。所以,不要抱怨,好好掌握吧。
当然,这一部分提到的排序算法,只有6中左右,远没有我当年参加校招的时候的10多种。。。
第三部分
数据结构:一些基本的数据结构,当然这个“基本”也只是相对的,这章提到了红黑树和数据结构的扩张,要掌握还是有一定的难度。
第四部分
算法设计规则:动态规划,贪心算法,摊还分析等,都是比较有名的算法设计思路。如背包问题,8皇后等,就是这些思路的经典运用。
第五部分
高级数据结构:是对第三部分的一个延伸,主要介绍的B树,斐波那契堆,van Emde Boad树等,很高级。
第六部分
图论:在计算机的课程中,图论算是一个非常大的分支,也应用的非常广泛(如广度优先,深度优先、拓扑排序等),如果没有基础,可以跳过部分内容,只看一些基本的图算法就好
第七部分
经典算法:前6个部分大致已经介绍完了算法的理论基础,这部分介绍的是将各个部分的理论结合起来,在人类现有的认知范围内,选编的一些经典思路和算法。
计划
庸庸碌碌的过了这么些年,研究生时代的算法研究也是过的浑浑噩噩,也终于意识到要静下心来认真分析总结了。计划将在2017年一整年的时间,将算法导论好好的重新整理一遍。
记于2017.1.3