1.3.3 算法效率的衡量方法 通常有两种衡量算法效率的方法:事后统计法和事前分析估算法。相比之下前者的缺点是,必须在计算机上实地运行程序,容易由其它因素掩盖算法本质;而后者的优点是,可以预先比较各种算法,以便均衡利弊而从中选优。 如何估算算法的时间效率? 和算法执行时间相关的因素有:1)算法所用"策略";2)算法所解问题的"规模";3)编程所用"语言";4)"编译"的质量;5)执行算法的计算机的"速度"。显然,后三条受着计算机硬件和软件的制约,既然是"估算",仅需考虑前两条。 |
事后统计容易陷入盲目境地,例如,当程序执行很长时间仍未结束时,不易判别是程序错了还是确实需要那么长的时间。 |
|||
一个算法的"运行工作量"通常是随问题规模的增长而增长,因此比较不同算法的优劣主要应该以其"增长的趋势"为准则。假如,随着问题规模
n 的增长,算法执行时间的增长率和f(n)的增长率相同,则可记作: 称T(n)为算法的(渐近)时间复杂度。 |
""的数学含义是,若存在两个常量
C 和,当
时, 则记作 它表明算法的执行时间是和f(n)"同数量级"的。 "渐近"是相对其它时间复杂度而言,但由于在本课程中不讨论其它类型的时间复杂度,故以后均简称时间复杂度。 |