欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

介紹幾個圖論和復雜網絡的程序庫 —— BGL,Qui

系統 2211 0

http://blog.sciencenet.cn/home.php?mod=space&uid=404069&do=blog&id=297233

?

剛加入復雜網絡圈子,暫時還沒有成熟的研究內容,先發個資料性的東西占坑:)

作復雜網絡研究離不開對各種實際或模擬網絡的統計、計算、繪圖等工作。對于一般性的工作,我們可以用Pajek、Netdraw和Ucinet等軟件完成。但對一些特殊應用(比如自己開發了一個新模型),現有的軟件不能提供相應的建?;蛴嬎愎δ?,這時就必須要通過編程的辦法來解決問題了。

在這篇文章中,向大家介紹我使用過的4個面向圖論及復雜網絡分析的程序庫,它們可以(分別或同時)用C、C++、C#和Python等語言調用。同時這些庫都是開源的,可以通過研讀它們的源代碼提高編程水平。

好,下邊開始介紹,第一位出場的是:

一、Boost Graph Library —— “準”C++標準庫

Boost Graph Library(BGL)是C++ Boost庫的成員之一。Boost是一個經過千錘百煉的C++庫,作為標準模板庫STL的后備,是C++標準化進程的發動機之一。Boost庫由C++標準委員會庫工作組成員發起,在C++社區中影響甚大,是不折不扣的“準”標準庫。

BGL的特點是靈活性和高運行效率。BGL是以模板的形式提供的,這意味著你可以在模板的基礎上創建自己的類型,比如自定義的節點類。BGL的開發者是世界上最頂尖的C++專家,這個庫中實現的各種圖算法具有非常高的執行效率,而且BGL本身具有工業強度,你可以放心的使用它。此外,BGL的代碼結構良好,是非常值得研讀的精品,對于學習算法與數據結構會有很大的幫助。

從我的角度來看,BGL的缺點是沒有提供復雜網絡分析的算法,所以在實際中我使用的還不多。建議對于分析大規模的網絡問題時使用這個庫,利用它良好的圖數據結構,開發自己的復雜網絡分析算法,將會獲得很高的執行效率。

參考資源:
BGL官方網站: http://www.boost.org/doc/libs/1_42_0/libs/graph/
技術書籍《The Boost Graph Library》,作者: Jeremy G. Siek,Lie-Quan Lee,Andrew Lumsdaine,見: http://www.douban.com/subject/1463103/
《使用Boost Graph library》,一個簡短的BGL使用介紹,適合快速上手,見: http://www.cppprog.com/2009/0408/100.html
《Boost Graph Library 學習筆記》,討論學習BGL中遇到的問題,見: http://blog.csdn.net/magicblue/archive/2009/05/22/4208976.aspx

二、QuickGraph —— .NET平臺下的BGL

QuickGraph是一個用C#語言編寫的.NET組件庫,所提供的算法與BGL類似,可以看作是Boost Graph Library在.NET平臺下的實現。目前QuickGraph的最高版本是3.3,支持.NET 2.0和.NET 3.5平臺。

對于復雜網絡研究,QuickGraph能夠提供的幫助與BGL基本類似。如果你對C#語言(以及其它支持.NET的語言)比較熟悉,可以考慮選擇這個庫。但由于.NET程序是在虛擬機下運行的原因,所以效率不夠高,不適合處理大規模的計算問題。

參考資源:
QuickGraph官方網站: http://www.codeplex.com/quickgraph
中文資料暫時還找不到。

三、igraph —— C語言寫的復雜網絡分析庫

igraph是一個建立和操縱無向圖、有向圖的開源C程序庫,它既包含經典圖論里的各種算法(例如最小支撐樹、網絡流等),也包含了最近的出現的一些網絡分析算法(如社團結構搜索等)。

igraph是C寫的,這意味著你很容易在C/C++中使用它。如果你不熟悉這兩種語言,或者覺得用C/C++太繁瑣的話,igraph還提供了R語言(一種國外很流行的統計分析語言)和Python語言的接口,所以也很適合科研人員使用(我現在用的是Python,調用igraph很簡單)。

參考資料:
igraph官方網站: http://igraph.sourceforge.net/
關于Python語言的介紹,見: http://zh.wikipedia.org/wiki/Python
關于R語言的介紹,見: http://zh.wikipedia.org/wiki/R語言

四、NetworkX —— 全面支持復雜網絡分析的Python包

NetworkX是一個創建和操縱復雜網絡,并對復雜網絡的結構、功能和動力學進行研究的Python包,它提供了目前應用最廣泛的一些復雜網絡分析算法,當然也包括基本的經典圖論算法。NetworkX目前只能在Python語言中使用(這也是我學Python的原因之一,見《從C#到Python —— 談談我學習Python一周來的體會》)。

我個人認為NetworkX比igraph要好用,因為NetworkX的文檔更清晰易讀,程序結構組織得也很好,我現在主要在用這個包。但NetworkX的執行效率多數情況下會比igraph要低(見Drew Conway所作的對比: http://files.meetup.com/1406240/sna_in_R.pdf)。所以也不適合作太大規模的網絡分析計算。此外,NetworkX和Python的一個繪圖包——Matplotlib結合得很好,可很方便地進行復雜網絡可視化。

參考資源:
NetworkX官方網站: http://networkx.lanl.gov/
Matplotlib(科學繪圖的Python包): http://matplotlib.sourceforge.net

五、總結

本文介紹了圖論與復雜網絡研究常用的一些程序庫。用好這些程序庫(以及其它一些軟件工具),可以避免我們無謂的re-invent the wheel,從而提高工作效率。在網上了解到,國外同行用這些庫的很多,而在國內還很少搜索到這方面的資料(除了BGL)。作為我進復雜網絡圈的敲門磚,向各位圈友推薦這幾個庫。另外,我近期正在學習Python和NetworkX,如果您感興趣,歡迎和我交流:)

image

介紹幾個圖論和復雜網絡的程序庫 —— BGL,QuickGraph,igraph和NetworkX


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: jjizz老女人多水喷水 | 国产一码二码免费观看 | 久久天天 | 污污美女| 欧美综合国产精品久久丁香 | 偿还的影视高清在线观看 | 亚洲视频在线一区 | 老人与老人免费a级毛片 | 亚洲一区二区三区久久精品 | 久久精品免费国产 | 欧美淫片| 91成人在线 | 国产精品99999999 | 国产中文视频 | 亚洲一区二区在线播放 | 成人自拍视频网 | 免费a视频在线观看 | 97碰碰碰| 欧美日韩久久久 | 欧美乱视频 | 国产熟妇无码A片AAA毛片视频 | 午夜影院试看五分钟 | 亚洲国产专区 | 国产在线精品一区二区三区 | 91中文字幕在线 | 激情宗合网 | 一区二区三区四区免费 | 国产精品久久久久久久久久久新郎 | 国产成人aa免费视频 | 成人性生活视频在线播放 | 综合国产 | a级毛片免费高清视频 | 91精品国产日韩91久久久久久 | 日本精品中文字幕有码 | 亚洲免费人成在线视频观看 | 日本a毛片 | 一区免费看| 天天操天天摸天天舔 | 精品久久洲久久久久护士免费 | 亚洲性生活免费视频 | 欧美日韩一区二区三区在线观看 |