Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import networkx as nx
- import matplotlib.pyplot as plt
- #create a graph with degrees following a power law distribution
- #I believe we can eliminate this loop to find s by using the call
- #nx.utils.create_degree_sequence(100,powerlaw_sequence) with
- #appropriate modification
- memory = []
- #add word to listners memory
- def store_word(node_number, word):
- memory[node_number].append(word)
- #check if the word exists in listner's memory
- def word_exists(node_number, word):
- if word in node[node_number]:
- return True
- else:
- return False
- #check if two memory are connected
- def is_peer(node_number1,node_number2):
- if graph[node_number1][node_number2] == 1:
- return True
- else:
- return False
- #create memory blocks for each node in the graph
- def init_memory(graph):
- for x in range(0,len(graph)):
- memory.append([])
- def success(speaker,listner,word):
- memory[speaker][:] = [word]
- memory[listner][:] = [word]
- def propagate(speaker,word):
- peers = []
- memory[speaker].append(word)
- for x in range(0,len(graph)):
- if graph[speaker][x] == 1:
- peers.append(x)
- store_word(x,word)
- while True:
- s=[]
- while len(s)<1000:
- nextval = int(nx.utils.powerlaw_sequence(1, 2.5)[0]) #100 nodes, power-law exponent 2.5
- if nextval!=0:
- s.append(nextval)
- if sum(s)%2 == 0:
- break
- G = nx.configuration_model(s)
- G=nx.Graph(G) # remove parallel edges
- G.remove_edges_from(G.selfloop_edges())
- #draw and show graph
- pos = nx.spring_layout(G)
- nx.draw_networkx(G, pos)
- plt.savefig('test.pdf')
Add Comment
Please, Sign In to add comment