算法设计与分析基础2:算法效率分析基础
一、分析框架
1.时间复杂度:时间效率,指出算法运行有多快
2.空间复杂度:空间效率,关注算法需要的额外空间
3.输入规模的度量。
(1)计算两个n阶矩阵的乘积。度量方法有两种,第一种方法是用矩阵的阶数n,第二个方法是参加乘法运算中所有元素的个数N
4.运行时间的度量单位
算法效率的度量:对于输入规模为n的算法,统计其基本操作的执行次数
5.增长次数
(1)对于大规模的输入强调执行次数的增长次数是因为小规模输入在运行时间上的差别不足以将高效的算法和低效的算法区别开来
(2)logn增长缓慢;2^n和阶乘函数n!呈指数级增长,增长速度很快。
(3)一个需要指数级操作次数的算法只能用来解决规模非常小的问题。
6.算法的最优、最差和平均效率
(1)最差效率:当输入规模为n时算法在最坏情况下的效率。对于任何规模为n的实例来说,算法的运行时间不会超过最坏情况下的运行时间Cworst(n)
(2)最优效率:当输入规模为n时,算法在最优情况下的效率。对于一些接近最优输入的有用输入类型,有些算法也能获得类似最优效率的良好性能。
(3)平均效率:在“典型”或者“随机”输入的情况下,一个算法会有什么样的行为
(4)摊销效率:不适用与算法的单次运行,而是应用于算法对于同样数据结构所执行的一系列操作。
二、渐近符号和基本效率类型
1.非正式的介绍:
(1)O(g(n))是增长次数小于等于g(n)的函数集合
(2)