各種複雜網路處理工具
各種複雜網路處理工具
networkx
igraph
BGL
SNAP
還有matlab的包,軟體gephi,基於java等
對於大規模網路,主要問題在於速度!
graphs與networks的區別在於:networks在graphs的基礎上,在nodes和edges上存在關聯的資料。
igraph
開發語言:C語言,效率較高
使用語言:R,C,python
視覺化:igraph和ggplot2
BGL(Boost graph Library)
開發語言:C++,C++的準標準庫Boost提供
演算法:圖演算法,(估計是沒有提供複雜網路支援的,也不一定)
使用語言:C++
NetworkX
開發語言:python,速度慢
使用語言:python
視覺化:matplotlib
SNAP
斯坦福提供的用於複雜網路計算的平臺庫
開發語言:C++,核心使用C++開發
使用語言:Python,C++
NetworkX與Igraph對比
NetworkX和igraph是做網路分析非常常用的兩個包,且兩者皆可在Python中執行。兩者的功能也大體類似。但就效率而言,後者要比前者高出很多。原因在於:NetworkX is a pure-python implementation, whereas igraph is implemented in C.因此,如果是做大型網路的需要注意了,趕緊從NetworkX跳到igraph來,你不會後悔的。
對比很明確,當圖較大時,兩者甚至可以達到幾百倍的差距。
建議
SNAP的平臺使用C++開發,速度快,但是介面文件相對不太方便,可以學習一下
Igraph比networkx快很多,可以考慮轉
networkx文件很好,速度真心不行,看來庫的實現很重要
BGL可能只適用圖,對複雜網路可能支援不太好
關於使用SNAP生成給定冪律指數的power-law圖,由於需要生成大圖,我選擇使用SNAP,相關的操作見部落格:snap平臺使用
猜想
如果通過python介面,使用snap的庫,並在spark上執行,豈不是相當於一個分散式圖計算系統了,當然,在不考慮速度的情況下!