Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. import igraph as ig
  2. import copy
  3. import sys
  4. import timeit
  5.  
  6. alf = ['Pete', 'Stuart', 'John', 'George', 'Paul', 'Ringo', 'Tommy', 'Chas', 'Norman']
  7. N = 9
  8. ms = [[0, 6, 0, 0, 0, 0, 0, 0, 0], # 1 Pete
  9. [0, 0, 0, 3, 0, 0, 0, 0, 0], # 2 Stuart
  10. [0, 1, 0, 0, 1, 0, 0, 0, 0], # 3 John
  11. [0, 0, 4, 0, 0, 0, 0, 0, 0], # 4 George
  12. [0, 0, 0, 6, 0, 0, 3, 0, 0], # 5 Paul
  13. [0, 0, 0, 3, 0, 0, 0, 0, 0], # 6 Ringo
  14. [0, 0, 0, 0, 0, 1, 0, 0, 2], # 7 Tommy
  15. [0, 0, 0, 0, 0, 2, 0, 0, 0], # 8 Chas
  16. [0, 0, 0, 0, 0, 0, 0, 4, 0]] # 9 Norman
  17.  
  18. def smeh(ms):
  19. ss = []
  20. for i in range(len(ms[0])):
  21. for j in range(len(ms[0])):
  22. if ms[i][j] != 0:
  23. ss.append([alf[i],alf[j],ms[i][j]])
  24. return ss
  25.  
  26. def smehh(ms):
  27. ss = []
  28. for i in range(len(ms[0])):
  29. for j in range(len(ms[0])):
  30. if ms[i][j] != 0:
  31. ss.append([i,j,ms[i][j]])
  32. return ss
  33.  
  34. def mzap(ss1):
  35. ss = copy.deepcopy(ss1)
  36. D = []
  37. names = []
  38. for i in range(len(ss)):
  39. if ss[i][0] not in names:
  40. names.append(ss[i][0])
  41. if ss[i][1] not in names:
  42. names.append(ss[i][1])
  43. for i in range(len(names)):
  44. for j in range(len(ss)):
  45. for k in range(2):
  46. if ss[j][k] == names[i]:
  47. ss[j][k] = i
  48. nsos = [0 for i in range(len(names))]
  49. nch = [0 for i in range(len(names))]
  50. nprt = [0 for i in range(len(names))]
  51. ksos = []
  52. kch = []
  53. kprt = []
  54. krb = []
  55. for i in range(len(names)):
  56. kc = []
  57. kp = []
  58. ks = []
  59. kr = []
  60. kr1 = []
  61. kr2 = []
  62. for j in range(len(ss)):
  63. if i == ss[j][0]:
  64. nch[i]+=1
  65. kc.append(ss[j][1])
  66. kr1.append(ss[j][2])
  67. if i == ss[j][1]:
  68. nprt[i] +=1
  69. kp.append(ss[j][0])
  70. kr2.append(ss[j][2])
  71. nsos[i] = nch[i] + nprt[i]
  72. ks = kc + kp
  73. kr = kr1 + kr2
  74. ksos.append(ks)
  75. kch.append(kc)
  76. kprt.append(kp)
  77. krb.append(kr)
  78. for i in range(len(names)):
  79. D.append(dict(N = i,Name = names[i], NeigAmt = nsos[i],ChildAmt = nch[i],PrtAmt = nprt[i],NeigNs = ksos[i],ChildNs = kch[i],PrtNs = kprt[i],Weights = krb[i]))
  80. return D
  81.  
  82. def gpr(kk):
  83. G = ig.Graph(directed=False)
  84. G.add_vertices(N)
  85. G.vs['label'] = ['Pete', 'Stuart', 'John', 'George', 'Paul', 'Ringo', 'Tommy', 'Chas', 'Norman']
  86. G.add_edges(kk)
  87. G.es['weight'] = [1 for i in range(N)]
  88. ig.plot(G, bbox=(600, 600), vertex_label_color='black',
  89. vertex_label_size=10, vertex_size=50, vertex_color='white',
  90. edge_width=[edge for edge in G.es['weight']])
  91. return 0
  92.  
  93. ss = smeh(ms)
  94. sss = smehh(ms)
  95. D = mzap(ss)
  96. for i in range(len(D)):
  97. print(D[i])
  98. cpls = []
  99. for i in range(len(D)-1):
  100. for j in range(i+1,len(D)):
  101. t = 0
  102. for k in range(len(D[i]['NeigNs'])):
  103. if D[i]['NeigNs'][k] not in D[j]['NeigNs']:
  104. t=1
  105. else:
  106. t = -1
  107. break
  108. if t == 1:
  109. cpls.append([D[i]['Name'],D[j]['Name']])
  110. print(cpls)
  111. kk = []
  112. for i in range(len(sss)):
  113. kk.append((sss[i][0], sss[i][1]))
  114. gpr(kk)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement