是否有可能在neo4j中找到最小和最大成本之间的所有路径?

时间:2015-10-23 11:11:02

标签: neo4j dijkstra

我有一个neo4j数据库,有大约1000万个节点。它们通过与属性“weight”的关系连接起来。我想根据最小和最大成本(通过“weight”属性)找到起始节点和目标节点之间的路径。我正在使用Java,因此我研究了GraphAlgoFactoryDijkstra类。 Dijkstra只会给我多条路径但成本最低。但我想要多条路径,其成本高于最短路径的成本。

让我们说两个节点AB之间有多条路径。最小路径的成本为20(具有4个节点)。但我希望所有路径的费用为2530。有可能吗?

任何帮助将不胜感激......

1 个答案:

答案 0 :(得分:0)

不确定Java,但您可以从Cypher中的路径聚合数据。

您首先MATCH开始和结束节点与[*1..n]关系,然后RETURN所有路径和此路径中关系的聚合(即减少)权重。

这一行:

MATCH path = (a:Node {some: 'property'})-[*1..10]-(b:Node {some: 'property'})
RETURN path, reduce(sum = 0, r IN relationships(path) | sum + r.weight) AS weight_sum

http://neo4j.com/docs/stable/query-functions-collection.html#functions-reduce