跳到内容

将二分图投影成两个单模网络

用法

bipartite_projection(
  graph,
  types = NULL,
  multiplicity = TRUE,
  probe1 = NULL,
  which = c("both", "true", "false"),
  remove.type = TRUE
)

bipartite_projection_size(graph, types = NULL)

参数

graph

输入图。它可以是有向图,但在计算过程中会忽略边的方向。

types

一个可选的顶点类型向量,用于代替 ‘type’ 顶点属性。如果该图没有 ‘type’ 顶点属性,则必须提供此参数。

multiplicity

如果 TRUE,则 igraph 将边的重数保留为名为“weight”的边属性。例如,如果二分图中存在 A-C-B 和 A-D-B 三元组(但没有更多的 X,使得 A-X-B 也在图中),则投影中 A-B 边的重数为 2。

probe1

此参数可用于指定结果列表中投影的顺序。如果给定,则将其视为顶点 ID(或符号顶点名称);包含此顶点的投影将是结果列表中的第一个。如果在参数 which 中仅请求一个投影,则忽略此参数。

which

一个字符标量,用于指定要计算的投影。默认是计算两者。

remove.type

逻辑标量,是否从投影中删除 type 顶点属性。这是有道理的,因为这些图不再是二分图。但是,如果要将它们彼此组合(或其他二分图),则值得保留此属性。默认情况下,它将被删除。

两个无向图的列表。请参见以上详细信息。

详细信息

二分图在igraph中具有type顶点属性,这是一个布尔值,第一类顶点为FALSE,第二类顶点为TRUE

bipartite_projection_size() 计算二分图的两个投影中的顶点和边的数量,而不计算投影本身。这对于检查如果您有大型二分图,投影需要多少内存非常有用。

bipartite_projection() 计算实际的投影。您可以使用 probe1 参数来指定结果中投影的顺序。默认情况下,顶点类型 FALSE 是第一个,TRUE 是第二个。

bipartite_projection() 保留顶点属性。

作者

Gabor Csardi csardi.gabor@gmail.com

bipartite_projection_size().

示例


## Projection of a full bipartite graph is a full graph
g <- make_full_bipartite_graph(10, 5)
proj <- bipartite_projection(g)
isomorphic(proj[[1]], make_full_graph(10))
#> [1] TRUE
isomorphic(proj[[2]], make_full_graph(5))
#> [1] TRUE

## The projection keeps the vertex attributes
M <- matrix(0, nrow = 5, ncol = 3)
rownames(M) <- c("Alice", "Bob", "Cecil", "Dan", "Ethel")
colnames(M) <- c("Party", "Skiing", "Badminton")
M[] <- sample(0:1, length(M), replace = TRUE)
M
#>       Party Skiing Badminton
#> Alice     0      1         1
#> Bob       1      1         0
#> Cecil     0      0         0
#> Dan       1      1         0
#> Ethel     1      0         0
g2 <- graph_from_biadjacency_matrix(M)
g2$name <- "Event network"
proj2 <- bipartite_projection(g2)
print(proj2[[1]], g = TRUE, e = TRUE)
#> IGRAPH b773bd3 UNW- 5 5 -- Event network
#> + attr: name (g/c), name (v/c), weight (e/n)
#> + edges from b773bd3 (vertex names):
#> [1] Alice--Bob   Alice--Dan   Bob  --Dan   Bob  --Ethel Dan  --Ethel
print(proj2[[2]], g = TRUE, e = TRUE)
#> IGRAPH 0f46f0b UNW- 3 2 -- Event network
#> + attr: name (g/c), name (v/c), weight (e/n)
#> + edges from 0f46f0b (vertex names):
#> [1] Party --Skiing    Skiing--Badminton