平均最短路径长度 | 您所在的位置:网站首页 › 图最短路径怎么求 › 平均最短路径长度 |
平均最短路径长度——网络建模之基本指标(1)
基础知识
图G(N,E)是一个无权无向图,N为图G的节点集合,E为图G的边集合。 距离(distance)定义:两点间的距离为两点互联所要走过的最少边的数量。 直径(diameter)定义:此图中最长的距离。 平均最短路径长度定义:所有结点对的距离的平均值(后续会加入图表及样例) 代码展示(Python) #coding=utf-8 ''' language python Created on 2017年10月24日 @author: NoTomatoTHX @parameter: table 二维邻接矩阵 ''' #输入邻接矩阵table,输出所有连通子图的平均最短路径长度vaspl(列表格式) def GetAverageShortest(table): #获取结点个数 length = len(table[0]) #设置最短路径矩阵,lenMax[i][j]为i到j的最短路径值,同样等于lenMax[j][i] lenMax = range(length) for i in range(length): lenMax[i] = range(length) lenMax[i][i] = 0 for k in range(i,length): if(table[i][k] == 1): lenMax[i][k] = 1 elif(table[i][k] == '-1'): lenMax[i][k] = 10000 #Floyed算法获得最短路径矩阵 for k in range(1,length): for i in range(1,length): for j in range(1,length): if(lenMax[i][k] + lenMax[k][j] < lenMax[i][j]): lenMax[i][j] = lenMax[i][k] + lenMax[k][j] #ssp set_of_start_points 起始结点列表 ssp = range(length) #ss set_of_subgraph 连通子图结点列表的列表 ss = [] while len(sp)>0: templist = [ssp[0]] for i in sp: if(lenMax[templist[0]][i] < 100): templist.append(i) ss.append(templist) ssp = list(set(ssp).difference(set(templist))) #value_of_average_shortest_path_length 每个连通子图的平均最短路径长度 vaspl = [] for subGraphlist in ss: value = 0 for i in subGraphlist: for j in subGraphlist[i:]: value += lenMax[i][j] vaspl.append(value*2.0/(len(subGraphlist)*(len(subGraphlist)-1))) return vaspl |
CopyRight 2018-2019 实验室设备网 版权所有 |