У меня есть простой взвешенный график.Я знаю, как найти кратчайший маршрут (с точки зрения прыжков), и я знаю, как найти кратчайший маршрут по весу.Мне нужно найти кратчайший маршрут по весу, но я также должен ограничить количество прыжков.Возможно ли это с neo4j?
Обновление
текущий набор данных:
MERGE (a:Loc {name:"A"})
MERGE (b:Loc {name:"B"})
MERGE (c:Loc {name:"C"})
MERGE (d:Loc {name:"D"})
MERGE (e:Loc {name:"E"})
MERGE (f:Loc {name:"F"})
MERGE (a)-[:ROAD {cost:50}]->(b)
MERGE (a)-[:ROAD {cost:50}]->(c)
MERGE (a)-[:ROAD {cost:100}]->(d)
MERGE (b)-[:ROAD {cost:40}]->(d)
MERGE (c)-[:ROAD {cost:40}]->(d)
MERGE (c)-[:ROAD {cost:80}]->(e)
MERGE (d)-[:ROAD {cost:30}]->(e)
MERGE (d)-[:ROAD {cost:80}]->(f)
MERGE (e)-[:ROAD {cost:40}]->(f);
Текущий код:
MATCH (start:Loc{name:'A'}), (end:Loc{name:'F'})
CALL algo.kShortestPaths.stream(start, end, 40, 'cost' ,{})
yield nodeIds, costs
RETURN [node in algo.getNodesById(nodeIds) | node.name] AS places,
costs,
reduce(acc = 0.0, cost in costs | acc + cost) AS totalCost
Rightтеперь код возвращает:
![results](https://i.stack.imgur.com/YZaov.png)
Что мне нужно сделать, так это: мне нужно добраться от A до F с максимум 3 прыжками.Поэтому мне действительно нужен только третий ряд из результатов, первые два для меня не важны, так как у них обоих по 4 прыжка.