我在函数的渐近复杂性上遇到了这个问题:
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)。
但我无法找到合适的逻辑或数学证据。有人可以帮我解决这个问题吗?
答案 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)
因为这个函数在最好的情况下是线性的。