如何在 neo4j 中的有向图上找到节点之间的最短路径?
How to find shortest path between nodes on a directed graph in neo4j?
使用图形算法扩展和 neo4j 中内置的最短路径搜索,只要 2 个节点连接,就不会查看关系的方向。有没有一种方法可以查询图形数据库以包括连接节点的关系的方向性,或者您是否必须在不利用 neo4j 及其图形算法库功能的情况下从头开始编写 dijikstra 代码?
我目前正在使用以这种方式构造的查询:
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
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;
使用图形算法扩展和 neo4j 中内置的最短路径搜索,只要 2 个节点连接,就不会查看关系的方向。有没有一种方法可以查询图形数据库以包括连接节点的关系的方向性,或者您是否必须在不利用 neo4j 及其图形算法库功能的情况下从头开始编写 dijikstra 代码?
我目前正在使用以这种方式构造的查询:
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
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;