2n ^ 2 + n的复杂性

时间:2013-06-01 20:21:06

标签: complexity-theory asymptotic-complexity

如果2n^2 + n的24个单位时间内可以解决复杂性问题n = 2,那么n = 4需要多长时间?

我被告知答案是48但我相信它应该是24 ^ 2,因为算法的复杂性是O(n^2)

感谢是否有人可以启发我。

4 个答案:

答案 0 :(得分:2)

大O符号只是渐近符号。严格地说,f(n)= O(n ^ 2)意味着存在A,B实数和n0整数,使得对于n> 1,An ^ 2 <= f(n)<= Bn ^ 2。 = n0。

因此,首先如果n&lt; n0趋势甚至不必遵循n ^ 2 。其次,对于n> = n0,只能保证f(n)是有界的(如上所述)。如果你想近似,O(n ^ 2)意味着对于大n你可以删除低阶项,f(n) - &gt;但是,对于小n,这将引入显着的误差。

在你的情况下,你有完整的表演功能形式,f(n)= 2n ^ 2 + 2,所以你应该使用它!

假设每个步骤花费时间T0为恒定时间C,则T(n)= T0 *(2n ^ 2 + n)+ C. 如果C = 0 ,则:

  1. 查找T0:T(2)= 24 = T0 *(2(2)^ 2 + 2) =&GT; T0 = 2.4小时
  2. 使用T0表示n = 4,T(4)=(2.4小时)*(2(4)^ 2 + 4)= 86.4小时

答案 1 :(得分:2)

复杂度O(f(n))包括采用c * f(n)+ d时间量的所有计算,其中c和d是常数。如果d = 0则:

在n = 2并且复杂度O(2n ^ 2 + 2)为24:

的情况下

24 =(2 * 2 ^ 2 + 2)* c,因此c = 24/10 = 2.4

现在我们计算n = 4:

(2 * 4 ^ 2 + 4)* 2.4 = 36 * 2.4 = 86.4单位时间

如果d不为0,则c =(24-d)/ 10,对于n = 4,则需要

36 *(24-d)/ 10 + d = 86.4 + 0.9d

因此,答案不可能是48,这另外意味着线性算法

答案 2 :(得分:1)

我当然认为不会是24^2。由于您正在讨论O(n^2),并且您将获得一个示例,其中n = 2需要24个单位的时间,因此对于n = 4,它将花费大约4倍的时间来完成({{ 1}}; 2^2 = 4 - 大约4次)。

如果您要以不同方式计算它,请将4^2 = 16插入n = 2,然后获得2*n^2 + n。如果10,则意味着每个周期需要2.4个单位的时间。然后,插入10 = 24,您获得n = 4并乘以2*4^2 + 4 = 36即可获得2.4

答案 3 :(得分:0)

使用Ruby作为数学语言,OP的公式是

f = -> x { 2 * x ** 2 + x }

(1)假设算法的一步需要1个单位时间,答案为50,因为常数项c

c = 24 - f.( 2 ) #=> 10
# and
c + f.( 4 ) #=> 50

根据这个假设,答案是50。

(2)但是,如果我们允许算法的一步采用e个时间单位而不是1个时间单位,则常量c将为:

24 - e * 10

n == 4的运行时间为

24 + e * 26        # gives 50 for e == 1

(3)有一个额外的假设,即常数时间为零(即给定的公式完全),我们有

24 - e * 10 == 0

CandidebcorsoMilky Dinescu的答案适用。

虽然OP问题并没有从字面上说明1步== 1时间单位,但我仍然认为这是作者的意图,也是基于50的典型,易于检查的教科书结果。