使用Neo4j 3.1.0版本进行Cypher查询以查找最长路径

raj*_*raj 3 neo4j cypher

任何人都可以使用neo4j 3.1.0版本发送Cypher查询来找到两个节点之间的最长路径。

Mar*_*sse 5

查找最长路径的图算法未实现。

这是一个Cypher查询,它获取所有路径并按大小对它们进行排序:

// get the nodes
MATCH (a:Node), (b:Node)
WHERE ID(a) = 14 AND ID(b) = 7
WITH a,b
// match all paths
MATCH p=(a)-[*]-(b)
// return the longest
RETURN p, length(p) ORDER BY length(p) DESC LIMIT 1
Run Code Online (Sandbox Code Playgroud)

但是,对查询没有任何限制,这可能不适用于大型图。在无向图中找到最长的路径很昂贵:https//en.wikipedia.org/wiki/Longest_path_problem

而且,在查询(方向和关系类型)不受限制的情况下,查询将查找所有非定向路径。

您应该限制路径查询,或者尝试两种方法来解决没有最长路径的问题。