概要
在复杂网络中,评估节点的重要性是理解网络结构和功能的关键。本篇博客介绍了三种主要的节点重要性评估方法:
- Tsallis熵方法:杨松青等人提出的基于Tsallis熵的复杂网络节点重要性评估方法。详细见物理学报(2021)。
- 改进的k-shell方法:Wang等人在Physica A中描述的改进版k-shell方法(2020)。
-通过邻域核度识别和排名复杂网络中的关键传播者。在Physica A(2014)
功能性函数函数
在复杂网络节点重要性评估中,常常需要处理大量数据。以下是一些关键的功能性函数,用于保存、读取节点重要性数据以及计算相关指标。
读取和保存数据
def save_results(measure, name):
# 打开一个文件以写入数据,文件名为传入的参数name
outf = open("./importance_values/"+name+".dat", "w")
for i in measure:
#将键以字符串的形式写入文件中,中间用空格隔开,行末加上换行符号
outf.write(str(i)+" "+str(measure[i])+"\n")
outf.close()
该函数将节点的编号及其对应的重要性值保存到指定的文件中,以便后续分析。
读取重要性函数
def read_importance_values(name):
# 读取重要性函数 创建一个新的字典,用于存放节点重要性数值
measure = {
}
for line in np.loadtxt("./importance_values/"+name+".dat"):
# 读取每一行数据分解为节点标签和对应的重要性数值 line[0]表示节点标签 line[1]代表节点的重要性值
measure[int(line[0])] = line[1]
return measure
该函数从文件中读取节点重要性数据,并将其存储在字典中,方便后续处理。
主流方法复现
核中心性Cnc+
核中心性 Cnc是通过累加节点邻居的测量值来评估节点的重要性,反映了节点的局部影响力。
def cal_C_nc(G, measure):
# 用于存放每个邻居核度值的字典
Cnc = {
}
for i in G.nodes<