平均最短路径长度——网络建模之基本指标

平均最短路径长度——网络建模之基本指标(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
展开阅读全文

没有更多推荐了,返回首页