2012-06-27 46 views
2

是否有可以遍歷所述圖並根據相互關係找到節點的Neo4J圖的查詢?例如,如果節點A與節點B(雙向)相關,則B與C有關,C與D有關,D與A有關,A與C有關,B與D有關,從而存在每個節點都連接到每個其他節點的子圖,是否有一種有效的方式來返回該子圖或一組節點?根據neo4j中的相互關係查找不同的節點分組

我意識到我的解釋是可憐的,所以我在控制檯中提供的示例圖表:http://console.neo4j.org/r/qb2xmp

在這裏,我創建了一個圖,我想回到那個相互關聯的3個或以上的團體 - 所以,在這種情況下,我理想的情況是要回到斯科特,喬什,弗蘭克和本,以及弗蘭克,本和埃裏克的小組。如果可能的話,我希望能夠確定誰組成了這些個人羣體。

+0

我相信你正在尋找你的圖派(http://en.wikipedia.org/wiki/Clique_(graph_theory))或'complete subgraphs'。 http://en.wikipedia.org/wiki/Clique_problem描述了這個(並非如此簡單)問題的方法。不幸的是,我不知道neo4j是否有這樣的算法。但我擔心它沒有。 – Slomo

+0

謝謝!前景是嚴峻的,但我很高興知道! – scottandrus

回答

1

這是Clique Problem的一個實例,是NP-Complete。
Here is a related question on SO with a good explanation!

對不起,我很快輸入。所以沒有「有效」的方法來做到這一點。儘管在某些情況下,並不是不可能的,但你會找到一個算法來解決這個一般問題並在Neo4J中實現它。

+0

拍攝。我想這可能是一個更大範圍的算法問題,但我希望Neo4j可能有一個爲此定義的算法。謝謝! – scottandrus

+0

另外,如果你能想出一個實現,Neo4j社區會非常有興趣將它添加到graph-algo組件中,請參閱https://github.com/neo4j/community/tree/master/graph-algo –

+0

如果我能找到解決方案,我會感興趣的是找到一種方法。我目前正在通過[Bron-Kerbosch算法]的C#/ .NET實現(http://en.wikipedia.org/wiki/Bron%E2%80%93Kerbosch_algorithm)。 – scottandrus

0

你有沒有找到解決方案?

我實現了這樣的事情在我的項目for text network visualization但它啓動Gephi工具包(爪哇),在圖上執行一些指標計算,發現社區等,但是,這是太重了......

你可能會有興趣查看Gephi的算法,特別是在Sigma.Js中實現的Force Atlas佈局,尤其是Gephi本身使用的模塊化算法。這可能會給你一些線索,以告訴你如何進行...

+0

哇。但是,該工具如何能夠快速計算圖中的社區?其邏輯是以gephi爲基礎的? – floatingpurr

相關問題