在 igraph 中创建二分图

Posted

技术标签:

【中文标题】在 igraph 中创建二分图【英文标题】:creating a bipartite graph in igraph 【发布时间】:2017-09-19 16:21:41 【问题描述】:

我正在尝试使用 igraph 创建二分图,但收到一条错误消息,提示我需要提供“类型”参数。如果两边的类型相同,我该怎么做?即我希望每一侧都有一个“关闭”、“低”等节点。我在下面给出了一些示例代码。

from <- c('off','low','medium','low','strong','off','low')
to <- c('medium','low','strong','off','low','off','low' )
frequency <- c(20,12,5,1,41,40,2)
df <- as.matrix(cbind (from, to))

【问题讨论】:

能否请您附上您用来尝试制作图表的语句,即使它不起作用。这将有助于指定您要执行的操作。 另外,你的意思是低 -> 低两次? 【参考方案1】:

定义节点的类型,根据它们在两个组中的哪一个。此外,您不能有两个具有相同 ID 的节点。但是,您可以在多个节点上放置相同的标签。我认为这就是你想要的,所以这里有一个图,它有两个标记为“关闭”的节点,两个标记为“低”的节点,等等。默认布局没有强调我认为你想要的二分性质,所以我提供了一个不同的布局。这是你想要的吗?

EL = c(1,7,2,6,3,8,2,5,4,6,1,5,2,6)
types = rep(0:1, each=4)
g = make_bipartite_graph(types, EL, directed = TRUE)
g = set_vertex_attr(g, "label", value = rep(c('off','low','medium', 'strong'), 2))
LO = matrix(c(1,1,1,2,1,3,1,4,2,1,2,2,2,3,2,4), 
    nrow=8, ncol=2, byrow=TRUE)
plot(g, layout = LO)

【讨论】:

以上是关于在 igraph 中创建二分图的主要内容,如果未能解决你的问题,请参考以下文章

HDU 2236 无题II(二分图匹配+二分)

UVALive5874 - Social Holidaying-二分图匹配/匈牙利算法

二分图学习

二分图最大匹配

POJ 2226 Muddy Fields 二分图(难点在于建图)

如何使用 JUNG 对二部图进行投影