不是上下层随机选一个节点作为其邻居,而是分别生成两个er网络,两个网络都是2000个节点且一一对应
时间: 2024-03-02 07:49:00 浏览: 17
明白了,我再重新修改一下代码:
```python
import networkx as nx
import random
# 构建上层网络
info_G = nx.erdos_renyi_graph(2000, 0.01)
info_nodes = set(info_G.nodes())
info_edges = [(n, n + 2000) for n in info_nodes]
# 构建下层网络
contact_G = nx.erdos_renyi_graph(2000, 0.005)
contact_nodes = set(contact_G.nodes()) | set(range(2000))
contact_edges = [(n, n + 2000) for n in contact_nodes]
# 构建双层网络
double_layer_G = nx.Graph()
double_layer_G.add_nodes_from(info_G.nodes() | contact_G.nodes())
double_layer_G.add_edges_from(info_edges + contact_edges)
# 输出网络的基本信息
print("Number of nodes:", double_layer_G.number_of_nodes())
print("Number of edges:", double_layer_G.number_of_edges())
print("Average degree:", sum(dict(double_layer_G.degree()).values()) / double_layer_G.number_of_nodes())
```
在这个代码中,我们首先使用`nx.erdos_renyi_graph`函数分别构建了2000个节点的上层网络和下层网络。因为上下层节点是一一对应的,所以我们可以通过在节点编号上加上2000的方式来实现层间边的连接。然后,将上下层网络合并成一个双层网络。最后,输出了网络的基本信息,包括节点数、边数和平均度。