这是一项相当艰苦的工作。我试图从特定节点开始寻找具有双向关系的所有节点。基于上图,我想找到从节点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