我有一个包含2种类型关系的图表:
T1
类型代表 单向 街道T2
类型代表 双向 街道。
根据neo4j文档的建议,我想避免为双向街道创建两个关系,因为这会减慢 shortestPath 函数的速度。
但是,在 shortestPath
函数中是否有任何方法可以遍历 T1
单向 和 T2
双向 的关系?
需要注意的是,由于 T1
关系的存在,我不能使用无向搜索!
我有一个包含2种类型关系的图表:
T1
类型代表 单向 街道T2
类型代表 双向 街道。根据neo4j文档的建议,我想避免为双向街道创建两个关系,因为这会减慢 shortestPath 函数的速度。
但是,在 shortestPath
函数中是否有任何方法可以遍历 T1
单向 和 T2
双向 的关系?
需要注意的是,由于 T1
关系的存在,我不能使用无向搜索!
使用密码学shortespath
函数无法实现。
因此,如果您想使用此函数,则需要为T2
创建两个关系。
但是,当我看到street
和shortestpath
时,我认为您正在执行某些路由算法,因此对于此类情况,shortespath函数可能不是最优化的。
如果您有复杂的路由算法或者要将图形算法转换为APOC (https://neo4j-contrib.github.io/neo4j-apoc-procedures/#_graph_algorithms_work_in_progress),您应该查看图遍历API以及使用AStar
或dijkstraWithDefaultWeight
过程。
以下是使用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
dijkstra
不是最好的选择。在图遍历API或APOC中是否有解决我的问题的方法? - Milad B