Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import igraph as ig
- import copy
- import sys
- import timeit
- alf = ['Pete', 'Stuart', 'John', 'George', 'Paul', 'Ringo', 'Tommy', 'Chas', 'Norman']
- N = 9
- ms = [[0, 6, 0, 0, 0, 0, 0, 0, 0], # 1 Pete
- [0, 0, 0, 3, 0, 0, 0, 0, 0], # 2 Stuart
- [0, 1, 0, 0, 1, 0, 0, 0, 0], # 3 John
- [0, 0, 4, 0, 0, 0, 0, 0, 0], # 4 George
- [0, 0, 0, 6, 0, 0, 3, 0, 0], # 5 Paul
- [0, 0, 0, 3, 0, 0, 0, 0, 0], # 6 Ringo
- [0, 0, 0, 0, 0, 1, 0, 0, 2], # 7 Tommy
- [0, 0, 0, 0, 0, 2, 0, 0, 0], # 8 Chas
- [0, 0, 0, 0, 0, 0, 0, 4, 0]] # 9 Norman
- def smeh(ms):
- ss = []
- for i in range(len(ms[0])):
- for j in range(len(ms[0])):
- if ms[i][j] != 0:
- ss.append([alf[i],alf[j],ms[i][j]])
- return ss
- def smehh(ms):
- ss = []
- for i in range(len(ms[0])):
- for j in range(len(ms[0])):
- if ms[i][j] != 0:
- ss.append([i,j,ms[i][j]])
- return ss
- def mzap(ss1):
- ss = copy.deepcopy(ss1)
- D = []
- names = []
- for i in range(len(ss)):
- if ss[i][0] not in names:
- names.append(ss[i][0])
- if ss[i][1] not in names:
- names.append(ss[i][1])
- for i in range(len(names)):
- for j in range(len(ss)):
- for k in range(2):
- if ss[j][k] == names[i]:
- ss[j][k] = i
- nsos = [0 for i in range(len(names))]
- nch = [0 for i in range(len(names))]
- nprt = [0 for i in range(len(names))]
- ksos = []
- kch = []
- kprt = []
- krb = []
- for i in range(len(names)):
- kc = []
- kp = []
- ks = []
- kr = []
- kr1 = []
- kr2 = []
- for j in range(len(ss)):
- if i == ss[j][0]:
- nch[i]+=1
- kc.append(ss[j][1])
- kr1.append(ss[j][2])
- if i == ss[j][1]:
- nprt[i] +=1
- kp.append(ss[j][0])
- kr2.append(ss[j][2])
- nsos[i] = nch[i] + nprt[i]
- ks = kc + kp
- kr = kr1 + kr2
- ksos.append(ks)
- kch.append(kc)
- kprt.append(kp)
- krb.append(kr)
- for i in range(len(names)):
- 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]))
- return D
- def gpr(kk):
- G = ig.Graph(directed=False)
- G.add_vertices(N)
- G.vs['label'] = ['Pete', 'Stuart', 'John', 'George', 'Paul', 'Ringo', 'Tommy', 'Chas', 'Norman']
- G.add_edges(kk)
- G.es['weight'] = [1 for i in range(N)]
- ig.plot(G, bbox=(600, 600), vertex_label_color='black',
- vertex_label_size=10, vertex_size=50, vertex_color='white',
- edge_width=[edge for edge in G.es['weight']])
- return 0
- ss = smeh(ms)
- sss = smehh(ms)
- D = mzap(ss)
- for i in range(len(D)):
- print(D[i])
- cpls = []
- for i in range(len(D)-1):
- for j in range(i+1,len(D)):
- t = 0
- for k in range(len(D[i]['NeigNs'])):
- if D[i]['NeigNs'][k] not in D[j]['NeigNs']:
- t=1
- else:
- t = -1
- break
- if t == 1:
- cpls.append([D[i]['Name'],D[j]['Name']])
- print(cpls)
- kk = []
- for i in range(len(sss)):
- kk.append((sss[i][0], sss[i][1]))
- gpr(kk)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement