请帮助我找到以下代码的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)
答案 0 :(得分:1)
让f
成为显示代码定义的函数,让f₁...f₄
表示Func1...4
。如果没有提供有关x
和A
的值的信息,那么关于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ⁿ)。如果没有关于x
和A
的信息,则没有函数g(n)
,因此常量C₁
和C₂
存在C₁·g(n) < f(n) < C₂·g(n)
渐近,所以没有θ ()绑定可以表示为f()
。