algorithm - 在估计算法的最坏情况执行时间 T(x,y) 时,我应该计算 if 语句吗?

标签 algorithm time-complexity

在估算算法的最坏情况执行时间 T(x,y) 时,我应该计算 if 语句吗?

def foobar(x,y):
    result = 0
    for i in range(x):
        for j in range(y):
            if self.checkSomething(x, y):
                result = result + 1
    return result

所以在计算赋值语句时我有 1+x*y。

我知道,例如T(n) 与 O(n) 不同。

最佳答案

好吧,你得算一下计算条件self.checkSomething(x,y)所花的时间,并且它始终 > 0。您将获得一个操作计数,但是当您进行复杂性分析时,您实际上并不知道每个操作需要多少时间。

因此,您是否计算 if 的评估并不重要或不。 some_unknown_timesome_unknown_time + some_other_unknown_time相同,因为您永远不会知道那些时间实际上是什么。

你可以简化整个T(x,y)等式,因为你并不真正知道所表示的每个操作的时间成本,而且你永远不会知道。因此,您可以将非递归项中的所有常数项和常数因子更改为 1,而不会改变任何实际结果。所以,例如 T(x,y) = 5x + 3y + 7相当于T(x, y) = x + y + 1 .但是T(n) = T(n-1) + 1T(n) = 2*T(n-1) + 1 不同

关于algorithm - 在估计算法的最坏情况执行时间 T(x,y) 时,我应该计算 if 语句吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40828317/

相关文章:

c# - 如何计算每帧在球体上制作的小圆圈的点数?

c++ boost有条件地从容器中删除

执行 Java 代码即可在 O(1) 内获得结果

python - 选择适当的算法来创建和计算元素共享对的排列

vb.net - 将图像文件存储在数据库中是否适合在网络中运行的桌面应用程序?

algorithm - 设计一种算法,在线性时间内找到该图的最小生成树

algorithm - 在哪里可以找到自然语言处理的维特比算法转换值?

在动态列表中查找数字桶的算法

algorithm - 有没有运行在(2 ↑ ↑ n)的算法?

algorithm - 3 数组情况下的代码复杂度