以 n 表示的 theta 表示法中 x=x+1 执行了多少次?
How many times is x=x+1 executed in theta notation in terms of n?
我在暑假学习数据分析和算法。
问题:根据语句 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.
第二个例子的答案不是nlogn。您不能简单地将两个 for 循环的边界相乘。第二个循环形成一个 sigma,因为第二个循环从 1 移动到 i,最多可以是 nlogn。这个 sigma 是 1+2+...+nlogn... 这个 sigma 的总和可以用自然数和的公式求出。因此西格玛是 (nlogn*(nlogn+1))/2.
我在暑假学习数据分析和算法。
问题:根据语句 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.
第二个例子的答案不是nlogn。您不能简单地将两个 for 循环的边界相乘。第二个循环形成一个 sigma,因为第二个循环从 1 移动到 i,最多可以是 nlogn。这个 sigma 是 1+2+...+nlogn... 这个 sigma 的总和可以用自然数和的公式求出。因此西格玛是 (nlogn*(nlogn+1))/2.