n 是图的顶点个数,m 是图的边的个数,比较时间复杂度

1.

假设 n 是图的顶点个数,m 是图的边的个数。为求解某一问题,有下面四种不同时间复杂度的算法。对于 m = Θ(n) 的稀疏图而言,下面的四个选项,哪一项的渐近时间复杂度最小?

A. O(m√log n · log log n)
B. O(n² + m)
C. O(n² / log m + m log n)
D. O(m + n log n)


2. 把“稀疏图”条件翻译成数学式

题目给出 m = Θ(n),即
m ≤ c·n ,其中 c 为某个正常数。
于是所有 m 都可以直接用 n 来替换,不会影响渐近阶。


3. 把每个选项里的 m 全部替换成 n

选项 原始表达式 代入 m = Θ(n) 后
A O(m√log n · log log n) O(n√log n · log log n)
B O(n² + m) O(n²)
C O(n² / log m + m log n) O(n² / log n + n log n)
D O(m + n log n) O(n log n)

4. 比较四个结果

  • A:n√log n · log log n → 比 n·poly(log n) 略大,但远小于 n²。
  • B:n²
  • C:两项取大者
    • n² / log n
    • n log n
      在 n→∞ 时,n² / log n 支配 → Θ(n² / log n)
  • D:n log n

把四条曲线按增长速度排序:

n log n < n√log n log log n < n² / log n < n²


5. 结论

对于稀疏图 m = Θ(n),选项 D 的渐近时间复杂度 O(n log n) 最小。


6. 一句话总结

在稀疏图 (m = Θ(n)) 的条件下,四个算法中 D 选项 O(m + n log n) 的渐近时间复杂度最小。

posted @ 2025-08-31 12:05  kkman2000  阅读(1)  评论(0)    收藏  举报