You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于给定顶点集采样二分图(替代sample_bipartite(n1,n2,p))

基于已有顶点集生成跨组二分边的正确实现

你当前代码的问题在于sample_bipartite(g_n[1], g_n[2], p = p[1,2])会生成全新的顶点集,和之前gw1、gw2的顶点没有关联,合并后其实是把两组独立的顶点拼在了一起,这不符合你“利用已有顶点集采样二分图”的需求。

下面是直接复用gw1、gw2顶点集的正确实现:

# 先合并两个组内图,得到包含所有目标顶点的基础图
gw_combined <- gw1 + gw2

# 获取两组顶点的ID:gw1的顶点是1到n1,gw2的顶点是(n1+1)到(n1+n2)
# (如果你的gw1/gw2顶点ID不是连续的,改用V(gw1)$name或自定义ID)
vertices_group1 <- V(gw1)
vertices_group2 <- V(gw2)

# 生成两组顶点之间所有可能的边对
all_possible_edges <- expand.grid(from = vertices_group1, to = vertices_group2)

# 按照概率p12随机采样边
sampled_edges <- all_possible_edges[sample(nrow(all_possible_edges), size = floor(nrow(all_possible_edges)*p[1,2])), ]

# 将采样到的边添加到合并后的图中,并设置边属性
gw_combined <- add_edges(gw_combined, as.vector(t(sampled_edges)))
# 给新增的跨组边设置group属性
E(gw_combined)[E(gw_combined) %in% E(add_edges(make_empty_graph(), as.vector(t(sampled_edges))))]$group <- 12

关键说明:

  • 直接复用gw1和gw2的顶点对象,确保边是连接在已有顶点上的,而非新生成的顶点
  • 通过expand.grid生成所有跨组顶点对,再按概率采样,完全对应sample_bipartite的随机边逻辑
  • 最后统一给跨组边标记group=12,和你原来的组内边属性保持一致

如果你的gw1或gw2顶点ID不是默认的连续整数(比如自定义了顶点名称),只需把vertices_group1和vertices_group2替换为对应的顶点标识即可,比如V(gw1)$name。

内容的提问来源于stack exchange,提问作者Anum Fatima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 21:17:02