首页 > 代码库 > 普林斯顿公开课 算法1-3:数学模型

普林斯顿公开课 算法1-3:数学模型

本节主要通过建立数学模型,来计算算法的运行时间。


公式


算法的运行时间=所有操作的开销乘以操作的次数之和


开销


下表展示了各种操作所需要的时间(单位:纳秒)

  • 整数加法 2.1

  • 整数乘法 2.4

  • 整数除法 5.4

  • 浮点加法 4.6

  • 浮点乘法 4.2

  • 浮点除法 13.5

  • sin 91.3

  • arctan 129.0


举例


问题


计算数据中0的个数


代码


1
2
3
4
int count = 0;
for (int i= 0; i < N; i++)
    if (a[i] == 0)
        count++;


操作次数统计


变量定义 2次

赋值操作 2次

小于比较 N+1次

等于比较 N次

数组访问 N次

增加操作 N 到 2N次


最终的开销


2+2+N+1+N+N+1.5N = 5+4.5N


数学模型


在计算算法运行时间的时候,可以忽略系数较低的项。比如:N^3 + 20N + 16 可以简化成 N^3。


原则上来说,精确的数学模型是有的。但是实际应用中,精确的公式非常复杂,所以一般情况下都使用近似模型。在本课程中采用了近似模型。