【问题标题】:How to find the neighborhood for certain vertices only?如何仅找到某些顶点的邻域?
【发布时间】:2019-05-31 10:01:00
【问题描述】:

问题已开始here

我有一个无向图gn<100 顶点。图表很简单。所有顶点的坐标都是整数(x_i, y_i), i=1, 2,..., n,边的集合是预先定义好的,它们是长度为1单位的线段。 顶点的度数可以是234

library(igraph)

g <- graph_from_literal(1-2-3-4-5-6-7-8-1, 8-9-4)
B <- t(matrix(c(0,0, 0,1, 0,2, -1,2, -2,2, -2,1, -2,0, -1,0, -1,1), nrow =2));

V(g)$id <- seq_len(vcount(g))

V(g)$x <- B[,1]; V(g)$y <- B[,2]

plot(g, layout=as.matrix(B))

我需要为顶点设置新属性corner 属性。

如果顶点i 的度数为2 并且两条入射边不在同一条线上,则我们说顶点corner 是顶点。在上面的图中,顶点1, 3, 5, 7 是角顶点,而其余顶点2, 4, 6, 8, 9 是非角顶点。

我的尝试

我找到了度数等于2 的顶点列表。

idv <- V(g)[strength(g)==2]; idv # 1 2 3 5 6 7 9

然后找到i-th 顶点的邻域顶点列表。

neigh<-neighborhood(g, idv); neigh

错误在这里,因为我看到所有顶点的邻域顶点,而不仅仅是度数等于2 的顶点。例如,

neigh[[4]]; neigh[[8]];   
#[1] 4 3 5 9
#[1] 8 1 7 9

问题。如何使用neighborhood 函数仅查找度数为2 的顶点的邻域?

【问题讨论】:

    标签: r igraph


    【解决方案1】:

    函数是正确的,但第二个参数不是关于感兴趣的顶点,而是第三个:

    neighborhood
    # function (graph, order = 1, nodes = V(graph), mode = c("all", 
    #     "out", "in"), mindist = 0) 
    # {
    # ...
    

    因此,

    length(neighborhood(g, nodes = idv))
    # [1] 7
    

    完成这项工作。

    【讨论】:

      猜你喜欢
      • 2013-04-21
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多