找出嵌套循环的复杂性
Finding the Complexity of Nested Loops
我得到了循环伪代码:
其中 "to" 等同于 "<="
sum = 0;
for i = 1 to n
for j = 1 to i^3
for k = 1 to j
sum++
我知道最外层的循环 运行s n
次。
两个内部循环也 运行 n times
吗? (使整个复杂度 O(n^3)
.
例如 n = 5
那么:
1 <= 5 2<= 5
j = 1 <= 1^3 2 <= 2^3 = 8
k=1 <= 1 2 <= 2
每个循环都会重复 n 次,这样就 n^3
?
这似乎是一个棘手的问题,那些内部循环比 n
.
更复杂
外循环是n
。
下一个循环从 到 i^3
。在外循环结束时,i 将等于 n
。这意味着这个循环最后将在 n^3
。从技术上讲,它应该是 (n^3)/2
,但我们忽略它,因为这是大 O。
第三个循环转到 j
,但在前一个循环结束时 j
将等于 i^3
。我们已经确定 i^3
等于 n^3
.
看起来像:
- 第一个循环:
n
- 第二个循环:
n^3
- 第三个循环:
n^3
这看起来像是n^7
。不过,我希望其他人可以验证这一点。一定要爱大O.
您可以使用 Sigma 表示法显式展开循环中的基本操作数(设 sum++
为基本操作):
在哪里
因此,使用大 O 表示法的复杂度为 O(n^7)
。
我得到了循环伪代码:
其中 "to" 等同于 "<="
sum = 0;
for i = 1 to n
for j = 1 to i^3
for k = 1 to j
sum++
我知道最外层的循环 运行s n
次。
两个内部循环也 运行 n times
吗? (使整个复杂度 O(n^3)
.
例如 n = 5 那么:
1 <= 5 2<= 5
j = 1 <= 1^3 2 <= 2^3 = 8
k=1 <= 1 2 <= 2
每个循环都会重复 n 次,这样就 n^3
?
这似乎是一个棘手的问题,那些内部循环比 n
.
外循环是n
。
下一个循环从 到 i^3
。在外循环结束时,i 将等于 n
。这意味着这个循环最后将在 n^3
。从技术上讲,它应该是 (n^3)/2
,但我们忽略它,因为这是大 O。
第三个循环转到 j
,但在前一个循环结束时 j
将等于 i^3
。我们已经确定 i^3
等于 n^3
.
看起来像:
- 第一个循环:
n
- 第二个循环:
n^3
- 第三个循环:
n^3
这看起来像是n^7
。不过,我希望其他人可以验证这一点。一定要爱大O.
您可以使用 Sigma 表示法显式展开循环中的基本操作数(设 sum++
为基本操作):
在哪里
因此,使用大 O 表示法的复杂度为 O(n^7)
。