我需要使用Big-O表示法计算以下等式的计算复杂度:
此处,m
是接入点的总数(可能是复杂度方面的迭代次数,i
是个别接入点)。我了解了Big-O表示形式this博客。此外,我在this link发现了一个类似的问题。在上面的等式中,d
是用4次运算(乘法,减法,除法和幂)计算的距离。如上面的等式所示,w
用两个运算(幂和除法)计算。计算xw
和yw
,每个操作两次(乘法和除法)。
因此,我已经发现上述算法的Big-O表示法为:
4*[m]+2*[m]+2*[m]+2*[m]
这是对的吗?它可以近似为O(m)
吗?
此外,上述算法(方程)与下一算法相结合,其计算复杂度为O(N)
,N
为迭代次数。在这里,N>>m
。 Big-O表示法的最终计算复杂度是多少?
谢谢。
更新:
带有w
和x
的下标y
只是一种表示法。这不是迭代。迭代仅为m
。例如。 i = 1,2,3,4,5,......,m
。这两种算法以流水线方式运行。例如,首先操作具有m
次迭代的算法,并且该算法的输出被馈送(作为输入)到具有N
次迭代的下一算法。因此,当完成m
次迭代(算法1)时,接着进行N
次迭代(算法2)。我的问题类似于两个没有嵌套的循环,并且N>>m
具有不同的迭代。
for(int i=0; i<m; i++){
System.out.println(i);
}
for(int j=0; j<N; j++){
System.out.println(j);
}
最终的计算复杂性是什么?
答案 0 :(得分:1)
是的,从i=1
到i=m
的总和需要O(m)
次。所有其他操作都是不变的,你没有任何总和或类似的东西。
关于您的N
值,您没有提供足够的信息。我们必须知道如何计算N
或如何与m
相关联。
另外你应该考虑以下约束 - 你能提供一些数字或方程式永远无法达到的最大值(甚至令人难以置信的)吗?通常,带数字的操作被认为是常量,因为它们是在32或64位数字上制作的,这些数字总是需要恒定的时间。
但是如果你有一些具有令人难以置信的长数的方程(如数百个字符长或更长),那么数字的大小必须考虑复杂性。 (你可以想象,将两个长度为数百万字符的数字乘以比用2x2做同样多的数字)