Language agnostic 这个函数的时间复杂度?
任何关于该算法时间复杂度的分析或信息都是有用的。最坏情况、最佳情况、上下限、θ/ω/大o、递归关系……等等。您的算法以指数时间(Language agnostic 这个函数的时间复杂度?,language-agnostic,big-o,time-complexity,complexity-theory,asymptotic-complexity,Language Agnostic,Big O,Time Complexity,Complexity Theory,Asymptotic Complexity,任何关于该算法时间复杂度的分析或信息都是有用的。最坏情况、最佳情况、上下限、θ/ω/大o、递归关系……等等。您的算法以指数时间(T)运行∈ Θ(c^n),c>1)。您可以使用Sigma表示法分析内部循环(…0到8^i)的迭代次数: 由于您的算法位于Θ(8^n),因此它也位于O(8^n)(渐近上界)和Ω(8^n)(渐近下界) 上述分析是在假设最终的for循环分析中的d小于或等于n的情况下进行的,在这种情况下,嵌套的两个for循环之前将占主导地位(因此我们不需要明确分析最后一个非主导for循环)
T)运行∈ Θ(c^n)
,c>1
)。您可以使用Sigma表示法分析内部循环(…0到8^i
)的迭代次数:
由于您的算法位于Θ(8^n)
,因此它也位于O(8^n)
(渐近上界)和Ω(8^n)
(渐近下界)
上述分析是在假设最终的for
循环分析中的d
小于或等于n
的情况下进行的,在这种情况下,嵌套的两个for
循环之前将占主导地位(因此我们不需要明确分析最后一个非主导for
循环)。algo(n)基本上由两部分组成:
algo(n)
for i in 0 to n {
for 0 to 8^i {
}
}
for i to 8^d {
}
及
让我们从第一个开始。假设内部循环的每次迭代都需要固定的时间,那么它的复杂性是C*8^i
。
现在,如果我们对i
的可能值求和,我们得到:
for i to 8^d
这与a=1,r=8有关,其总和为:
8^0 + 8^1 + 8^2 + .... + 8^n-1
对于n->infinity
,这可以近似为8^(n-1)/7
,我们可以得出复杂性为Θ(8^(n-1)/7)=Θ(8^n)
至于第二部分,它非常直截了当,是8^d
这给出了T(n)
在Θ(8^d+8^n)
中的总复杂性,你自己的想法是什么?我很乐意提供帮助,但我认为如果你首先诚实地尝试一下,你会学到更多。另外,请在上面添加大括号({
,}
),以便我们可以看到循环的范围。照目前的情况,似乎第三个for
循环没有嵌套在前两个循环中,这是否符合预期?对于i到8^d
,中的d
是什么?我不知道如何正确编写它,但我对时间复杂度的尝试是:(对于i=0到n,求(8^i)之和)+8^d。我现在将添加大括号。@amit搜索算法在完成之前达到的深度。它可以是任何价值。
8^0 + 8^1 + 8^2 + .... + 8^n-1
1 * (1-8 ^(n-1)) / (1-8) = 1 * (-1/7 + 8^(n-1)/7)