如果算法时间复杂度为θ(n ^ 2),那么对于一个输入,它是否可能在O(n)中运行?

时间:2013-11-21 21:07:12

标签: complexity-theory big-o time-complexity big-theta

如果算法时间复杂度为θ(n ^ 2),那么对于一个输入,它是否可能在O(n)中运行? 通过theta的定义,似乎没有输入将在O(n)中运行。但有些人说这是可能的。

我真的想不到一个在theta(n ^ 2)中运行的算法会有一个可以在O(n)中运行的输入。

如果是真的,你可以向我解释并给我一个例子吗?

非常感谢!

3 个答案:

答案 0 :(得分:2)

我认为你的术语正在绊倒你。

算法不能是“Θ(n 2 )。” Theta表示法描述了函数的增长率。你可以说算法的运行时是Θ(n 2 ),在这种情况下,算法不能在任何输入上及时运行O(n),或者你可以说算法的最坏情况运行时是Θ(n 2 ),在这种情况下,对于某些输入,算法可能会在时间O(n)内运行(例如,插入排序)。

希望这有帮助!

答案 1 :(得分:1)

  

如果算法时间复杂度是theta(n ^ 2),那么对于一个输入它是否可能在O(n)中运行?

没有。这就是原因。假设算法的运行时间为f(n)。自f(n) = Θ(n)开始,我们就会有一些常量c0>0n0>0c0*n^2 <= f(n)代表n >= n0。让我们假设f(n) = O(n)。这意味着对于某些常量c1>0, n1>0,我们每f(n) <= c1*n都会n>=n1。然后我们会n >= max(n1, n2) c0*n^2 <= f(n) <= c1*n => c0*n <= c1 n > c1/c0不适用O。矛盾。

非正式地,您始终可以将<=视为Θ,将=视为Ω(并将>=视为{{1}})。因此,您可以将问题重新表述为:

  

如果某物等于n ^ 2则小于n?

答案 2 :(得分:0)

我的理解是,虽然Big-Oh只断言上限,但Big-Theta断言上限下界。根据定义,如果某些内容在theta(n^2)中执行,则没有性能为theta(n)的输入。

注意:这些都是指渐近复杂度。算法可以在较小的输入上执行不同的操作,即,由于隐藏的常数因素,在theta(n^2)中运行的算法可能优于(在较小的输入上)在theta(n)中运行的某些内容。