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

Использование расширения алгоритмов графа и встроенного поиска кратчайшего пути в neo4j не смотрит на направление отношений, пока 2 узла соединены.Есть ли способ сделать запрос к базе данных графа, чтобы включить направленность отношений, соединяющих узлы, или вам придется кодировать dijikstra с нуля, не используя neo4j и его возможности библиотеки алгоритмов графа?

В настоящее время я используюзапрос структурирован следующим образом:

MATCH (start:Db_Nodes{uid:"xxx"}),(end:Db_Nodes{uid:"yyy"}) CALL algo.shortestPath.stream(start, end, "weight") YIELD nodeId, cost MATCH (node) WHERE id(node) = nodeId RETURN node

1 Ответ

0 голосов
/ 17 мая 2019

Процедура APOC apoc.algo.dijkstra должна работать для вас.

Например, если вы хотите получить кратчайший взвешенный путь только с исходящими отношениями от start до end (независимо от типа отношений):

MATCH (start:Db_Nodes{uid:"xxx"}), (end:Db_Nodes{uid:"yyy"})
CALL apoc.algo.dijkstra(start, end, '>', 'weight') YIELD path, weight AS totalWeight
RETURN path, totalWeight;
...