[英]Linking two nodes in two different random networks in R [closed]
我使用R(和igraph包)创建了两个随机(Erdos-Renyi)网络,每个网络都有10个节点。 两个网络中的每个节点都被随机分配了0或1的属性。
这是我执行此操作的代码:
# Creates the first Erdos-Renyi graph, graph_a, with 10 nodes and edges with
# p=0.2
num_nodes <- 10
prob <- 0.2
graph_a <- erdos.renyi.game(num_nodes, prob, type=c("gnp", "gnm"),
directed=FALSE, loops=FALSE)
# Randomly sets the attributes of the nodes of graph_a to either 0 or 1
graph_a <- set.vertex.attribute(graph_a, "value",
value = sample(0:1, num_nodes, replace=TRUE))
# Creates the second Erdos-Renyi graph, graph_b, with 10 nodes and edges with
# p=0.2
graph_b <- erdos.renyi.game(num_nodes, prob, type=c("gnp", "gnm"),
directed=FALSE, loops=FALSE)
# Randomly sets the attributes of the nodes of graph_b to either 0 or 1
graph_b <- set.vertex.attribute(graph_b, "value",
value = sample(0:1, num_nodes, replace=TRUE))
我需要以某种方式将第一个图的随机选择的节点链接到第二个图的随机选择的节点。 因此,如果从第一张图选择的节点的0或1属性值发生变化,则从第二张图选择的节点的属性值也应发生变化(反之亦然)。
有人可以提出解决方案吗?
非常感谢。
定义从a中的节点到b中的节点的映射-不必是排列,只要它是长度为10的向量,且条目<=将应用b中的节点数:
> perm=sample(10)
> perm
[1] 7 6 1 8 5 10 2 9 3 4
因此,图a中的节点1与图b的节点7随机相关,一个图的节点2映射到b的节点6,依此类推。
在graph_a
选择一个随机节点:
> i=sample(10,1)
> i
[1] 7 # 7 was picked
目前其:
> V(graph_a)$value[i]
[1] 0
因此,我们将其翻转:
> V(graph_a)$value[i] = 1 - V(graph_a)$value[i]
> V(graph_a)$value[i]
[1] 1
b映射到b中的哪一个?
> perm[7]
[1] 2
目前:
> V(graph_b)$value[2]
[1] 1
所以翻转它:
> V(graph_b)$value[perm[i]] = 1 - V(graph_b)$value[perm[i]]
> V(graph_b)$value[perm[i]]
[1] 0
任务完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.