文档介绍:python复杂网络分析库NetworkX
阅读目录
无向图
有向图
•加权图
经典图论算法计算
强连通、弱连通
•子图
•条件过滤
pred, succ
NetworkX是一个用Python语言开发的图论与复杂网络建模, 'c')]
(road_nodes. iteritems()) (road_edges)
(G)
plt .savefig("youxiangtu .png")
plt .show()
#-*- coding:utf8-*-
import networkx as nx
import as pit
G = ()
#road_nodes = {'a': 1, 'b': 2, 'c': 3} road_nodes = {'a' :{1:1}, 'b' :{2:2}, 'c' :{3:3}} road_edges = [('a', 'b'), ('b', 'c')]
(road_nodes. iteritems()) (road_edges)
(G)
plt .savefig("youxiangtu .png")
plt .show()
加权图
有向图和无向图都可以给边赋予权重,用到的方法是add_weighted_edges_from,它接 受1个或多个三元组[u,v,w]作为参数,其中u是起点,v是终点,w是权重。
例1:
#!—*— coding:utf8—*—
import networkx as nx
import as pit
G = () #建立一个空的无
向图G
(2,3) #添加一条边 2—3
(隐含着添加了两个节点2、3)
ted_edges_from([(3, 4, ),(3, 5, )])
#对于无向图,边3-2与边2-3被认为是一条边
pri nt t_edge_da ta(2, 3)
pri nt t_edge_da ta(3, 4)
pri nt t_edge_da ta(3, 5)
(G)
pit .savefig("wuxiangtu .png")
pit .show()
输出
{}
{'weight' : }
{'weight' : }
经典图论算法计算
计算1 :求无向图的任意两点间的最短路径
# —*— coding: cp936 —*—
import networkx as nx
import as pit
#计算1:求无向图的任意两点间的最短路径
G = ()
([(1,2),(1,3),(1,4),(1,5),(4,5),(4,6),(5,6)])
path = (G)
print path[1]
计算2:找图中两个点的最短路径
鬲
import networkx as nx
G=()
([1,2,3,4])
(1,2)
(3,4)
try:
test_pat h_leng th(G,1,4)
print n
except : print 'No path'
回到顶部
强连通、弱连通
• 强连通:有向图中任意两点v1、v2间存在v1到v2的路径(path)及v2到v1的 路径。
•弱联通:将有向图的所有的有向边替换为无向边,所得到的图称为原图的基图。如果 一个有向图的基图是连通图,则有向图是弱连通图。
距离
例1:弱连通
#—*— coding:utf8—*—
import networkx as nx
import as plt
#G = th_graph(4, crea ())
#0 1 2 3
G = (4, ()) #默认生成节点 0 1