Neo4j最短路径

4

我有一个包含2种类型关系的图表:

  • T1 类型代表 单向 街道
  • T2 类型代表 双向 街道。

根据neo4j文档的建议,我想避免为双向街道创建两个关系,因为这会减慢 shortestPath 函数的速度。

但是,在 shortestPath 函数中是否有任何方法可以遍历 T1 单向T2 双向 的关系?

需要注意的是,由于 T1 关系的存在,我不能使用无向搜索!

1个回答

2

使用密码学shortespath函数无法实现。

因此,如果您想使用此函数,则需要为T2创建两个关系。

但是,当我看到streetshortestpath时,我认为您正在执行某些路由算法,因此对于此类情况,shortespath函数可能不是最优化的

如果您有复杂的路由算法或者要将图形算法转换为APOC (https://neo4j-contrib.github.io/neo4j-apoc-procedures/#_graph_algorithms_work_in_progress),您应该查看图遍历API以及使用AStardijkstraWithDefaultWeight过程。

更新

以下是使用APOC中的apoc.algo.dijkstraWithDefaultWeight算法查询的示例:

MATCH (from:Way { id: $idFrom }), 
      (to:Way { id: $idTo }) 
WITH from, to
CALL apoc.algo.dijkstraWithDefaultWeight(from, to, 'T1>|T2', 'distance', 1) YIELD path, weight
RETURN path, weight

感谢@logisima的回复。我的问题不在于路由,而是它没有权重,所以我猜dijkstra不是最好的选择。在图遍历API或APOC中是否有解决我的问题的方法? - Milad B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接