主要是整理了算法导论的前几章。
算法分析主要是分析算法所占用的内存、通信宽带、计算机硬件、其中最重要的是计算时间。算法所用的时间通常与输入的规模同步增长。用T(n)表示算法的时间复杂度,表示算法所花费的时间。
假设:单处理器计算模型(RAM)。指令一条接一条执行,没有并发操作。在这样的假设下算术指令、数据移动指令、控制指令所需时间为常量时间。
设计算法的方法:分治法
将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后合并子问题的解来建立原问题的解。
分治法所产生的算法时间通常是递归的形式。用T(n)表示算法的时间复杂度,则T(n)分为两部分,一部分是分开以后的子问题相应的计算时间以及合并子问题所需要的时间。
渐进符号介绍
渐进符号一共有五个。分别为Θ、Ω、Ο、ο、ω。
概率分析与随机算法
不是假设输入的分布,而是设定一个输入的分布。可以计算期望时间复杂度。
比如在进行排序前,先随机打乱排序顺序,以加强所有排列都是等可能出现的性质。