【问题标题】:How to find shortest path between nodes on a directed graph in neo4j?如何在neo4j的有向图上找到节点之间的最短路径?
【发布时间】:2019-10-04 03:35:06
【问题描述】:

使用图算法扩展和 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

【问题讨论】:

    标签: graph neo4j shortest-path directed-graph


    【解决方案1】:

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      • 2013-01-04
      相关资源
      最近更新 更多