使用igraph python从图形中提取特定组件
问题描述: 目标是提取某个顶点所属的组件,以计算其大小 守则的步骤:使用igraph python从图形中提取特定组件,python,python-3.x,igraph,connected-components,Python,Python 3.x,Igraph,Connected Components,问题描述: 目标是提取某个顶点所属的组件,以计算其大小 守则的步骤: 使用该方法获取图形中所有连接组件(c.c)的列表 然后,在每次检查某个节点是否属于c.c列表时,迭代该列表 当它被发现时,我计算它的大小 代码如下: def sizeofcomponent(clusters, vertex): for i in range(len(clusters)): if str(vertex) in clusters.subgraphs()[i].vs["name"]:
- 使用该方法获取图形中所有连接组件(c.c)的列表
- 然后,在每次检查某个节点是否属于c.c列表时,迭代该列表
- 当它被发现时,我计算它的大小
def sizeofcomponent(clusters, vertex):
for i in range(len(clusters)):
if str(vertex) in clusters.subgraphs()[i].vs["name"]:
return(len(clusters.subgraphs()[i].vs["name"]))
问题是,这段代码将用于非常大的图形,而这种方法大大降低了代码的速度。有什么办法可以改进吗
编辑01:算法工作原理说明
- 执行以下代码时(i为顶点):
cls = components.clusters()
c = cls.membership[i]
因为列表c中节点的ID与节点的名称不匹配。例如:cls.membership[i]将给出异常错误:列表超出范围。而不是正确的结果:4
此外,根据您的代码,在您的情况下,大小的计算方式如下:
只需执行以下操作即可获得组件顶点
i
所属
components=G.clusters()
c=组成部分。成员资格[i]
然后,您可以使用
s=组件大小(c)
我已编辑了我的问题以对您的答案进行评论。请查看。
cls = components.clusters()
c = cls.membership[i]
c = components.membership[i]
s = components.membership.count(c)