1 连通图,连通分量
- 对于一个无向图,如果任意节点i能通过一些边到达节点j,则称为连通图。
- 无向图G的一个极大连通子图称为G的一个连通分量。连通图只有一个连通分量;非连通的无向图有多个连通分量。
2 有向图的连通性
- 强连通图:有向图中任意一对节点可达
- 弱连通图:至少有一对节点不满足单向连通,但去掉边的方向后,节点之间可达
3 最短路径,图直径
- 最短路径:图中两节点之间路径中最短的
- 图直径:图中任意所有节点最短路径的最大值
4 度中心性
5 特征向量中心性
- 特征向量中心性分数:对图的邻接矩阵求特征值和特征向量,最大特征值所对应的特征向量,即各个节点的特征向量中心性分数
- 节点的特征向量中心性:(Vi节点的邻居中心性分数累加)/(特征值)
6 中介中心性
- 分子表示通过此点的最短路径数目,分母表示点对st之间所有最短路径数目。再把所有点对累加求和,为了使结果具有可比性,对上述公式进行归一化,除以最大的中心性分数。
7 代码部分
import numpy as np
import pandas as pd
import networkx as nx
edges = pd.DataFrame()
edges['sources'] = [1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5]
edges['targets'] = [2, 4, 5, 3, 1, 2, 5, 1, 5, 1, 3, 4]
edges['weights'] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
G = nx.from_pandas_edgelist(edges, source='sources', target='targets', edge_attr='weights')
print(nx.degree(G))
print(list(nx.connected_components(G)))
print(nx.diameter(G))
print(nx.degree_centrality(G))
print(nx.eigenvector_centrality(G))
print(nx.betweenness_centrality(G))