首先,基本上所有的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++写成的库。