【问题标题】:Arrange functions based on their time complexity根据时间复杂度排列函数
【发布时间】:2021-06-16 20:52:29
【问题描述】:

将以下代表运行时间的函数从小到大排列(根据 相对于 n) 的增长率并将那些在同一等价类中的函数分组

函数列表

2n^3+12n^2+5, 
8(log n)^2, 
1.5^n, 
n^4-12n^3, 
4n^3(log n), 
4n^3, 
n!, 
7n+6
My solution in ascending order is :
8(log n)^2 - logarithmic complexity
7n+6       - linear complexity
2n^3+12n^2+5, 4n^3(log n), 4n^3 - polynomial complexity
n^4-12n^3 - polynomial complexity
1.5^n - Factorial complexity
n! - Exponential complexity

不确定我所做的是否正确。任何反馈将不胜感激。

【问题讨论】:

  • 为什么说4n^3(log n) 等价于4n^3?你试过证明吗?
  • 我不太确定。我认为 4n^3(log n) 可能具有更高的复杂性。不,我没有试图证明。
  • 那么,我想你应该试试。这是一个数学问题,每个答案都应该可以用数学方法证明。如果你不能证明你的推理是正确的,那么你就没有完成。

标签: algorithm function time-complexity discrete-mathematics


【解决方案1】:

复杂度如下:

  • 2?3+12n2+5 = O(?3)
  • 8(log?)2 = O(log2?)
  • 1.5? = O(1.5?)
  • ?4−12?3 = O(?4)
  • 4?3log? = O(?3log?)
  • 4?3 = O(?3)
  • ?! = O(?!)
  • 7?+6 = O(?)

按复杂程度分组并按升序排列时:

  • O(log2?)
    • 8(log?)2
  • O(?)
    • 7?+6
  • O(?3)
    • 2?3+12n2+5
    • 4?3
  • O(?3log?)
    • 4?3log?
  • O(?4)
    • ?4−12?3
  • O(1.5?)
    • 1.5?
  • O(?!)
    • ?!

因此,您的输出本质上存在一个区别:O(?3log?) 不是 O(?3):第一个是更大的顺序:

我们可以通过反证法来证明这一点。如果我们暂时假设 O(?3log?) 是 O(?3),那么我们可以找到一个 ?0 和一个? 使得 ?3log? ≤ ??3 对于所有 ? > ?0。但这意味着 log? ≤ ? 或 ? ≤ 2?。这对于任何 ? > 2? 都不成立,因此命题不成立。

另一个更正:标签“指数”和“阶乘”在您的输出中被反转了。

O(?!) 是阶乘,O(1.5?) 是指数。

【讨论】:

    猜你喜欢
    • 2021-02-11
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 2018-10-19
    • 1970-01-01
    相关资源
    最近更新 更多