一、基本概念
1、算法的定义:算法是规则的有限集合,是为解决特定问题而规定的一系列操作。
2、算法的特性:
有限性:一个算法不能无限执行下去,必须保证步骤有限
确定性:算法每一步不能用二义性
可行性:可以实现
输入:可以有0个或多个输入
输出:一个算法至少有一个输出
一个算法可以没有输入但不能没有输出
3、算法分析准则:
正确性、可读性、健壮性、高效率和低储存
4、算法复杂度:算法所需的计算机资源
时间复杂度:算法中有关操作次数的多少,用T(n)表示
空间复杂度:算法在执行过程中所占储存空间的大小,用S(n)表示
5、算法渐进分析(问题规模很大且趋于无穷时对算法性能的分析,常忽略其系数)
渐进上界O:O(g(n)) = { f(n) | 存在正常数C和,使得对所有,有 },记作
渐进下界:(g(n)) = { f(n) | 存在正常数C和,使得对所有,有 },记作
紧渐进界:(g(n)) = { f(n) | 存在正常数,和, 使得对所有 ,有 }
当且仅当且时,与同阶
非紧上界o:o(g(n)) = { f(n) | 对于任何常数C>0,存在正数>0,使得对所有,有 }
非紧下界: (g(n)) = { f(n) | 对于任何常数C>0,存在正数>0,使得对所有,有 }
6、渐进阶分析简化规则
1)若在中且在中,则在中
2)若在中对任意常数成立,则在中,可忽略O中常数因子
3)若在中,在中,则+在 中
4)若在中,在中,则在中
7、阶的证明方法
1)反证法,常用于否定的论述
例:对于和,证明不是。
证明:假设 是,因为据低阶定义,,但对于,不成立, 所以。
2)极限法,利用极限描述
洛必达法常用于求极限,若,则。