igraph如何将普通图转换为二部图以使用bipartite.projection功能
实现方法
igraph 中二部图的判定逻辑非常简单,只要顶点存在名为type的0/1或布尔型属性,就会被识别为二部图。你已经提前完成了二部分组标注,仅需做一步属性映射即可:
# 将你已有的types属性赋值给igraph要求的标准type属性 V(myGraph)$type <- V(myGraph)$types
执行完成后,运行is_bipartite(myGraph),返回TRUE即说明转换成功,你可以直接调用bipartite.projection()等所有二部图专属函数。
可选优化
如果你的业务场景不需要用到边的方向,建议先转换为无向图再做投影,避免有向边规则对投影结果的干扰:
# 合并双向边为无向边 myGraph_undir <- as.undirected(myGraph, mode = "collapse") # 执行二部投影 projection_result <- bipartite.projection(myGraph_undir)
如果你需要提前校验图的拓扑二部性,可以调用bipartite_mapping(myGraph),函数会自动计算拓扑层面的二部分组,你可以和现有types属性做交叉验证确保分组正确。
内容的提问来源于stack exchange,提问作者Amin Kaveh
相关产品推荐
相关产品推荐

