优化矩阵乘法

时间:2013-01-29 16:41:35

标签: matrix-multiplication

假设:

  • 向量v1,v2(nx1),其中每个向量中的条目位于区间[0,1]中。 v1和v2可以是稀疏的或密集的

  • 密集对称矩阵M(nxn)(实际上是条目为0或1的逻辑矩阵)

  • 密集矩阵E(nxn)其中E(i,j)= 1-E(j,i)其中E(i,j)在区间中0,1 [。 这种矩阵的名称是否有E(i,j)= 1-E(j,i)?

我想计算s = Sum [(v1 * v2 ^ T)。* M]其中。*是逐元素乘法运算,Sum是所得矩阵的所有条目的总和。 ^ T是换位操作。

给定s我想获得x = Sum [(v1 * v2 ^ T)。* E] / s

是否有任何计算上更有效的方法来执行这些乘法并获得x?

感谢。

1 个答案:

答案 0 :(得分:0)

你的.* M乘法只是一个选择,因此可以更容易地将这些选定的元素加起来(在伪代码中,因为你没有给出语言的指示):

sum = 0;
for i=1 to n
    for j = i to n
        if M(i,j) then
           sum += v1(i)*v2(j)+v1(j)*v2(i);
        endif
    endfor
 endfor

不是进行所有2 * n ^ 2次乘法和n ^ 2次加法,而是仅执行2 * k次加法和k次乘法(其中k是M的非零项的数量,其最多为n ^ 2)。

对于第二个操作,我认为无法加速它们,所以你必须明确地计算它们。