Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.76 KB | None | 0 0
  1. import networkx as nx
  2. from random import choice
  3. import itertools
  4.  
  5. def complete_graph_from_list(L, create_using=None):
  6.     G = nx.empty_graph(len(L),create_using)
  7.     if len(L)>1:
  8.         if G.is_directed():
  9.             edges = itertools.permutations(L,2)
  10.         else:
  11.             edges = itertools.combinations(L,2)
  12.         G.add_edges_from(edges)
  13.     return G
  14.  
  15.  
  16. ''' We Begin '''
  17. numberNodes = 64
  18. maxDegree = 8
  19.  
  20. I = nx.Graph()
  21.  
  22. ''' Initialize numberNodes nodes '''
  23. for n in range(1,(maxDegree+1)+1):
  24.     print(n)
  25.     I.add_node(n)
  26.  
  27. ''' Create a Graph where each node is connected to every other node '''
  28. I = complete_graph_from_list(list(I.nodes()))
  29. print(I.edges())
  30. print("Degree List: {}".format(I.degree(I.nodes())))
  31.  
  32. # exit()
  33.  
  34. ''' Incrementally expand '''
  35. # increment n
  36. for n in range((maxDegree+1)+1,numberNodes+1):
  37.     # create node for n
  38.     I.add_node(n)
  39.  
  40.     # while the degree of n is less than 8
  41.     while I.degree(n) < maxDegree-1:
  42.  
  43.         # find an existing random edge
  44.         random_edge = choice(list(I.edges()))
  45.  
  46.  
  47.         print("before {}".format(random_edge))
  48.         while n == random_edge[0] or n == random_edge[1] or I.degree(random_edge[0]) > maxDegree or I.degree(random_edge[1]) > maxDegree:
  49.             print("inside {}".format(random_edge))
  50.             random_edge = choice(list(I.edges()))
  51.         print("after {}".format(random_edge))
  52.         # exit()
  53.         I.remove_edge(random_edge[0], random_edge[1])
  54.         I.add_edges_from([(random_edge[0], n),(n, random_edge[1])])
  55.  
  56. # print(list(I.edges())[randint(1,len(list(I.edges()))-1)])
  57. print("Length of list: {}".format(len(list(I.edges()))))
  58. print("Degree List: {}".format(I.degree(I.nodes())))
  59.  
  60. plt.figure()
  61. nx.draw_networkx(P, with_labels=True)
  62. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement