好的,所以我对编码还很陌生,我想估算一个WCET T(a,b)和函数的复杂度。示例功能:

def testFunction(self):
    x = 0
    for r in range(a):
        for c in range(b):
            if testFunction2(r, c):
                x = x + 1
return x


我知道此函数的复杂度是二次O(N ^ 2),但是我不确定要近似WCET吗?

在该函数中也不只有两个分配:

x = 0




x = x + 1



如果是这样,我该如何用T(a,b)表示分配?

数学从来都不是我的强项,但我想学习如何做到这一点。我读过的所有材料都没有以我理解的方式对其进行解释。

提前致谢。

最佳答案

def testFunction(self):
    x = 0                               # 1
    for r in range(a):                  # a
        for c in range(b):              # b
            if testFunction2(r, c):     # a*b
                x = x + 1               # depends testFunction2
    return x                            # 1


该函数WCET ab其中a = n b = n然后可以说O(n ^ 2)
如果始终testFunction2返回True,则x = x +1将执行ab次,但不会影响执行时间的总和。
最后,您总结所有这些执行时间:

(1 + a + b + a*b + a*b + 1)
2 + a + b + 2*a*b


例如,当n = 1000且a = b = n

2 + 1000 + 1000 + 2*1000*1000
2002 + 2000000


因此,当您评估这个结果时,当您有2000000时,您将看不到2002。

10-08 02:47