大家好,今天和大家分享一下图算法中的一些基础知识,已经如何使用python中的networkx库实现网络图的基本建模操作。内容较多,可通过右侧目录栏跳转。
1. 邻接矩阵
1.1 方法介绍
邻接矩阵是图的等价表示,邻接矩阵的元素代表网络节点连线之间的交互关系。
如图1,对于一个无向无权网络,它的邻接矩阵A是一个对称矩阵。其中对角线元素都为0,;无向表示节点之间的连线不区分方向,即节点之间是双向关系,
;无权代表节点之间的边没有权重,此时邻接矩阵A是由0,1元素组成的,如果节点之间存在连边那么元素等于1,否则等于0。
根据邻接矩阵求出网络所包含的连边的数量,邻接矩阵的所有非零元素加起来除以2。
如图2,有向无权网络,如果存在一条连边从节点 i 指向节点 j,那么 ,有向网络不一定是对称的
。
如图3,无向加权网络,和无向无权网络的区别就是,节点之间的连边有权重。因此邻接矩阵中的非零元素就不一定等于1了。网络的连边数量等于:邻接矩阵中非零元素的数量求和
如图4,自环网络,存在从节点出发到它自身的连边,该邻接矩阵中,对角线元素不一定等于0,如果存在自环那么
1.2 代码实现
(1)无向无权图
创建无向图(空图): nx.Graph()
添加节点: Graph.add_nodes_from()
添加连边: Graph.add_edges_from()
网络图可视化: