如何将函数应用于图形/网络中的每个连接组件?

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.centralitybonpow)。运行 decompose.graph 后,您可能需要释放原始图形以重新占用一些内存。

【讨论】:

@Michael 如果您的机器上有一些备用内核或访问具有多个内核的机器,可能需要考虑使用 SNOW 包中的 parLapply 来加快速度。

以上是关于如何将函数应用于图形/网络中的每个连接组件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 PyTorch 的 torch.inverse() 函数应用于批次中的每个样本?

如何在openCV中对连接的组件进行分割?

将函数应用于 DataFrame 中的每个单元格

Rust 是不是有办法将函数/方法应用于数组或向量中的每个元素?

如何将不同的成本函数应用于卷积网络的不同输出通道?

将函数应用于列表的每个元素