sis模型检验节点重要性案例python
时间: 2023-10-14 12:17:03 浏览: 173
以下是一个使用SIS模型检验节点重要性的Python案例:
```
import networkx as nx
import random
# 生成一个随机图
G = nx.gnm_random_graph(100, 500)
# 设置每个节点的传染率和恢复率
for node in G.nodes():
G.nodes[node]['beta'] = random.uniform(0, 1)
G.nodes[node]['gamma'] = random.uniform(0, 1)
# 定义SIS模型的演化函数
def sis_model(G, beta, gamma, initial_infected, num_steps):
infected = set(initial_infected)
for i in range(num_steps):
new_infected = set()
for node in G.nodes():
if node in infected:
# 对每个感染节点,以beta的概率传染它的邻居
for neighbor in G.neighbors(node):
if random.random() < beta and neighbor not in infected:
new_infected.add(neighbor)
else:
# 对每个未感染节点,以gamma的概率让它恢复
if random.random() < gamma:
new_infected.add(node)
infected |= new_infected
return infected
# 对每个节点进行影响力评估
scores = {}
for node in G.nodes():
initial_infected = [node]
final_infected = sis_model(G, G.nodes[node]['beta'], G.nodes[node]['gamma'], initial_infected, 10)
scores[node] = len(final_infected)
# 输出前十个影响力最大的节点
rank = sorted(scores.items(), key=lambda x: x[1], reverse=True)
for i in range(10):
print(rank[i])
```
以上代码中,我们首先生成一个包含100个节点、500条边的随机图,然后为每个节点设置传染率beta和恢复率gamma。接着,我们定义了一个名为sis_model()的函数,用于模拟SIS模型的演化过程,并返回最终感染的节点集合。在模拟过程中,我们以每个节点为初始感染点,运行10轮模拟,并记录最终感染的节点数作为该节点的影响力评分。
最后,我们对所有节点进行影响力评估,并输出影响力最大的前十个节点。这样,我们就可以快速得到对网络影响最大的节点,以便进行后续的分析和应用。
阅读全文