如何在neo4j的有向图中找到节点之间的最短路径?

时间:2019-05-16 19:45:00

标签: graph neo4j shortest-path directed-graph

只要连接2个节点,在neo4j中使用图算法扩展和内置的最短路径搜索就不会查看关系的方向。有没有办法查询图数据库以包括连接节点的关系的方向性,还是您必须从头开始编写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 :(得分:0)

APOC程序apoc.algo.dijkstra应该为您工作。

例如,如果您想使用最短的加权路径,且仅具有从startend的传出关系(无论关系类型如何):

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;