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

平均最短路径长度——网络建模之基本指标(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
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值