考虑以下伪代码:
a< - [0,0,0](将3D向量初始化为零)
b< - [0,0,0](将3D向量初始化为零)
c< - a。B(两个向量的点产物)
在上面的伪代码中,flop计数是什么(即浮点操作)?
更一般而言,我想知道的是,在查看算法的复杂性时,变量的初始化是否计入了总浮点操作。
在您的情况下, a
和 b
矢量都是零,我认为使用零来描述或解释Flops操作是一个好主意。我要说的是,给出了带有条目A1,A2和A3的向量A,并且还给出了带有条目B1,B2,B3的向量B。两个向量的点产物等于给出的ATB
aTb = a1*b1+a2*b2+a3*b3
在这里我们有3个乘法操作 (i.e: a1*b1, a2*b2, a3*b3)
和2加法操作。我们总共有5个操作或5个拖鞋。如果我们想将此示例概括为n维矢量A_N和B_N,则我们将拥有n次乘法操作和n-1
乘以添加操作。总的来说,我们最终将获得n+n-1 = 2n-1
操作或拖鞋。我希望我在上面使用的示例可以为您提供直觉。