himanshu208

Untitled

Oct 3rd, 2018
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. import networkx as nx
  2. import matplotlib.pyplot as plt
  3.  
  4. #create a graph with degrees following a power law distribution
  5.  
  6. #I believe we can eliminate this loop to find s by using the call
  7. #nx.utils.create_degree_sequence(100,powerlaw_sequence) with
  8. #appropriate modification
  9.  
  10. memory = []
  11.  
  12. #add word to listners memory
  13. def store_word(node_number, word):
  14. memory[node_number].append(word)
  15.  
  16. #check if the word exists in listner's memory
  17. def word_exists(node_number, word):
  18. if word in node[node_number]:
  19. return True
  20. else:
  21. return False
  22.  
  23. #check if two memory are connected
  24. def is_peer(node_number1,node_number2):
  25. if graph[node_number1][node_number2] == 1:
  26. return True
  27. else:
  28. return False
  29.  
  30. #create memory blocks for each node in the graph
  31. def init_memory(graph):
  32. for x in range(0,len(graph)):
  33. memory.append([])
  34.  
  35. def success(speaker,listner,word):
  36. memory[speaker][:] = [word]
  37. memory[listner][:] = [word]
  38.  
  39. def propagate(speaker,word):
  40. peers = []
  41. memory[speaker].append(word)
  42. for x in range(0,len(graph)):
  43. if graph[speaker][x] == 1:
  44. peers.append(x)
  45. store_word(x,word)
  46.  
  47. while True:
  48. s=[]
  49. while len(s)<1000:
  50. nextval = int(nx.utils.powerlaw_sequence(1, 2.5)[0]) #100 nodes, power-law exponent 2.5
  51. if nextval!=0:
  52. s.append(nextval)
  53. if sum(s)%2 == 0:
  54. break
  55. G = nx.configuration_model(s)
  56. G=nx.Graph(G) # remove parallel edges
  57. G.remove_edges_from(G.selfloop_edges())
  58.  
  59. #draw and show graph
  60. pos = nx.spring_layout(G)
  61. nx.draw_networkx(G, pos)
  62. plt.savefig('test.pdf')
Add Comment
Please, Sign In to add comment