时间复杂度的分析基础
编辑
1
2025-02-10
思维导图
graph LR A[函数的增长] --> B[渐近符号体系] A --> C[时间复杂度分析] A --> D[递归算法复杂度计算] A --> E[应用举例] B --> B1[定义与用途] B1 --> B11["分析算法效率的数学工具"] B --> B2[符号分类] B2 --> B21["O (上界): ∃c,n₀>0, ∀n≥n₀, 0 ≤ f(n) ≤ cg(n)"] B2 --> B22["Ω (下界): ∃c,n₀>0, ∀n≥n₀, 0 ≤ cg(n) ≤ f(n)"] B2 --> B23["Θ (紧确界): 同时满足O和Ω"] B2 --> B24["o (非紧上界): limₙ→∞ f(n)/g(n)=0"] B2 --> B25["ω (非紧下界): limₙ→∞ f(n)/g(n)=∞"] C --> C1[分析原则] C1 --> C11["关注输入规模n→∞时的行为"] C1 --> C12["忽略低阶项与常数系数"] C --> C2[增长率比较] C2 --> C21["1 ≺ log n ≺ n ≺ n log n ≺ n² ≺ 2ⁿ"]
渐近符号体系
1. 核心符号定义
| 符号 | 数学定义 | 直观含义 | 典型用例 |
|---|---|---|---|
| O (上界) | ∃c,n₀>0,∀n≥n₀,0 ≤ f(n) ≤ c·g(n) | 算法的最坏时间复杂度 | 插入排序最坏情况 O(n²) |
| Ω (下界) | ∃c,n₀>0,∀n≥n₀,0 ≤ c·g(n) ≤ f(n) | 算法的最低性能保证 | 比较排序下限 Ω(n logn) |
| Θ (紧确界) | 同时满足 O(g(n)) 和 Ω(g(n)) | 算法的精确时间范围 | 归并排序 Θ(n logn) |
| o (非紧上界) | limₙ→∞ f(n)/g(n) = 0 | 严格弱于上界 | 2n = o(n²) |
| ω (非紧下界) | limₙ→∞ f(n)/g(n) = ∞ | 严格强于下界 | n² = ω(n logn) |
2. 符号关系
graph LR O --> Θ Ω --> Θ o --> O ω --> Ω
时间复杂度分析
1. 三大基本原则
- 忽略常数因子:硬件差异会掩盖常数影响
- 关注最高阶项 :长期增长趋势由最高阶主导
- 考虑最坏情况:保证算法在任何输入下的性能下限
2. 常见函数增长率
1 \prec \log n \prec \sqrt{n} \prec n \prec n \log n \prec n^2 \prec 2^n
当 n=1,000,000 时
log2(n) ≈ 20 # 对数级
n = 1e6 # 线性级
n logn ≈ 20e6 # 线性对数级
n² = 1e12 # 平方级
- 0
- 0
-
分享