Neo4j中使用aStarConfig求解带权有向图最短路径忽略关系方向问题
解决Neo4j中APOC A*算法仅遵循关系方向的最短路径问题
要让apoc.algo.aStarConfig仅遵循ROAD_SEGMENT关系的方向(不反向遍历),只需在指定关系类型时明确添加方向标识:
- 默认传入的
"ROAD_SEGMENT"会双向遍历关系,这是路径不考虑方向的核心原因 - 在关系类型前加上
>,即">:ROAD_SEGMENT",可限定算法仅沿着关系的正向(从起点节点指向终点节点的方向)遍历
修改后的完整查询语句如下:
MATCH (a:Address)-[:NEAREST_INTERSECTION]->(source:Intersection) WHERE a.full_address CONTAINS "410 E 5TH AVE SAN MATEO, CA" MATCH (poi:Address)-[:NEAREST_INTERSECTION]->(dest:Intersection) WHERE poi.full_address CONTAINS "39 GRAND BLVD SAN MATEO, CA" CALL apoc.algo.aStarConfig(source, dest, ">:ROAD_SEGMENT", {pointPropName: "location", weight: "length"}) YIELD weight, path RETURN *
调整后查询得到的最短路径将严格遵循ROAD_SEGMENT关系的定义方向,不会遍历反向的上游关系。
内容的提问来源于stack exchange,提问作者strzelaczbramek9
相关产品推荐
相关产品推荐

