如何找到一个Tight Big O表达式

时间:2015-08-30 22:43:29

标签: asymptotic-complexity

for(i: 1 to n^2)
   x = x + 1;
return x + 1;

N是输入的数量。 N> 1且倾向于无穷大 我知道最差(也是最好)的案例运行时间是n^2 + 1。因此,它将是O(n^2)。但是,我如何找到它是否是一个紧张的大O表达式?我们如何找到一个紧张的大O表达?那是什么?

1 个答案:

答案 0 :(得分:0)

让你的函数为f(n)

你已经知道最好的情况是n ^ 2(因为忽略了输入的常量,所以忽略+1)。

更正式:Ω(n ^ 2) - >意味着你可以找到函数u(n)和常数k,使得k * u(n)< = f(n)就复杂性而言。

正如你所说,最坏的情况也是n ^ 2。 正式:O(n ^ 2) - >意味着你可以找到函数v(n)和常数k,使得k * v(n)> = f(n)就复杂性而言。

由于Ω和O是函数集,因此Theta被定义为Ω和O的交点。“Theta是上限和下限。”

交点是n ^ 2 - > Theta(n ^ 2)

以描述性方式:

f(n)增长不比u(n)快得多(或等于)。 f(n)的增长速度不比v(n)快得多(或等于)。 - > f(n)的增长与n ^ 2

完全相同

请记住,经常Ω和O是不同类别的函数的集合。

E.g。 Ω(log n)(在树中搜索)和O(n)(在字符串中搜索)处理这种情况时,您无法指定精确的Theta值。