最近在学习图相关的东西,networks真的是个神器,在不追求特别高效率的情况下,简直是不能再方便了,简单记录下心得。
一、基础知识
(一)数据结构
数据结构在很大程度上决定了图计算的效率,用了有一段时间的python了,要说效率那一定是dict了,英雄所见略同,networks的数据结构也是一系列的dict的嵌套。
{'A': {'B': {5}}, 'C': {'B': {3}}, 'B': {'A': {2}, 'C': {1}}}
第一个的含义:A-B权重为5。
当然,第三层括号里还可以继续嵌套新的字典存别的值,这里不展开说了。
(二)图的类型
目前networks支持四种类型的图
(1)无向图——Graph
(2)有向图——DiGraph
(3)多路径无向图——MultiGraph
(4)多路径有向图——MultiDiGraph
二、用法
(一)创建图、添加边
import networkx as nx
G = nx.Graph() #初始化一个无向图
G.add_edge(1, 2) # 增加一条边,没有指认权重,则默认为1
G.add_edge(2, 3, weight=0.9) # 增加边并指定权重为0.9
#一次增加多条边
e