二分图理论 - 从二分邻接矩阵中找出成对重叠(共享边)

时间:2014-02-14 21:20:36

标签: algorithm graph-theory graph-algorithm discrete-mathematics adjacency-matrix

我有一个存储在邻接矩阵 A (100 * 1900),100行,1900列的二分图。    简单地说,我表示代表factorA的100行,代表factorB的1900列。该图表示100因子A和1900因子B之间的联系,因此它是一个二分图。

因此,矩阵是| factorA | * | factorB |,矩阵的维数是100 * 1900。

我需要找到factorB之间的成对重叠。   一种方法是获取 A 并转换 A ,表示为 T(A)

然后得到 A'= T(A)* A ,所以 A'将是100 * 100矩阵,然后是项目 A' [i,j] 对应于factorA i 共享的factorB数量,factorA j 即可。

为什么上述算法有效?可以提供任何参考出版物或数学证据吗?

1 个答案:

答案 0 :(得分:0)

设A'= A *转置(A)。

'[i,j]是A的第i行和A的第j行的内积。假设这两行如下所示:

行(A,i)= [0,0,1,0,1,1,0,1]
row(A,j)= [1,0,1,1,0,1,1,0]

这两者的元素产品是

row(A,i)。* row(A,j)= [0,0,1,0,0,1,0,0]

这两行的内积是这些值的总和,2。这就是为什么A'[i,j]是第i行和第j行之间的共享连接数的直觉。

如果你看一下转置(A)* A,你同样可以找到列之间的共享连接。