【问题标题】:Apoc Dijkstra traversing in both directions while computing shortest pathApoc Dijkstra 在计算最短路径时双向遍历
【发布时间】:2017-12-06 22:18:56
【问题描述】:

我一直在尝试使用 neo4j 及其 apoc 进程库来获得 2 个节点之间的最短路径。
例如我创建2个节点如下

CREATE (:Point {title:'A'})
CREATE (:Point {title:'B'})

然后我就这样建立他们的关系

MATCH (u1:Point {title:'A'}), (u2:Point {title: 'B'}) 
CREATE (u1)-[:distance {value:10}]->(u2)

现在我已经建立了从 A 到 B 的直接关系,反之亦然。 所以当我如下调用 apoc Dijkstra 时

MATCH (start:Point {title: 'B'}), (end:Point {title: 'B'}) 
CALL apoc.algo.dijkstra(start, end, 'distance', 'value') YIELD path, weight 
RETURN path, weight

我不应该得到任何结果,因为它们不是从 B 到 A 的定向路径。但是我得到的结果与使用从 A 到 B 的路径运行查询时相同。

谁能告诉我为什么会这样?为什么 Dijkstra 不顾方向?任何帮助将不胜感激。

【问题讨论】:

    标签: neo4j cypher dijkstra neo4j-apoc


    【解决方案1】:

    您需要在查询中的关系类型中添加> 或<。

    MATCH (start:Point {title: 'B'}), (end:Point {title: 'B'}) 
    CALL apoc.algo.dijkstra(start, end, 'distance>', 'value') YIELD path, weight 
    RETURN path, weight
    

    【讨论】:

    • 非常感谢。我不知道是不是因为我对 Neo4j 缺乏经验,但是我在 apoc 文档中找不到任何这样的细节。
    • 这里的 > 或
    • 这是房地产交易的方向。签名中的第三个参数是relationshipTypesAndDirections。
    猜你喜欢
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 2016-07-30
    • 2016-01-11
    相关资源
    最近更新 更多