就目前的情况来看,这个问题并不适合我们的问答形式。我们希望答案能得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或广泛讨论。如果您觉得这个问题可以改进,并可能重新打开,请访问帮助中心寻求指导。7年前关门了。在计算方法调用的时间复杂度时,我是否也必须考虑方法的复杂度,还是将复杂度视为常数时间?谢谢,谢谢
cpjpxq1n1#
你必须考虑这个方法的复杂性。下面是一个简单的例子来说明这一点:假设你有一个算法,对矩阵的所有元素求和;你可以做:
sum = 0 for (i = 0; i < m.M; ++i) for (j = 0; j < m.N; ++j) sum += m[i, j];
或:
sum = 0 for (i = 0; i < m.M; ++i) sum += sumRow(m, i);
对于sumrow:
for (j = 0; j < m.N; ++j) sum += m[i, j]; return sum
如您所见,您不能认为sumrow函数具有恒定的复杂性,因为它的执行时间取决于问题的维度。但是,如果方法不依赖于任何维度,则将其视为在恒定时间内执行。例如,可以在求和之前投影值:
sum = 0 for (i = 0; i < m.M; ++i) for (j = 0; j < m.N; ++j) sum += project(m[i, j]);
然后将项目视为常量时间,因为它只依赖于标量值,而不依赖于矩阵的维数。
1条答案
按热度按时间cpjpxq1n1#
你必须考虑这个方法的复杂性。
下面是一个简单的例子来说明这一点:假设你有一个算法,对矩阵的所有元素求和;你可以做:
或:
对于sumrow:
如您所见,您不能认为sumrow函数具有恒定的复杂性,因为它的执行时间取决于问题的维度。
但是,如果方法不依赖于任何维度,则将其视为在恒定时间内执行。
例如,可以在求和之前投影值:
然后将项目视为常量时间,因为它只依赖于标量值,而不依赖于矩阵的维数。