1. 程式人生 > >各種複雜網路處理工具

各種複雜網路處理工具

各種複雜網路處理工具

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來,你不會後悔的。

img

對比很明確,當圖較大時,兩者甚至可以達到幾百倍的差距。

建議

SNAP的平臺使用C++開發,速度快,但是介面文件相對不太方便,可以學習一下

Igraph比networkx快很多,可以考慮轉

networkx文件很好,速度真心不行,看來庫的實現很重要

BGL可能只適用圖,對複雜網路可能支援不太好

關於使用SNAP生成給定冪律指數的power-law圖,由於需要生成大圖,我選擇使用SNAP,相關的操作見部落格snap平臺使用

猜想

如果通過python介面,使用snap的庫,並在spark上執行,豈不是相當於一個分散式圖計算系統了,當然,在不考慮速度的情況下!