# -*- coding: utf-8 -*-"""
Created on Sun Jan 31 12:40:03 2021
@author: Administrator
""""""
重叠度:在多层网络中,由于节点不只是存在一层网络中,因此只用一个
值来衡量度是不合理的。最普遍的做法是以向量的形式将单一网络中的
度中心性扩展到多层网络。重叠度是把节点i每一
层的度值进行累加,得到节点i的重叠度。
"""import networkx as nx
defget_group(result,k):print("----排序结果分成"+str(k)+"组之后的结果为----")
s =[]
ss =[]#每一个分组包含的数目
n =int(len(result)/ k)for i inrange(len(result)):
s.append(result[i])
ss.append(result[i][0])if(len(s)% n ==0):print(s)print("-----节点序号------")print(ss)print("-----我是分割线----")# print(s) #输入邻接矩阵,计算多层网络的重叠度defget_degree_of_overlap():
G = nx.Graph()
filestr =""withopen("all.txt")as files:for line in files:
filestr += line.strip()#将字符串转换成列表
matrix =eval(filestr)
nodes =range(len(matrix))
G.add_nodes_from(nodes)for i inrange(len(matrix)):for j inrange(len(matrix)):if(matrix[i][j]==1):
G.add_edge(i, j)#得到单层网络的节点数目
length =int(len(G.nodes())/2)#度值
degree =list(nx.degree(G))
ss =[]for e in degree:
ss.append(list(e))print("每一个节点的度值为:")print(ss)
result =[]for i in ss:for j in ss:if(j[0]- i[0]== length):
i[1]= i[1]+ j[1]
result = ss[0:length]print("节点的重叠度为:")print(result)print("重叠度从大到小排序为:")
end =sorted(result,key =lambda x:x[1],reverse =True)print(end)return end
defmain():#需要分组的组数
number =2#参数为分组数目
result = get_degree_of_overlap()
get_group(result,number)#启动程序
main()
文章目录主要程序运行结果主要程序# -*- coding: utf-8 -*-"""Created on Sun Jan 31 12:40:03 2021@author: Administrator""""""重叠度:在多层网络中,由于节点不只是存在一层网络中,因此只用一个值来衡量度是不合理的。最普遍的做法是以向量的形式将单一网络中的度中心性扩展到多层网络。重叠度是把节点i每一层的度值进行累加,得到节点i的重叠度。"""import networkx as nxd