有偿求助:如何通过cypher从一个节点开始找到所有互为双向关系的元素
发布于 2 年前 作者 tonyliangli 1640 次浏览 来自 问答

如题,有如下图的一个关系: 屏幕快照 2017-07-28 下午6.57.48.png 请问如何找到其中都是双向关系的元素呢, 例如本图最终存在双向关系的元素是1,2,3和1,3,4。 如果2和4也是双向关系,那最终互有关系的元素是1,2,3,4。 即要满足的条件是一个集合所包含的元素必须两两都是双向关系,且组成的最大的集合。 这个能通过cypher语句实现吗?望大神指教,谢谢!

补充一下:这个寻找是从一个节点开始的,比如从1节点开始,找到所有和1节点形成双向关系的元素,并且这些元素彼此也形成双向关系,但是找到所形成的最大集合。

有偿求助,谢谢!

5 回复

可以借助最短路径的dijkstra算法的思想 先找两个点,再找第三个点,再找第四个 用一条cypher好像有困难 具体的语句我也不知道。 只能给个思路了

有人能回答吗?一直没有找到效率非常高的办法。

match (n1)-[r1]->(m)-[r2]->(n2) where n1=n2 return n1,r1,m,r2,n2

这样查出所有,互相指向的节点和关系来。 但 不建议创建双向指向的关系,详见:https://graphaware.com/neo4j/2013/10/11/neo4j-bidirectional-relationships.html

请问这个是怎么解决的呢

使用ALGO的全图最短路径算法计算所有节点对在两个方向上的距离; 对距离进行排序; 返回距离为1的所有节点集合。

回到顶部