涉及任意两个节点的三角形数
Number of triangles involving any two nodes
假设我有一个邻接矩阵 A 表示未加权的无向图。
我想计算 B,其中 B[i][j] 是包含节点 i 和 j.
的闭合三角形的数量
有没有办法只使用线性代数从 A 计算 B?我想在 theano 中实现它。
假设i
和j
相邻。然后,包含两者的三角形的数量是连接到它们两者的其他顶点的数量k
。即
B_i,j = Sum_k (if A_i,k=1 and A_k,j=1 then 1 else 0)
这里假设邻接矩阵的对角线为0,布尔表达式可以转为单积,因为我们只用0和1:
B_i,j = Sum_k A_i,k * A_k,j
这看起来很像矩阵乘法,实际上它是:
B = A^2
但是,我们仍然假设i
和j
是相连的。要将此假设整合到最终公式中,我们只需将 B
的每个分量乘以邻接矩阵的相应条目即可。这会将 i
和 j
未连接的所有条目设置为零。所以最后的公式是:
B = (A^2) * A,
其中 ^2
是矩阵与自身的乘积,*
是分量乘法。
假设我有一个邻接矩阵 A 表示未加权的无向图。
我想计算 B,其中 B[i][j] 是包含节点 i 和 j.
的闭合三角形的数量有没有办法只使用线性代数从 A 计算 B?我想在 theano 中实现它。
假设i
和j
相邻。然后,包含两者的三角形的数量是连接到它们两者的其他顶点的数量k
。即
B_i,j = Sum_k (if A_i,k=1 and A_k,j=1 then 1 else 0)
这里假设邻接矩阵的对角线为0,布尔表达式可以转为单积,因为我们只用0和1:
B_i,j = Sum_k A_i,k * A_k,j
这看起来很像矩阵乘法,实际上它是:
B = A^2
但是,我们仍然假设i
和j
是相连的。要将此假设整合到最终公式中,我们只需将 B
的每个分量乘以邻接矩阵的相应条目即可。这会将 i
和 j
未连接的所有条目设置为零。所以最后的公式是:
B = (A^2) * A,
其中 ^2
是矩阵与自身的乘积,*
是分量乘法。