一、介绍:
networkx是python的一个第三方包,可以方便地调用各种图算法的计算。
通过调用python画图包matplotlib能实现图的可视化。
二、简单实现:
(1):画一个三角形
import networkx as nx
import matplotlib.pyplot as plt
g = nx.Graph()
g.add_edge('a','b') #连边a-b
g.add_edge('b','c') #连边b-c
g.add_edge('c','a') #连边c-a
nx.draw(g) #画出图g
plt.show() #显示
PS:有趣的是,当不规定权值or苛刻的条件,出来的图是满足条件的随机图。
(2):转有向图:讲ng.Graph ---> ng.DiGraph ,即可
import networkx as nx
import matplotlib.pyplot as plt
G = nx.DiGraph()
G.add_edge(1,2)
G.add_edge(2,3)
G.add_edge(3,1)
nx.draw(G)
plt.show()
(3):关于带权边的操作:
G.add_weighted_edges_from(u,v,w) ---> 添加由u到v权值为w
G.get_edge_data(u,v) ---> 获取u到v边的权值 , 数据类型为字典类型, 且用print输出
(4):简单的调用图算法:
三、调用图算法
NetworkX提供了常用的图论经典算法,例如DFS、BFS、最短路、最小生成树、最大流等等,非常丰富
可以浏览NX的在线手册http://networkx.lanl.gov/reference/algorithms.html,对每个算法都提供了详细的帮助文档和示例。
path=nx.all_pairs_shortest_path(G) #调用多源最短路径算法,计算图G所有节点间的最短路径
print path[0][2] #输出节点0、2之间的最短路径序列: [0, 1, 2]