我有一个neo4j数据库,有大约1000万个节点。它们通过与属性“weight
”的关系连接起来。我想根据最小和最大成本(通过“weight
”属性)找到起始节点和目标节点之间的路径。我正在使用Java,因此我研究了GraphAlgoFactory
和Dijkstra
类。 Dijkstra只会给我多条路径但成本最低。但我想要多条路径,其成本高于最短路径的成本。
让我们说两个节点A
和B
之间有多条路径。最小路径的成本为20
(具有4个节点)。但我希望所有路径的费用为25
到30
。有可能吗?
任何帮助将不胜感激......
答案 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