【问题标题】:Is Big O notation merit Time Complexity or Rate of Growth?大 O 表示法是否值得时间复杂性或增长率?
【发布时间】:2021-12-28 18:51:16
【问题描述】:

我正在通过互联网学习数据结构和算法,我学到了;

  • 时间复杂度是算法运行所花费的时间,作为输入长度的函数
  • 大 O 表示法是计算时间复杂度的指标
  • 增长率是算法成本随着其输入规模的增长而增长的速率。

假设有一个算法,其操作总数为f(n) = n^2+3n+1。 那么如果这个算法的时间复杂度和增长率是多少呢? 都是O(n^2)代表吗?

我不清楚使用大 O 表示法表示时,时间复杂度和增长率之间有什么区别。

请帮助我对条款有一个清晰的认识。将不胜感激。

提前谢谢你!

【问题讨论】:

  • 我认为“增长率”是一种不太正式的方式来表达“复杂性”,通常是时间复杂性。 “时间复杂度”是指运行时间(在一些基本操作中衡量)作为输入大小的函数,有时只是输入大小的函数,近似为大 O 或大 Theta。
  • amount of time taken by an algorithm to run 的定义严格来说是不正确的。增长率是一个更好的定义,与时间复杂性不符。它显示了执行时间将如何从输入大小增长/缩放。时间复杂度/增长率big O notation 当然与执行时间measured in miliseconds, seconds, etc 相关,但是您可以使用一种扩展性更差的算法(冒泡排序 - O(n^2))实际上执行得更快(快速排序O(n logn))元素数量(例如,4 个元素)。
  • 增长率不是衍生品吗?就像 O(1) 的增长率为 0。
  • @Calculuswhiz 我不确定,因为我不熟悉rate of growth 术语。该定义可以理解为时间复杂度的导数,如果它是时间复杂度本身增长的速度。但从某些来源来看,增长率似乎被用作时间复杂度的同义词,并表示为大 O。
  • > 运行时间作为输入函数增加的速率称为增长率。​​span>

标签: algorithm time-complexity big-o


【解决方案1】:

Big O 描述了两个增长率和时间复杂度。然而,正如在 cmets 中所提到的,前者是作为派生的。与 O(1) 的情况一样,时间是恒定的,因此没有相关的增长率,但时间复杂度仍然为 1。

在您的 O(n^2) 算法的情况下,运行时间(时间复杂度)将以 n^2 的预期速率(增长率)增长。

同样在Quora post 的大致相同问题中,答案指出“运行时间取决于当前输入大小,并且增长率描述了运行时间将如何随着输入大小的增长而增加。”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    相关资源
    最近更新 更多