【发布时间】:2016-10-14 11:37:06
【问题描述】:
我想在我的图表 (Neo4j 3.0.4) 中查找从 A 点到 Z 点的前 5 个(最短)路径。 该图由通过关系“CONNECTED_BY”连接的几个节点组成。此连接具有应最小化的成本属性。
我是从这个开始的:
MATCH p=(from:Stop{stopId:'A'}), (to:Stop{stopUri:'Z'}),
path = allShortestPaths((from)-[:CONNECTED_TO*]->(to))
WITH REDUCE (total = 0, r in relationships(p) | total + r.cost) as tt, path
RETURN path, tt
这个查询总是返回跳数最少的子图,不考虑成本属性。存在另一个具有更多跳数且总成本较低的子图。我做错了什么?
此外,我真的想获得前 5 个子图。如果我执行这个查询:
MATCH p=(from:Stop{stopUri:'A'})-[r:CONNECTED_TO*10]->(to:Stop{stopUri:'Z'}) RETURN p
我可以看到多条路径,但第一个只返回一条路径。 当然,路径不应包含循环等。
我想通过 REST API 执行这个查询,所以应该使用 REST 调用或 cyhper 查询。
编辑1: 我想将其作为 REST Call 执行,所以我尝试了 dijkstra 算法。这似乎是一个好方法,但我必须通过在关系中添加 3 个不同的成本属性来计算权重。如何实现?
【问题讨论】: