0

鉴于:

  • 向量 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?

谢谢。

4

1 回答 1

0

Your .* M multiplication is just a selection, so it could be easier to just add up the selected elements like this (in pseudocode, as you give no indication of the language):

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

Instead of doing all 2*n^2 multiplications and n^2 additions you would only perform 2*k additions and k multiplications (where k is the number of nonzero entries of M, which is at most n^2).

For the second operation I see no way to accelerate them, so you have to compute them explicit.

于 2013-01-29T17:12:21.170 回答