python

复杂网络和networkx(一)

2019-05-30  本文已影响0人  小小小笑呵

图的基本概念

1. 图(网络)的定义
2. 图的数学表示
3. 路径
4. 图的连通性
5. 最小生成树
6. 度,平均度
7. 网络的密度
8. 网络平均路径长度
9. 网络的聚类(clustering coefficient)系数

networkx实现

问题往往比答案更重要,以下所有实现都基于一个实际的问题而言

#  图的创建
# 1. 由图的定义可知,图由点集对象和边集对象所组成。因此我们定义好点和边即定义出一个图,定义一个图1所示的图
import networkx as nx
# 定义节点集
nodes = [1,2,3,4,5,6,7,8,9,10]
G.add_nodes_from([1,2,3,4,5,6,7,8,9,10])
# 定义边集
edges = [(1, 2),(1, 3),(1, 4),(1, 6),(2, 4),(2, 5),(3, 4),(3, 6),(4, 5),(4, 6),(4, 7),(5, 7),(6, 7),(6, 8),(7, 8),(8, 9)]
G.add_edges_from(edges)

# 图的使用
# 定义节点集
nodes = [1,2,3,4,5,6,7,8,9,10]
G.add_nodes_from([1,2,3,4,5,6,7,8,9,10])
# 定义边集
edges = [(1, 2),(1, 3),(1, 4),(1, 6),(2, 4),(2, 5),(3, 4),(3, 6),(4, 5),(4, 6),(4, 7),(5, 7),(6, 7),(6, 8),(7, 8),(8, 9)]
G.add_edges_from(edges)
# 帮我看看1号节点有多少个朋友?(判断节点的度)
print('1号节点有%d个朋友'%G.degree(1))
# 帮我看看1号节点和10节点,9节点分别是不是朋友?(判断节点之间是否有路径)
print('1 和 9 是朋友') if nx.algorithms.shortest_paths.generic.has_path(G, 1, 9) else print('1 和 9 不是朋友')
print('1 和 10 是朋友') if nx.algorithms.shortest_paths.generic.has_path(G, 1, 10) else print('1 和 9 不是朋友')
# 帮我看看网络中所有的节点能不能相互通信(判断网络是不是连通的)
print('网络中所有的节点能相互通信')if approx.node_connectivity(G) == 0 else print('网络中所有的节点不能相互通信')
# 帮我看看这个网络的平均路径长度,聚类系数?我等会有大用
print('聚类系数%f'%nx.algorithms.cluster.average_clustering(G))
print('平均路径长度%d'%nx.algorithms.shortest_paths.generic.average_shortest_path_length(G))
上一篇下一篇

猜你喜欢

热点阅读