代码的O(),θ()和Ω()时间复杂度

时间:2013-04-29 21:47:24

标签: algorithm complexity-theory

请帮助我找到以下代码的O()θ()Ω()时间复杂性。

if(x<A) Func1(n);
else if(x<A+1000) Func2(n);
else if(x<A+5000) Func3(n);
else Func4(n);

假设:

Func1(n)=θ(n)
Func2(n)=θ(2^n)
Func3(n)=θ(logn)
Func4(n)=O(n)
Func4(n)=Ω(logn)

1 个答案:

答案 0 :(得分:1)

f成为显示代码定义的函数,让f₁...f₄表示Func1...4。如果没有提供有关xA的值的信息,那么关于f可以得出的结论最多的是f(n)的下限是适用的最小下限f₁...f₄中的任何一个,以及适用于任何f₁...f₄的最大上限的上方。这些的最小下限是Ω(n),最大上限是O(2ⁿ),因此f(n)的复杂度是Ω(n)和O(2ⁿ)。

问题(如最初所述)f₄(n)的复杂性没有明确定义,因为下面以n log n的倍数为界的函数不能被限制上面是n的倍数。但是,给定的f₄边界,O(n)和Ω(nlogn)都不在Ω(n)和O(2ⁿ)的范围之内。

编辑:修改后的问题,f₃为θ(logn),而f₄为Ω(log n)和O(n)。现在f₁...f₄上的最小下界是Ω(log n),f(n)的复杂度是Ω(log n)和O(2ⁿ)。如果没有关于xA的信息,则没有函数g(n),因此常量C₁C₂存在C₁·g(n) < f(n) < C₂·g(n)渐近,所以没有θ ()绑定可以表示为f()