Distance Measures

Reason Need

  1. How ‘far’ is node A from node H
  2. Are nodes far away or close to each other in this network?
  3. Which nodes are “closest” and “farthest” to other nodes?

We need a sense of distance between nodes to answer these questions

In order to define Distance,we need to define Path

Paths

A sequence of nodes connected by an edge.

E x a m p l e Example Example

  • Find two paths from node G to node C
    • G-F-C
    • G-F-E-C

Distance

So,How far is node A from node H?
p a t h 1 : A − B − C − E − H ( 4     h o p s ) p a t h 2 : A − B − C − F − E − H ( 5     h o p s ) path1:A-B-C-E-H(4\,\,\,hops)\\ path2:A-B-C-F-E-H(5\,\,\,hops) path1:ABCEH(4hops)path2:ABCFEH(5hops)

Path length:Number of steps it contains from beginning to end

Distance between two nodes:the length of the shortest path between them

So,the distance between node A and H is 4

print(nx.shortest_path(G,'A','H'))
#>>['A', 'B', 'C', 'E', 'H']

print(nx.shortest_path_length(G,'A','H'))
#>>4

单源最短路径

Breadth-first search: a systematic and efficient procedure for computing distances from a node to all other nodes in a large network by “discovering” nodes in layers

——BFS过程,因为无权值,我们只考虑距离

在这里插入图片描述

T=nx.bfs_tree(G,'A')
print(T.edges())
#>>[('A', 'K'), ('A', 'B'), ('B', 'C'), 
#   ('C', 'E'), ('C', 'F'), ('E', 'D'), 
#   ('E', 'H'), ('E', 'I'), ('F', 'G'), ('I', 'J')]

print(nx.shortest_path_length(G,'A'))
#>>{'A': 0, 'K': 1, 'B': 1, 'C': 2, 
#   'F': 3, 'E': 3, 'G': 4, 'I': 4, 
#   'D': 4, 'H': 4, 'J': 5}

Distance Measures

——How to characterize the distance between all pairs of nodes in a graph?

  • Average distance between every pair of nodes

    任意两点距离的平均值

print(nx.average_shortest_path_length(G))
#>>2.5272727272727273
  • Diameter(直径):maximum distance between any pair of nodes
print(nx.diameter(G))
#>>5
  • eccentricity(偏心率):the largest distance between node n and all other nodes

    节点n到达别的节点的 最短距离的 最大值

print(nx.eccentricity(G))
#>>{'A': 5, 'K': 5, 'B': 4, 'C': 3, 'E': 3, 
#   'F': 3, 'D': 4, 'H': 4, 'I': 4, 'G': 4, 'J': 5}
  • radius(半径):the radius of a graph is the minimum eccentricity
print(nx.radius(G))
#>>3

我们知道了什么是长短——直径半径

接下来引入远近

  • Periphery(周边):The periphery of a graph is the set of nodes that have eccentricity equal to the diameter.

    print(nx.periphery(G))
    #>>['A', 'K', 'J']
    

    这些节点往往位于网络的外围,远离所有其他节点

  • Center(中心):The center of graph is the set of nodes that have eccentricity equal to the radius

    当前的中心点度量方法,对点很敏感,对图中微小的变化很敏感,稍微到一个点的距离大于半径,就不属于是中心点

    print(nx.center(G))
    #>>['C', 'E', 'F']
    
  • 中心点就是,这个点到其他每个点的距离都小于等于半径

  • 周边点就是,这个点拥有着全图最短距离的最大值,存在着直径

Karate Club Network

——空手道俱乐部网络

import networkx as nx
G=nx.karate_club_graph()
#This network is so famous that actually on network X 
#you can simply load it by using the function karate club graph.

G=nx.convert_node_labels_to_integers(G,first_label=1)
#将节点标签换为整数,第一个标签是1

print(nx.average_shortest_path_length(G))
#>>2.408199643493761 平均距离

print(nx.diameter(G))
#>>5 直径

print(nx.eccentricity(G))
#>>{1: 3, 2: 3, 3: 3, 4: 3, 5: 4, 6: 4, 7: 4, 8: 4, 9: 3, 10: 4, 
#   11: 4, 12: 4, 13: 4, 14: 3, 15: 5, 
#   16: 5, 17: 5, 18: 4, 19: 5, 20: 3, 
#   21: 5, 22: 4, 23: 5, 24: 5, 25: 4, 26: 4, 
#   27: 5, 28: 4, 29: 4, 30: 5, 31: 4, 32: 3, 33: 4, 34: 4}

print(nx.radius(G))
#>>3 半径

print(nx.periphery(G))
#>>[15, 16, 17, 19, 21, 23, 24, 27, 30] 周边

print(nx.center(G))
#>>[1, 2, 3, 4, 9, 14, 20, 32] 中心

在这里插入图片描述

  • Node34 looks pretty “central”.However,it has distance 4 to node 17

    34-32-1-6-17

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Caaaaaan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值