<p>您可以将整个过程分为三个步骤:</p>
<ol>
<li>创建两个随机图(已经完成):<code>red_graph</code>和{<cd2>}。在</li>
<li>将两个随机图合并为<code>combined</code>图。这只是一个棘手的问题,因为两个随机图中的节点具有相同的名称,但是您可以通过在<code>blue_graph</code>中的每个节点名中添加<code>N</code>来轻松解决这个问题。在</li>
<li>将边添加到<code>combined</code>图中,以概率<code>red_graph</code>和{<cd2>}中的节点连接起来。您可以在一行中使用列表理解并获取<code>red_graph</code>和{<cd2>}中的节点的<a href="https://docs.python.org/2/library/itertools.html#itertools.product" rel="nofollow noreferrer">^{<cd10>}</a>。在</li>
</ol>
<p>下面是一个完整的示例,其结果随机图如下:</p>
<pre><code>###############################################################################
# Step 0: Load required modules and set and parameters
###############################################################################
import networkx as nx, matplotlib.pyplot as plt
from itertools import product
from random import random
# Parameters
N = 5
p1 = 0.5
p2 = 0.5
q = 0.25
###############################################################################
# Step 1: Create the random graphs
###############################################################################
red_graph = nx.fast_gnp_random_graph(N, p1)
blue_graph = nx.fast_gnp_random_graph(N, p2)
###############################################################################
# Step 2: Combine the random graphs
###############################################################################
combined = nx.Graph()
red = red_graph.nodes()
# rename the blue nodes
blue = [ N + node for node in blue_graph.nodes() ]
combined.add_nodes_from(red)
combined.add_edges_from(red_graph.edges())
combined.add_nodes_from(blue)
# Rename the blue edges with their new node names
combined.add_edges_from([ (N + u, N + v) for u, v in blue_graph.edges() ])
###############################################################################
# Step 3: Connect nodes in the blue/red graphs with probability q
###############################################################################
combined.add_edges_from([ (u, v) for u, v in product(red, blue) if random() < q ])
###############################################################################
# Step 4: Plot the graph, including the color of each node
###############################################################################
pos = nx.spring_layout(combined)
nx.draw_networkx_nodes(combined, pos=pos, nodelist=red, node_color='r')
nx.draw_networkx_nodes(combined, pos=pos, nodelist=blue, node_color='b')
nx.draw_networkx_edges(combined, pos=pos)
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/YkeXC.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/YkeXC.png" alt="random graph"/></a></p>