import copy
import networkx as nx
import random
g = nx.karate_club_graph()
seeds = [33, 20]
def LT(graph,seeds):
for node in graph.nodes:
graph.add_node(node, state=0)
for edge in graph.edges:
graph.add_edge(edge[0], edge[1], weight=random.randint(1, 9))
for seed in seeds:
graph.nodes[seed]["state"] =1
active_nodes = copy.deepcopy(seeds)
while len(active_nodes)>0:
a = active_nodes.pop()
a_neighbor = graph[a]
ran = random.randint(1, 9)
for a_nei in a_neighbor:
wei = graph.get_edge_data(a, a_nei)
weight = wei.get("weight")
if weight > ran and graph.nodes[a_nei]["state"] == 0:
new_weight = weight - ran
graph[a][a_nei]["weight"]=new_weight#修改从a到a_nei的权重
if weight <= ran and graph.nodes[a_nei]["state"] == 0:
seeds.append(a_nei)
graph.nodes[a_nei]["state"] = 1
else:
continue
return seeds
lst =LT(g,seeds)
print("seeds",lst)
社交网络代码LT 模型
于 2023-11-07 15:04:05 首次发布