2017-07-29 78 views
0

neo4j nodes and relationships找到所有節點具有雙向關係,從一個特定節點的Neo4j

此使用暗號開始是一個相當艱鉅的任務。我試圖從特定節點開始找到所有具有雙向關係的節點。根據上面的圖片,我想找到從節點1開始的所有雙向關係。只有具有雙向關係的節點相匹配。例如,節點1,3,4匹配,節點1,2,3匹配爲兩個獨立的組。但是,如果節點2和4具有雙向關係,則節點1,2,3,4作爲一個組匹配。主要思想是所有節點都在這樣一個組中連接。我的想法是找到雙向關係從1開始並繼續處理的所有節點,但我無法繼續。任何人都可以幫助我解決這個問題,非常感謝。順便說一下,只需要最大的「雙向循環」。

+0

任何人都可以提供幫助嗎?這麼困難。 –

回答

0

你的問題看起來很像查找圖中強連通的組件。如文檔中所定義。

如果在所有的 頂點(節點)對之間存在路徑,則有向圖被強連接。該算法按照指示處理圖形,因此 關係的方向非常重要並且強連接 只有在兩個方向上的節點之間存在關係時才存在構件。

查看更多documentation。您將需要neo4j-graph-algorithms

示例查詢,將圖的組件寫回節點。

CALL algo.scc('Label','C', {write:true,partitionProperty:'partition'}) 
YIELD loadMillis, computeMillis, writeMillis, setCount, maxSetSize, minSetSize 

然後你可以用下面的查詢找到你最大的組件。

MATCH (u:Label) 
RETURN distinct(u.partition) as partition,count(*) as size_of_partition 
ORDER by size_of_partition DESC LIMIT 1 
+0

欣賞很多。但我試過了,它不起作用。該算法只能確定可能形成雙向關係圓的節點,但不能確定該圓中的每個節點都是雙向連接的。例如,2和4在我的圖片中沒有連接,但是當我試圖用圖算法解決問題時,它給出了結果1,2,3,4,正確的結果是1,2,3和1, 3,4。只有2和4連接1,2,3,4才能滿足我的需要。 –

相關問題