如何解决如何分割由多个分量组成的图并计算其与R的接近度?
我想获得图形的接近度,但有时图形由几个相互断开的组件组成。所以更合适的方法是计算每个组件的接近度。 components() 可以返回图的最大连通分量以及给出每个顶点所属的集群 id 的数字向量。但是如何使用这些信息来计算组件的接近度?
例如,有一个图,其中 8 个节点属于两个独立的组件,其中 6 个节点(1-6)至少与较大的组件有一个连接,而 2 个节点(7 和 8)属于较小的组件,并且没有连接到更大的组件
配对数据(JFE2015.txt)为流程
1 2
1 6
2 3
2 4
4 5
4 6
5 6
7 8
当我使用 components() 时,它返回以下值
我的困惑是如何使用 $membership 对图进行分组并分别计算接近度,然后将不同组件的接近度结合起来。
在现实世界中,通常会看到一个由许多组件组成的图形,因此在分组计算接近度时需要循环。
非常感谢!
解决方法
而不是 components
,我认为 decompose
是实现您目标的更好选择,因为它直接将您的图拆分为不连贯的子图,然后您可以将 closeness
应用于每个组件,即,
Map(
closeness,decompose(
graph_from_data_frame(
df,directed = FALSE
)
)
)
给出
[[1]]
1 2 4 5 6 3
0.12500000 0.14285714 0.14285714 0.11111111 0.12500000 0.09090909
[[2]]
7 8
1 1
数据
> dput(df)
structure(list(from = c(1L,1L,2L,4L,5L,7L),to = c(2L,6L,3L,8L)),class = "data.frame",row.names = c(NA,-8L))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。