图的任意两个节点之间的最长最短路径

Ans*_*hul 3 neo4j cypher

我想在我的Neo4j数据库中找到两个彼此相距最远的节点.出于我的分析的目的,我正在考虑两个节点之间的最短距离作为它们之间的距离.因此,最远的两个节点将在它们之间具有最长的最短路径.我使用Cypher的以下语法来查找最短的节点.

给定Neo4j示例文档http://docs.neo4j.org/chunked/milestone/query-match.html#match-shortest-path中显示的两个节点,我可以运行以下Cypher查询.

MATCH p = shortestPath((martin:Person)-[*..15]-(oliver:Person))
WHERE martin.name = 'Martin Sheen' AND oliver.name = 'Oliver Stone'
RETURN p
Run Code Online (Sandbox Code Playgroud)

我的数据库有超过50万个节点.蛮力的方式显然需要很长时间.有没有简单或更快的方法来获得这两个节点?

[作为一个额外的皱纹...图表被加权,但这个细节可以忽略.]

Nic*_*las 5

如果我正确读到这个,你想要所有对最短的路径.这将为您提供一个列表,其中每个节点都是一个源,也是每个其他节点的最短路径.虽然它确实按重量做,但你可以简单地使用1的重量来做所有事情.

你必须自己用Java实现它,因为Cypher没有任何东西可以做到这一点.