给出一个无向图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]
您可以使用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