好的,所以我对编码还很陌生,我想估算一个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。