矢量点积计算的时空复杂度

时间:2010-09-19 00:50:35

标签: algorithm vector complexity-theory

算法的时间和空间复杂度是多少,它计算两个长度为n的向量之间的点积?

1 个答案:

答案 0 :(得分:11)

如果2个向量是a = [a1, a2, ... , an]b = [b1, b2, ... , bn],那么

点积由a.b = a1 * b1 + a2 * b2 + ... + an * bn

给出

要计算这一点,我们必须执行n次乘法和(n-1)次加法。 (我假设这是你所指的点积算法。)

假设乘法和加法是常数时间运算, 因此,时间复杂度为O(n) + O(n) = O(n)

在计算过程中我们需要的唯一辅助空间是保持“到目前为止的部分点积”和计算的最后一个乘积,即ai * bi

假设我们可以在恒定空间中保存这两个值, 因此,空间复杂度为O(1) + O(1) = O(1)