我知道n的嵌套循环的时间复杂度为O(n ^ 2)。但是如果我有如下的嵌套循环,
for(i=0;i<n/2;i++)
for(j=0;j<n/2;j++)
...
...
如何计算此代码的时间复杂度。也是O(n ^ 2)吗?如果是,怎么办?
答案 0 :(得分:1)
也是O(n ^ 2)吗?如果是,怎么办?
是的。
您要做的就是计算迭代总数(乘积规则为None
),并记住Big-O表示法会忽略常量。渐近分析会丢弃常数,因为 class CustomModule(nn.Module):
def __init__(self):
super(CustomModule, self).__init__() # Initialize self._modules as OrderedDict
self.conv1 = nn.Conv2d(1, 20, 5) # Add key conv1 to self._modules
self.conv2 = nn.Conv2d(20, 20, 5) # Add key conv2 to self._modules
趋于无穷大时它们无关紧要。换句话说,n/2 * n/2 = n^2 / 4
和n
都是线性函数,尽管f(n) = n
的增长速度快于g(n) = 2n
。渐进分析只在乎增长率的类别。
另请参阅: