Python实现网状结构随机游走并可视化 - 信息传播、疾病扩散模拟
随机游走是一种随机过程,其步骤是根据概率分布从当前状态随机地转移到下一个状态。在网状结构上,随机游走可以用来模拟信息传播、疾病扩散、社交网络等现象。
下面是一个用Python实现随机游走的示例代码。假设我们有一个由节点和边构成的网络,我们可以用邻接矩阵来表示它。邻接矩阵的每一行对应一个节点,每一列对应一个节点,如果相应位置的值为1,表示两个节点之间存在一条边。
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
# 生成邻接矩阵
A = np.array([[0, 1, 0, 0, 1],
[1, 0, 1, 0, 0],
[0, 1, 0, 1, 1],
[0, 0, 1, 0, 1],
[1, 0, 1, 1, 0]])
# 将邻接矩阵转换为图
G = nx.from_numpy_matrix(A)
# 随机游走
start_node = 0 # 起始节点为0
current_node = start_node
visited = [current_node]
for i in range(10):
neighbors = list(G.neighbors(current_node))
if len(neighbors) == 0:
break
probs = [1/len(neighbors)]*len(neighbors)
next_node = np.random.choice(neighbors, p=probs)
visited.append(next_node)
current_node = next_node
# 可视化结果
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos, node_size=500, node_color='lightblue', nodelist=visited)
nx.draw_networkx_labels(G, pos, font_size=20, font_family='sans-serif')
nx.draw_networkx_edges(G, pos, width=1, edge_color='gray')
plt.axis('off')
plt.show()
上述代码中,我们首先生成了一个邻接矩阵,然后将其转换为图。随后,我们从起始节点开始进行随机游走,每次转移到相邻节点的概率是相等的。最终,我们得到了随机游走经过的节点序列,将其可视化展示出来。
运行代码后,我们可以看到如下的可视化结果:

在这个例子中,起始节点为0,随机游走经过了0、1、2、4四个节点。我们可以根据需求调整起始节点和游走步数,来模拟不同的情景。
原文地址: https://www.cveoy.top/t/topic/nsRT 著作权归作者所有。请勿转载和采集!