algorithm - 以 n 表示的 theta 表示法中 x=x+1 执行了多少次?

标签 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 并不重要,对吧?

最佳答案

回答第一部分:-

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

这个程序将运行 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),所以,

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

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

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

回答第二部分

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

您的假设完全不正确。由 j 引导的内循环对于计算 x = x+1 语句也是必要的,因为它是内循环的主体,而内循环本身是外循环的主体。

所以,在这里,x = x + 1 将被计算为

= 1 + 2 + ... + n*(lg(n) times
= [n*lg(n) * {n*lg(n)}+1]/2 times.

关于algorithm - 以 n 表示的 theta 表示法中 x=x+1 执行了多少次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30341014/

相关文章:

oop - 类和对象实例之间有什么区别?

performance - 具有数百万位模数和指数的模幂运算的极快方法

algorithm - 从矩阵中删除列后的唯一行

algorithm - 你从这个 splinter 的随机洗牌中得到什么分布?

algorithm - 微分方程 VS 算法复杂度

java - 遍历 ArrayList 并将值放入 HashMap 与仅搜索 ArrayList 的时间复杂度

java - 我如何使用正则表达式来实现包含功能?

algorithm - 找到一个 O(n) 算法,返回图中所有有趣的顶点

c++ - 堆还是红黑树?

algorithm - 计算复杂度超越时间和空间的其他资源