计算子图的内部和外部边缘

问题描述 投票:0回答:1

给出一个无向图g和一个顶点子集v

我要数:

  • g中的连接顶点与v中的其他顶点的v的(内部)边数
  • g的顶点到v以外的g的顶点的v的(外部)边数

是否有使用R中的igraph函数来执行此操作的简便方法?

可复制的示例:

library(igraph)
g <- sample_gnp(100,0.5,directed = TRUE)
v = V(g)[1:10]
r igraph
1个回答
0
投票

您可以使用ends功能查找与边相邻的顶点。如果边的both]末端在v中,则为内部边。如果边在v中有一个端点但没有两端,则它是外部的。

E1 = which(sapply(E(g), function(e) ends(g, e)[1]) %in% v)
E2 = which(sapply(E(g), function(e) ends(g, e)[2]) %in% v)

Internal = intersect(E1, E2)
External = setdiff(union(E1,E2), Internal)

## Spot check answer
 ends(g, Internal[10])
     [,1] [,2]
[1,]    6    3
> ends(g, External[20])
     [,1] [,2]
[1,]    7   13
© www.soinside.com 2019 - 2024. All rights reserved.