复杂网络
程序员文章站
2022-06-01 15:29:10
...
NetworkX是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网络数据分析、仿真建模等工作。networkx支持创建简单无向图、有向图和多重图(multigraph);内置许多标准的图论算法,节点可为任意数据;支持任意的边值维度,功能丰富,简单易用。
1.安装networkx包
2.
G = nx.Graph() #建立一个空的无向图G
G.add_node(1) #添加一个节点1
G.add_edge(2,3) #添加一条边2-3(隐含着添加了两个节点2、3)
G.add_edge(3,2) #对于无向图,边3-2与边2-3被认为是一条边
print "nodes:", G.nodes() #输出全部的节点: [1, 2, 3]
print "edges:", G.edges() #输出全部的边:[(2, 3)]
print "number of edges:", G.number_of_edges() #输出边的数量:1
有向图:
G = nx.DiGraph()
G.add_node(1)
G.add_node(2)
G.add_nodes_from([3,4,5,6])
G.add_cycle([1,2,3,4])
G.add_edge(1,3)
G.add_edges_from([(3,5),(3,6),(6,7)])
有向图转无向图与无向图转有向图:
- Graph.to_undirected()
- Graph.to_directed()
加权图:
有向图和无向图都可以给边赋予权重,用到的方法是add_weighted_edges_from,它接受1个或多个三元组[u,v,w]作为参数,其中u是起点,v是终点,w是权重
3.以中医方向为例
例如构建中医方剂网络:方剂学是研究中药方剂租房、变化和临床应用规律的一门学科,主要包括方剂组成的原则、使用及变化等。中药方剂学网络的构建主要有中药-中药、中药-方剂以及方剂-方剂三种。中药-中药网络中将方剂中每一味药抽象为节点,根据是否在同一方剂中确定各味药节点之间是否存在边关联,因此由不同方剂抽象出的完全图相互关联,进而形成中药复杂网络。
中药-方剂网络构建则将单味药及方剂分别作为节点,根据单味药与方剂的从属关系进行关联。
方剂-方剂网络则视方剂为节点,根据不同方剂间是否存在同味药进行关联