Computational Complexity Theory
五月 29, 2021
算法度量
算法的定义
- 算法=解法:求解步骤(的描述)
- 计算机中表现:指令的有限序列,每条指令表示一个或多个操作
算法的特性(五个基本特性)
- 输入、输出
- 有穷性
- 确定性
- 可行性
算法设计的要求
- 正确性
- 可读性
- 健壮性
- 时间效率高+存储量低
(算法效率的)度量方法
- 事前分析估算方法:运行时间预估
- 根本:算法(的好坏)
- 问题输入(量)规模
- ==软件==支持:变异产生的代码质量
- ==硬件==性能:机器执行速度
- 事后统计方法:计算机计时器对不同算法编制运行时间进行比较
- 事前分析估算方法:运行时间预估
时间复杂度估算效率规范:函数的渐进增长(单调递增)
- 忽略加法常数
- 忽略最高次项的乘积常数
- 关注最高次项的指数(指数大,增长快)
算法时间复杂度
算法时间复杂度定义:渐近时间复杂度
【大O记法:O()】推导方法:
- O(1)取代所有加法常数
- 只保留最高阶项
- 最高阶项存在且系数不是1,去除与这个项相乘的系数
常见的时间复杂度:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
【最现实】最坏情况&【最理想】平均情况
算法空间复杂度:S(n)=O(f(n))
阶 | 非正式术语 |
---|---|
O(1) | 常数阶 |
O(logn) | 对数阶 |
O(n) | 线性阶 |
O(nlogn) | nlogn阶 |
O(n2) | 平方阶 |
O(n3) | 立方阶 |
O(2n) | 指数阶 |
O(n!) | 乘积阶 |
O(nn) |
查看评论