确定有向断开图中的最长单向路径

时间:2014-05-06 10:02:30

标签: neo4j cypher graph-databases

我有一个定向断开图,其中一些顶点(节点)可以通过不同类型的多个单向关系连接。图表可能有循环。

如何确定图表中最长单向路径的长度?我一直在尝试以下查询但没有成功:

START n=node(*)
MATCH p=n<-[rels]-m 
WITH COLLECT(p) AS paths, MAX(length(p)) AS maxLength 
RETURN FILTER(path IN paths 
  WHERE length(path)= maxLength) AS longestPaths

提前致谢,

1 个答案:

答案 0 :(得分:2)

怎么样:

MATCH p=(n)<-[:RELTYPE*]-(m)
RETURN length(p)
ORDER BY LENGTH(p) DESC
LIMIT 1

请注意,根据图表的结构和大小,此类查询可能会很昂贵。

对于Neo4j 1.9使用:

START n=node(*)
MATCH p=(n)<-[:RELTYPE*]-(m)
RETURN length(p)
ORDER BY LENGTH(p) DESC
LIMIT 1