以n表示的以θ表示法执行x = x + 1的次数是多少?

时间:2015-05-20 05:31:37

标签: algorithm language-agnostic time-complexity complexity-theory analysis

我在夏天参加数据分析和算法。

问题:对于执行语句x = x + 1的次数,用n表示Θ符号。

for i = 1 to 526
    for j = 1 to n^2(lgn)^3
       for k = 1 to n 
           x=x+1

我对如何找到答案很困惑。第一行是526,然后第二行显然是n ^ 2倍(lgn)^ 3,但那可能是3(n ^ 2)lgn?然后第三行就是n。因此组合它们将是526 * n ^ 3(lgn)^ 3,并且只有n它将类似于Θ(n ^ 3)(lgn)^ 3。我不确定。

还要确保我理解这种类型的问题

for i = 1 to |nlgn| 
    for j = 1 to i
        x=x+1

答案只是nlgn,因为第二行的i不重要吗?

2 个答案:

答案 0 :(得分:3)

回答 第一部分 : -

    String[] strArr = input.split(" ") ; 

    if(strArr[0].equals("define"){
    }

该程序将运行526 * n ^ 2 *(lg n)^ 3 * n次= 526 * n ^ 3 *(lg n)^ 3次。

因此,x = x + 1将执行526 * n ^ 3 *(lg n)^ 3次。

来到Big-theta符号,

对于任何n> 1,n总是大于(lg n),所以,

for i = 1 to 526
for j = 1 to n^2(lgn)^3
   for k = 1 to n 
       x=x+1

对于一些正常数c1< 526和c2> 526,所以big-theta符号将是

  

θ(n ^ 3 *(lg n)^ 3)。

回答 第二部分

  c1 * n^3 <= 526 * n^3 * (lg n)^3 <= c2 * n^3 * (lg n)^3

您的假设非常不正确。由j引导的内环也是评估x = x + 1语句所必需的,因为它是内环的主体,它本身就是外环的主体。

所以,这里,x = x + 1将被评估为

for i = 1 to |nlgn| 
for j = 1 to i
    x=x+1

答案 1 :(得分:3)

第二个例子的答案不是nlogn。您不能简单地将两个for循环的边界相互相乘。第二个循环形成一个西格玛,因为第二个循环从1移动到i,最多可以是nlogn。这个sigma将是1 + 2 + ... + nlogn ...这个sigma的总和可以使用自然数之和的公式找到。因此sigma是(nlogn *(nlogn + 1))/ 2。