igraph/networkx学习笔记之一 —— 数据结构

本文探讨了igraph和networkx两个图论库在数据结构上的差异。igraph使用EdgeList作为基本的图结构,支持多边,而networkx基于Python字典,适合快速实现。文中介绍了igraph的数据结构细节,包括顶点和边的存储方式,以及增删操作的时间复杂度。同时,提到了networkx如何利用Python字典的特性实现Graph、DiGraph、MultiGraph和MultiDiGraph等数据结构。
摘要由CSDN通过智能技术生成

      首先,基本上所有的graph library都有其局限性,不同的数据结构有优点的同时必然有缺点,图算法对数据结构的依赖性构成另一个原因。所以如果是想用一个工具包解决所有的问题显然是一种奢望,很多时候甚至必须要从头写自己的代码。但是阅读igraph和networkx这样成型了的函数库对熟悉算法和相关语言的技巧是很有用的。

 

      igraph(http://igraph.sourceforge.net/)是在处理复杂网络问题中用的比较多的C语言函数库,不过它也提供了R,python的接口。

 

      networkx(http://networkx.lanl.gov/)是用基于python的dictionary的一个复杂网络库。众所周知的是,python语言在对程序效率要求不是很苛刻的时候是构建程序的最佳选择一(对python不熟悉的图论研究者可以看看我在人人上的一篇日志(http://blog.renren.com/blog/bp/QmicNX45As),而用python语言写成的networkx充分利用了python中的dictionary的特性,将python的动态性发挥到了极致,研究networkx源代码对于研究算法和做相关的实验是我们的不二选择。但是对于规模很大的问题,性能上的要求需要我们去使用诸如igraph,BGL(boost graph library,不过基本已经停止开发)之类用C/C++写成的库。

 

 

igraph中图的数据结构

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值