在理解Big Oh符号的同时问题?

时间:2015-08-07 13:09:34

标签: big-o time-complexity

根据算法和Introduction to Algorithms的CourseEra课程 ,当存在常数n0和C使得该不等式成立时,函数G(n),其中n是输入大小,被认为是F(n)的大符号

F(n)< = C * G(N)(对于所有N> N0)

现在, 这个数学定义对我来说非常清楚。

但正如我今天老师教给我的那样,我很困惑!

他说" Big - Oh Notations是函数的上限,它就像两个数字的LCM,即Unique和大于函数"

我不认为这句话是正确的,大喔符号真的很独特吗?

Morover, 考虑到Big Oh符号,我也很困惑自己为什么我们将Big Oh符号推向最高学位。 (我们可以通过很好的常量选择轻松证明数学上的不等式)但它的实际用途是什么? 我的意思是它意味着什么? 我们甚至可以将F(n)作为常数1的F(n)的大哦符号!

我认为它只显示了最高学期的运行时间依赖性!请清除我的怀疑,因为我可能从我的书中错误地理解了它或我的老师犯了错误?

1 个答案:

答案 0 :(得分:1)

  

大哦符号真的很独特吗?

是和否。按照纯粹的公式,Big-O当然不是唯一的。但是,为了实现其目的,人们实际上试图找到的不只是某些上限,而是最低上限。这使得有意义的“Big-O”独一无二。

  

我们甚至可以将F(n)作为常数的F(n)的大Oh表示法   1!

是的,我们可能会这样做。但是,Big-O用于将函数/算法类相互关联。假设F(n)与X(n)相关,如F(n)与X(n)有关,就是使用G(n)= F(n)得到的。没什么价值。

这就是为什么我们试图找到唯一的最低G来满足等式。 G(n)通常是一个相当平凡的函数,如G(n)= n,G(n)=n²,或G(n)= n * log(n),这使我们可以更容易地比较算法,因为我们很容易看出,例如,对于所有n> =某事,G(n)= n小于G(n)=n²。

有趣的是,大多数算法的复杂性收敛于大n的简单G(n)之一。你也可以说,通过观察大的n,我们试图将“重要”与F(n)中不那么重要的部分分开;然后我们只省略F(n)中的次要项并得到简化函数G(n)。

实际上,我们也希望从技术细节中抽象出来。例如,如果我有F(n)= 4 * n和E(n)= 2 * n,我可以使用两倍于F算法的CPU,并且与E一样好,而且与E的大小无关。输入。也许一台机器有一个sqare root的专用指令,因此SQRT(x)是一步,而另一台机器需要更多的指令来获得结果。我们希望从中抽象出来。

这也意味着另一个观点:如果我有一个问题要解决,例如“计算x(y)”,我可以将解为“result:= x(y)”,O(1)。但这不算算法。算法的规范必须包括相关的细节级别a)有意义且b)Big-O可以访问。