如何将函数应用于图形/网络中的每个连接组件?
Posted
技术标签:
【中文标题】如何将函数应用于图形/网络中的每个连接组件?【英文标题】:How do I apply a function to each connected components within a graph/network? 【发布时间】:2011-05-04 20:36:05 【问题描述】:我有一个包含 70,000 多个顶点(节点)和 200,000 多个边(连接)的大型 igraph 对象。我想计算一些中心性度量,但网络太大。我认为一个好的解决方法是将我的网络分成连接的组件(即使最大的也不是太大)。
我正在考虑使用 igraph 函数clusters 或相关方法。然后我可以计算集群上的 alpha.centrality() 和 bonpow() 吗?然后将结果合并回原始 igraph 对象? (或具有所有顶点的数据框)
我不确定最好的方法,我很想听听人们的任何想法。非常感谢:)
【问题讨论】:
如果不完全了解您的结构,这很难说,但如果每个节点都是 list() 中的一个元素,您可以使用 llply() 并暂时离开计算机 :) @Brandon 你的意思是每个 italic_connected component_italic 都是列表中的一个元素吗?由于我所指的函数需要在每个节点所属的最大连接组件上计算。 【参考方案1】:您可以使用 igraph 中的 decompose.graph
函数来获取连接组件的列表,然后使用 lapply
在每个组件上运行您的函数(alpha.centrality
或 bonpow
)。运行 decompose.graph
后,您可能需要释放原始图形以重新占用一些内存。
【讨论】:
@Michael 如果您的机器上有一些备用内核或访问具有多个内核的机器,可能需要考虑使用 SNOW 包中的 parLapply 来加快速度。以上是关于如何将函数应用于图形/网络中的每个连接组件?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 PyTorch 的 torch.inverse() 函数应用于批次中的每个样本?