函数的Big-O增长率

函数的Big-O增长率,big-o,big-theta,Big O,Big Theta,我想了解更多关于Big-O的信息,并找到了以下信息: “如果f(x)=O(g(x))则f(x)的增长率逐渐小于或等于g(x)” 在这种情况下,渐进意味着什么? 我也很难理解为什么大θ不依赖于我们使用的计算机? 有人能提供关于这两个问题的更多信息吗?在本文中,“渐近”一词指的是“当x趋于无穷大时”。当有人说“f(x)渐近增长慢于g(x)”,他们的意思是,对于非常大的x值,函数g(x)将增长快于函数f(x)。这意味着对于足够大的x,只要f(x)≥ 1和g(x)≥ 1,g(x)的值最终总是大于函数f(

我想了解更多关于Big-O的信息,并找到了以下信息:

“如果
f(x)=O(g(x))
f(x)
的增长率逐渐小于或等于
g(x)

在这种情况下,渐进意味着什么? 我也很难理解为什么大θ不依赖于我们使用的计算机? 有人能提供关于这两个问题的更多信息吗?

在本文中,“渐近”一词指的是“当x趋于无穷大时”。当有人说“f(x)渐近增长慢于g(x)”,他们的意思是,对于非常大的x值,函数g(x)将增长快于函数f(x)。这意味着对于足够大的x,只要f(x)≥ 1和g(x)≥ 1,g(x)的值最终总是大于函数f(x)

关于这个问题:

我也很难理解为什么大θ不依赖于我们使用的计算机

虽然O、Θ和Ω符号在CS中被广泛用于描述运行时,但它们实际上并不是这个意思。从技术上讲,此符号用于量化函数的增长率,而不管这些函数实际上意味着什么。例如,您将发现离散数学中使用的大O符号,它估计ln!正如n ln n-n+O(logn),其中O(logn)表示“某个函数的增长率为O(logn)。”在CS中,当我们说一个算法是O(n)时,真正的意思是“描述这个函数运行时的函数是O(n)。”更恰当地说,你会看到类似“算法的运行时是O(n)”或“算法需要时间O(n)”的表达式强调big-O符号用于描述算法的运行时,而不是算法本身。从这个意义上说,你的问题“为什么Θ符号不依赖于计算机?”的一个答案是“Θ符号只是量化函数的增长率,与计算机无关。”

从另一个意义上说,为什么特定的计算机不重要,是因为Θ符号谈论的是渐近运行时,而不是绝对运行时。如果一个算法有运行时Θ(n),这意味着该算法的运行时可以作为某种线性函数进行缩放。该算法的运行时作为输入的大小实际上可能是100n+137或200000N-15,因为重要的是这些运行时的增长方式,而不是运行时本身。如果在不同的计算机上运行相同的代码,根据所选计算机的不同,运行可能需要更多或更少的时间,但几乎可以肯定的是,它不会从线性缩放变为二次缩放。这意味着渐进地,运行时是相同的,尽管运行时可能完全不同


希望这有帮助

非常感谢,这是一个精彩的解释!