aboutNetworkx

本文是关于使用networkx学习图论的入门教程,适合初学者。内容包括网络x的安装、图的创建(无向图和有向图)、图的绘制、图的属性以及图上的算法应用,例如最大匹配问题。通过实例代码,帮助读者掌握networkx的基本操作和图的算法应用。
摘要由CSDN通过智能技术生成

给graph初学者:用networkx学习图论

hawksoft

networkx是一个操作图(graph)的python包。事实上它被称为复杂网络计算包,这也是她的名字networkx的来历。但网络是从实际应用来说的,初学者看到网络可能只会想到计算机网络,实际上这只是其中的的一种。以后大家会明白,大量的问题都可以表示为网络,如社交网络,分子结构等,而网络的数学基础就是图。

因此,作为图论初学者通过使用该包,不仅可以对抽象的知识能有具体的体验,更重要的是当前的图模型应用很广,越早介入,对将来的学习越有好处。

作为入门,可以按照下面的路线进行:

  • 安装和使用
  • 创建图
  • 绘图
  • 熟悉图的属性
  • 使用图上的算法

0 安装

最好使用最新的python版本,或者至少在3.5以上。
执行下面命令安装networkx包:

pip install networkx

安装完成后,在模块的前面,按下述语句导入包就可以使用了:

import networkx as nx
import matplotlib.pyplot as plt 

第2句导入的是pyplot,我们后面需要用该包来绘制图,所以一并导入。

1 创建图

  • 按照面向对象的思想,图本身就是一个对象,所以针对两种不同的图(无向图和有向图),networkx提供了两个class,分别是Graph和DiGraph。
  • 图由点和边构成,所以Graph对象提供了两个方法,一个用于向图中添加节点,一个用于向图中添加边。为了一次添加多个节点(边),这些方法的参数是列表.
  • 图中可以删除节点,删除边。这些都有对应的方法。

看下面的代码:

import networkx as nx
g = nx.Graph()
g.add_nodes_from([0,1,2,3])
g.add_edges_from([(0,1),(1,2),(2,3)])

如果是有向图,只需改变第一句,其它操作完全相同。

看下面的代码:

import networkx as nx
g = nx.DiGraph()
g.add_nodes_from([0,1,2,3])
g.add_edges_from([(0,1),(1,2),(2,3)])

2 绘图

借助于pyplot,networkx可以很方便地把定义的graph绘制出来,感觉更直观,尤其对于初学者。

networkx提供了一个绘图的函数draw,该函数参数很多,但最关键是第二个,确定每个节点的坐标。当节点的坐标定了,边也就定了,图形当然就定了。这个称为布局(layout),它实际是一个字典对象,每一个key对应一个节点,其value是该节点在绘图时的坐标(x,y)。注意在pyplot坐标系统中,(0,0)位于左下角,x坐标向右增长,y坐标向上增长。

另外,networkx也提供了一些布局。这些布局是以函数的形式提供的,只要把图对象带入该函数,该函数的返回布局字典。

看下面代码:

fig=plt.figure(figsize=(8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值