Я пытаюсь запустить эти два запроса cypher, и я не понимаю разницу между ними. Цель здесь состоит в том, чтобы найти несколько путей между заданными двумя узлами, чтобы сумма транзитного времени в этом пути находилась в порядке возрастания.разница между двумя запросами cypher
Q1:
MATCH p =(:`ml` { placeId: 960 })-[:ETA*0..10]->(:`ml` { placeId: 814 })
return p, p as allshortestPaths,
REDUCE(time=0, r in relationships(p) | time+r.transit_time) AS totalTime
ORDER BY totalTime ASC
Q2:
MATCH (from:`ml` { placeId: 960}), (to: `ml` {placeId: 814}) ,
paths = allShortestPaths((from)-[:ETA*]->(to))
WITH REDUCE(time = 0, rel in rels(paths) | time + rel.transit_time)
AS totalTime, paths
RETURN (totalTime)
ORDER BY totalTime ASC
В этом я получить лучший результат из Q1
Кроме того, эти операции занимают очень много времени. Любой другой лучший способ сделать это может использовать алгоритмы графа? Я думаю, что это можно сделать с помощью алгоритма Дейкстры, любая помощь о том, как указать cost_parameter там, и как использовать, будет замечательно. Я использую py2neo и neo4j.