以下函数的渐近时间复杂度是多少?

时间:2013-11-09 13:27:05

标签: algorithm time-complexity

我在函数的渐近复杂性上遇到了这个问题:

3个功能的复杂性如下:

f(n) = O(n)

g(n) = Big-Omega(n)

h(n) = Theta(n)

那么结果函数的渐近复杂度是什么 [f(n).g(n)] + h(n)

我可以通过基本命中和试验找出这个将是Big-Omega(n)的答案。例如,如果我说 f(n)= n g(n)= n h(n)= n 。所以我们可以说 f(n)是O(n) g(n)是Big-Omega(n) h(n)是Theta( n)的即可。现在 f(n).g(n) n 2 ,这将是 Big-Omega(n)但不是O (n)的即可。现在将其添加到h(n)是 n 2 + n 。这也是 Big-Omega(n)但不是Theta(n)

但我无法找到合适的逻辑或数学证据。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

以下是对逻辑解释的尝试:

  • f(n) = O(n)表示f的运行时间最多线性(可能是常量时间)。
  • h(n) = Theta(n)表示h运行时是线性的。
  • g(n) = Big-Omega(n)表示g的运行时间至少是线性的(可能是多项式,指数......我们不知道)。

现在让我们分析最好的情况:f(n)是常数时间,g(n)是线性的,h(n)是线性的。我们可以对函数f(n)*g(n)+h(n)说些什么呢?它也是线性的。

对于最坏的情况,我们能说些什么? 没有,因为我们对最坏情况下g(n)的行为一无所知。

所以我们可以得出结论f(n)*g(n)+h(n) = Big-Omega(n)因为这个函数在最好的情况下是线性的。