2011-03-31 19 views
15

目前我們已經向各地1500節點2000邊緣動態更新的網絡圖。它不斷增長。我們目前的佈局引擎使用Prefuse - 力定向在特定佈局 - 它大約需要10分鐘,一個沉重的服務器,以獲得一個不錯的,穩定的佈局。用於大型數據集的最快的強制定向網絡圖引擎是什麼?

我看的有點GraphViz SFPD算法,但還沒有測試尚未...

是否有更快的選擇,我應該看?

  • 我不關心節點和邊緣的視覺外觀 - 我們處理該分開 - 只是把x, y節點上。
  • 我們需要能夠與圖形的特定部分的佈局屬性鼓搗,例如,應用特殊更緊或更鬆泉針對某些節點。

在此先感謝,並請評論,如果您需要更具體的信息來回答!

編輯:我特別找速度比較佈局引擎選項之間。基準,具體的例子,或只是個人經驗就足夠了!

回答

6

我會看看OGDF,我沒有用過OGDF特別http://www.ogdf.net/doku.php/tech:howto:frcl ,但我確實知道,快速多極多級是一個很好的高性能算法,當你在處理各類涉及力導向佈局的運行時間隨着你想要的節點數量,這很重要。 爲什麼,除了其他原因,該算法是真棒:快速多極方法。快速多極方法是一種矩陣乘法近似,它可以將矩陣乘法的O()運行時間近似爲一個小程度。理想情況下,你會得到如下代碼:http://mgarland.org/files/papers/layoutgpu.pdf但我無法在任何地方找到它;無論如何,CUDA解決方案可能並不是你的衚衕。

祝你好運。

+0

OGDF和FM3算法的描述看起來很有希望!我不認爲CUDA已經擺在桌面上(我們的基礎架構都是第三方託管的,並且非常安全),但您永遠不知道 - 也許我們可以將我們的graphML發佈到GPU雲提供商(http://www.hoopoe-cloud。 com /?)的佈局。 Quote:「與 在幾秒鐘內繪製圖形的幾十萬頂點」聽起來很有希望... – peteorpeter 2011-04-07 14:07:40

+0

不知道你是如何錯過了代表...我認爲你是最好的答案,但是。對不起:( – peteorpeter 2011-04-19 19:26:58

0

我會看看http://neo4j.org/其開源這是你的情況有利,所以你可以定製你的需求。 github帳戶可以在here找到。

+0

沒有解決圖表_layout_(我擔心這個問題的主旨),但從數據管理的角度來看很有趣。我們確實需要遍歷,處理和調查後端的圖形結構。感謝您的鏈接! – peteorpeter 2011-04-06 16:57:30

+0

如果你正在尋找具體的算法,你可以看看http://www.eclipse.org/gef/zest/,這可能是更多你感興趣的東西:)我知道一個事實,它可以處理多達10,000簡單臺式計算機上的節點/關係。 – myusuf3 2011-04-06 17:20:18

+0

我會給候選人列表增加熱情 - 任何關於速度的想法? – peteorpeter 2011-04-07 14:00:40

6

的Gephi工具包可能是你需要的東西:一些佈局都非常快又有着良好的品質:http://gephi.org/toolkit/

30 secondes到2分鐘就足以佈置這樣的圖,這取決於你的機器上。 可以使用ForAtlas佈局,或胡一帆多層次佈局。

對於非常大圖(+ 50K節點和500K鏈接),該OpenOrd佈局WIL

+0

)這顯然是LinkedIn地圖使用的(http://inmaps.linkedinlabs.com/network)。看起來非常有前途! – peteorpeter 2011-05-05 14:03:33

15

我寫了一個基於JavaScript的圖形繪製庫VivaGraph.js

它計算佈局和呈現與2K +頂點,在〜10-15秒8.5K邊緣圖。如果你不需要渲染部分,它應該更快。

下面是一個視頻演示它的行動:WebGL Graph Rendering With VivaGraphJS

在線演示可用here。 WebGL需要查看演示,但不需要計算圖形佈局。該圖書館也在node.js下工作,因此可以用作服務。

API使用示例(僅佈局):

var graph = Viva.Graph.graph(), 
    layout = Viva.Graph.Layout.forceDirected(graph); 

graph.addLink(1, 2); 
layout.run(50); // runs 50 iterations of graph layout 

// print results: 
graph.forEachNode(function(node) { console.log(node.position); }) 

希望這有助於:)

+1

令人印象深刻。它是JS,並且易於在客戶端/服務器之間移動非常強大 - 這是一個很大的用原始的Prefuse java庫來吸引人。 – peteorpeter 2012-10-05 16:29:40

+0

哇圖書館比我測試過的其他圖表渲染圖表要快得多。 – 2015-03-01 19:05:36

3

在一個商業化的情況下,你可能也想看看家裏的yFiles圖形佈局和可視化圖書館。

即使是JavaScript version,它也可以使用不同的排列方式爲數千個節點和邊緣執行佈局。 「有機」佈局風格是一種類似於Neo4j的瀏覽器應用程序中使用的與力相關的佈局算法。但是還有更多可用的佈局算法可以爲某些類型的圖形結構和圖表提供更好的可視化效果。根據問題的設置和結構,一些算法只需要幾秒鐘,而更復雜的實現也可以使JavaScript引擎癱瘓。到目前爲止,基於Java和.net的變體仍然表現更好,但JavaScript引擎正在迎頭趕上。

你可以使用這些算法和設置在this online demo

聲明:我爲yWorks工作,這是這些庫的製造者,但我不代表我的僱主。

相關問題