请写谣言传播模型ISR的代码
时间: 2024-05-01 12:19:54 浏览: 143
ISR(Independent Cascade Model)是一种经典的谣言传播模型,下面是一个简单的 Python 代码实现:
```python
import networkx as nx
import random
def isr(graph, source, p):
"""
Independent Cascade Model
:param graph: NetworkX graph对象
:param source: 谣言源节点
:param p: 每条边传播谣言的概率
:return: 传播到的节点集合
"""
# 初始化传播集合
active_set = set([source])
# 初始化已经激活的节点集合
activated_nodes = set([source])
# 循环直到传播集合为空
while active_set:
# 从传播集合中随机选择一个节点进行传播
node = active_set.pop()
# 遍历当前节点的邻居节点
for neighbor in graph.neighbors(node):
# 如果邻居节点还没有被激活
if neighbor not in activated_nodes:
# 判断是否传播谣言
if random.random() <= p:
# 将邻居节点添加到激活集合中
active_set.add(neighbor)
# 将邻居节点添加到已激活节点集合中
activated_nodes.add(neighbor)
return activated_nodes
```
其中,`graph` 是一个 NetworkX 图对象,`source` 是谣言源节点的编号,`p` 是每条边传播谣言的概率。`isr` 函数返回传播到的节点集合。
阅读全文