如何计算以下表达式的大 O 符号?
How to calculate the Big O notation of the following expression?
我想为以下表达式找到大 O 表示法。
可以表示为 [其中1<=l<=alpha,beta是整数向量]
如果我错了请纠正我....
计算该总和的算法为:
BigInteger sum = BigInteger.ZERO;
for (int i = 1; i <= alpha; i++) {
sum = sum.add(BigInteger.ONE.shiftLeft(beta[i]));
}
现在使用 BigInteger
进行 N 位移位或 N 位加法的复杂度为 O(N)
。
因此,上述计算的总体复杂度将受到 alpha * min(beta[i])
和 alpha * max(beta[i])
的限制。
此外,实际复杂度还取决于 顺序 beta[i]
值。
如果alpha
和beta
值足够小,可以使用原始整数运算,那么复杂度是O(alpha)
,因为加法和移位都是O(1)
操作。
另一方面,如果您想要该函数的复杂性 class,它将类似于 O(alpha * 2 ^ (max(beta[i])))
。请注意,这实际上是标量和矢量的函数,我不确定这在数学上是否合理。 (向量趋于无穷大是什么意思?)
我想为以下表达式找到大 O 表示法。
可以表示为
如果我错了请纠正我....
计算该总和的算法为:
BigInteger sum = BigInteger.ZERO;
for (int i = 1; i <= alpha; i++) {
sum = sum.add(BigInteger.ONE.shiftLeft(beta[i]));
}
现在使用 BigInteger
进行 N 位移位或 N 位加法的复杂度为 O(N)
。
因此,上述计算的总体复杂度将受到 alpha * min(beta[i])
和 alpha * max(beta[i])
的限制。
此外,实际复杂度还取决于 顺序 beta[i]
值。
如果alpha
和beta
值足够小,可以使用原始整数运算,那么复杂度是O(alpha)
,因为加法和移位都是O(1)
操作。
另一方面,如果您想要该函数的复杂性 class,它将类似于 O(alpha * 2 ^ (max(beta[i])))
。请注意,这实际上是标量和矢量的函数,我不确定这在数学上是否合理。 (向量趋于无穷大是什么意思?)