Найти кратчайший путь между заданными несколькими узлами - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь найти кратчайший путь между указанными множественными узлами.Как у меня есть массив узлов Node, а затем есть местоположение для пользователя.Я хочу найти Ближайшее местоположение для этого пользователя между этими узлами.

Я пробовал этот запрос

UNWIND
["93049","67069","90762","86156","01067","18069","52146","04356"," 42329","53113","76131","40549","50670","50678","85774","80339"] AS plz
MATCH p=Shortestpath(
(a:plzNodes {plz: plz})-[*..14]-(b:plzNodes {plz: "88400"})
) RETURN  plz,collect(p);

1 Ответ

0 голосов
/ 19 февраля 2019

Для этого можно использовать процедуры расширителя пути из процедур APOC , собирая возможные конечные узлы, а затем используя расширитель пути от начального узла к этим конечным узлам спредел 1: будет возвращен путь к первому найденному узлу (который будет самым коротким путем из-за ширины первого расширения).

WITH ["93049","67069","90762","86156","01067","18069","52146","04356"," 42329","53113","76131","40549","50670","50678","85774","80339"] AS plzes
MATCH (a:plzNodes)
WHERE a.plz in plzes
WITH collect(a) as plzNodes
MATCH (b:plzNodes {plz: "88400"})
CALL apoc.path.subgraphNodes(b, {endNodes:plzNodes, limit:1, maxLevel:14}) YIELD node as closest
RETURN closest
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...