【发布时间】:2014-09-17 08:41:07
【问题描述】:
我有一个n x n 矩阵X_{ij},如果图中的节点i 和节点j 属于同一个集群,则i-j-th 条目为1,否则为0。该矩阵是用于在图中查找社区的优化算法的结果。
我想将该矩阵转换为包含n 条目的列表,其中对于每个i-th 条目,我可以关联一个整数,该整数表示i-th 节点所属的单独集群。
例如,在python中,我的矩阵如下(在这种情况下节点0和1属于社区A,而节点2和3属于社区B)
matrix([[ 0., 1., 0., 0.],
[ 1., 0., 0., 0.],
[ 0., 0., 0., 1.],
[ 0., 0., 1., 0.]])
表示节点0属于同一个社区(节点从0到n-1) 如何从该矩阵中提取这样的列表:
[A,A,B,B]
列表的第 i 个元素代表节点所属社区的索引? (我使用 A 和 B 只是为了更清楚,但这些索引实际上是整数)
【问题讨论】:
-
是否保证这种关系是对称的 (
X_{ij} = X_{ji})和传递的 (X_{ij} = 1, X_{jk}= = 1 -> X_{ik} = 1)? -
矩阵是一个不连贯图的表示。您需要找到连接的组件。扫描矩阵并执行简单的 BFS 或 DFS。当你不能更进一步时,取任何剩余的未扫描节点
-
是的,因为我得到的解决方案强制传递性和对称性。
标签: python algorithm graph cluster-analysis