如何计算 R 中网络图中所有顶点的第二度?

Posted

技术标签:

【中文标题】如何计算 R 中网络图中所有顶点的第二度?【英文标题】:How can I count the second degree of all vertices in a network graph in R? 【发布时间】:2014-04-01 12:37:08 【问题描述】:

网络中的一级连接数(随机图)很容易用函数计算:

g <- erdos.renyi.game(10, 1/10, directed = TRUE)
d1 <- degree(g, mode="out")

但是,我可以用哪个函数计算每个节点的二度连接?

【问题讨论】:

【参考方案1】:

我建议使用neigborhood 来替代degree 函数。这允许您指定邻域的任何顺序。

d1 <- sapply(neighborhood(g, 1, mode="out"), length)-1
d2 <- sapply(neighborhood(g, 2, mode="out"), length)-1

如果您有带循环的图表,您应该检查这是否仍能提供所需的结果。

编辑:感谢@Ryan 指出neighborhood.size 实际上是比neighborhood 更好的答案。

d1 <- neighborhood.size(g, 1, mode="out")-1
d2 <- neighborhood.size(g, 2, mode="out")-1

编辑:感谢@Ryan 提供了neighbor.size 功能!我使用它并且它有效,但是为了选择二级连接的数量,你需要从 d2 中减去 d1,那么你只有二级连接:

d1 <- degree(g, mode="out")
d2 <- neighborhood.size(g, 2, mode="out")-d1-1

【讨论】:

您甚至可以通过使用 igraph 中的 neighbor.size 方法来避免调用 sapply。

以上是关于如何计算 R 中网络图中所有顶点的第二度?的主要内容,如果未能解决你的问题,请参考以下文章

图的表示:如何存储微博、微信等社交网络中的好友关系?

经典教程 | 基于Spark GraphX实现微博二度关系推荐

哈密顿回路的算法

二分图中最小顶点覆盖的算法

图——最小生成树

如何计算缩小到一个图形中的顶点数?