You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

关于给定双层循环算法时间复杂度上下界的推导与确认

分析双重循环算法的时间复杂度上下界

我来帮你一步步拆解这个算法的时间复杂度计算过程:

首先看算法代码:

1: for all i=1 to n*n do
2:   for all j=i to 2*i do
3:     output "hello world"
4:   end for
5: end for

步骤1:计算总执行次数

外层循环的迭代范围是i从1到,对于每个i,内层循环的ji2i,所以内层循环的执行次数是2i - i + 1 = i + 1次(包含两端的边界值)。

总执行次数f(n)就是对所有i的内层循环次数求和:

f(n) = Σ(i=1 到 n²)(i + 1)

步骤2:化简求和式

把求和式拆分成两部分:

f(n) = Σ(i=1 到 n²)i + Σ(i=1 到 n²)1

利用等差数列求和公式,第一部分的结果是n²(n² + 1)/2,第二部分就是(因为从1到n²共n²个1相加)。代入后化简:

f(n) = (n⁴ + n²)/2 + n² = 0.5n⁴ + 0.5n² + n² = 0.5n⁴ + 1.5n²

步骤3:推导时间复杂度上界

对于大O表示法(上界),我们只需要关注最高次项,因为当n足够大时,低次项对整体增长的影响可以忽略。这里最高次项是0.5n⁴,我们可以找到常数c=1n₀=2,当n≥n₀时,f(n) ≤ 1*n⁴(因为0.5n⁴ +1.5n² ≤ n⁴对于n≥2成立)。因此:
时间复杂度上界为O(n⁴)

步骤4:推导时间复杂度下界

对于Ω表示法(下界),我们需要找到常数c>0n₀>0,使得当n≥n₀时,f(n) ≥ c*g(n)

你提到初步得出下界为Ω(n³),这个结论是正确的——比如取c=0.5,当n≥1时,0.5n⁴ +1.5n² ≥ 0.5n³(因为n⁴ ≥n³当n≥1),满足Ω的定义。不过我们可以得到更精确的下界:
观察f(n)=0.5n⁴ +1.5n²,对于所有n≥10.5n⁴ ≤ f(n),所以取c=0.5n₀=1,就满足f(n)≥0.5n⁴,因此更紧的下界是Ω(n⁴)


内容的提问来源于stack exchange,提问作者Jeff Nama

火山引擎 最新活动