Algorithm 依赖循环的复杂性
2我已经开发了一个算法,我正试图以最详细的方式记录它的时间复杂性,我遇到了一个问题 算法如下所示:Algorithm 依赖循环的复杂性,algorithm,loops,complexity-theory,Algorithm,Loops,Complexity Theory,2我已经开发了一个算法,我正试图以最详细的方式记录它的时间复杂性,我遇到了一个问题 算法如下所示: for i=0:n { task 1; task 2; for j=0:i { task 3; } task 4; } 所以我记录了我的复杂性,说任务1的复杂性为O(t1)。。。 但是当我试图解释任务3时,我被卡住了,因为它基本上要执行I次,我计划说lagorithm的复杂性是任务1+任务2+任务3+任务4复杂性的n倍。由于我将依赖于n,我
for i=0:n {
task 1;
task 2;
for j=0:i {
task 3;
}
task 4;
}
所以我记录了我的复杂性,说任务1的复杂性为O(t1)。。。
但是当我试图解释任务3时,我被卡住了,因为它基本上要执行I次,我计划说lagorithm的复杂性是任务1+任务2+任务3+任务4复杂性的n倍。由于我将依赖于n,我真的不知道什么是最好的展示方式
我知道如果任务1、2和4不存在,复杂性将是O(n^2)。但我不知道如何与我之前的解释保持一致
我希望这是有道理的,谢谢你的帮助 最简单的方法可能是分别计算 任务3已执行:
1+2+3+…+n
=次
任务1、2和4分别执行n次
因此(假设每个任务需要O(1)
),我们的复杂性为
O(n(n+1)/2 + 3n) = O(n²/2 + n/2 + 3n) = O(n²)
(在大O表示法中,可以忽略常数因子和渐近较小项)
更一般地说(如果每个任务不一定需要
O(1)
),我们可以说复杂性是:
O(t3*n² + n*(t1 + t2 + t4))
其中
ti
表示任务i
所需的时间。最简单的方法可能是分别计算它们
任务3已执行:1+2+3+…+n
=次
任务1、2和4分别执行n次
因此(假设每个任务需要O(1)
),我们的复杂性为
O(n(n+1)/2 + 3n) = O(n²/2 + n/2 + 3n) = O(n²)
(在大O表示法中,可以忽略常数因子和渐近较小项)
更一般地说(如果每个任务不一定需要
O(1)
),我们可以说复杂性是:
O(t3*n² + n*(t1 + t2 + t4))
其中
ti
表示任务i
所需的时间。最简单的方法可能是分别计算它们
任务3已执行:1+2+3+…+n
=次
任务1、2和4分别执行n次
因此(假设每个任务需要O(1)
),我们的复杂性为
O(n(n+1)/2 + 3n) = O(n²/2 + n/2 + 3n) = O(n²)
(在大O表示法中,可以忽略常数因子和渐近较小项)
更一般地说(如果每个任务不一定需要
O(1)
),我们可以说复杂性是:
O(t3*n² + n*(t1 + t2 + t4))
其中
ti
表示任务i
所需的时间。最简单的方法可能是分别计算它们
任务3已执行:1+2+3+…+n
=次
任务1、2和4分别执行n次
因此(假设每个任务需要O(1)
),我们的复杂性为
O(n(n+1)/2 + 3n) = O(n²/2 + n/2 + 3n) = O(n²)
(在大O表示法中,可以忽略常数因子和渐近较小项)
更一般地说(如果每个任务不一定需要
O(1)
),我们可以说复杂性是:
O(t3*n² + n*(t1 + t2 + t4))
其中
ti
表示任务i
需要多长时间。任务3将执行1+2+3++n=n*(n+1)/2次。因此,任务3的时间复杂度仅为O(n^2)。任务3将执行1+2+3++n=n*(n+1)/2次。因此,任务3的时间复杂度仅为O(n^2)。任务3将执行1+2+3++n=n*(n+1)/2次。因此,任务3的时间复杂度仅为O(n^2)。任务3将执行1+2+3++n=n*(n+1)/2次。因此,任务3的时间复杂度仅为O(n^2)。