如何在Memgraph中计算两节点的无权重最短路径?
在Memgraph中计算无权重最短路径的方法
Memgraph提供了专门的无权重最短路径实现,也可以通过调整带权路径算法来模拟,具体方案如下:
1. 直接使用无权重最短路径修饰符[*SHORTEST]
这是最简洁的方式,专门针对无权重场景设计,适配Memgraph的路径修饰符规则:
MATCH (start:User {id: 1}), (end:User {id: 10}), path = (start)-[*SHORTEST]->(end) RETURN path;
如果需要返回所有长度相同的最短路径(而非仅一条),可使用[*SHORTEST ALL]:
MATCH (start:User {id: 1}), (end:User {id: 10}), path = (start)-[*SHORTEST ALL]->(end) RETURN path;
2. 用WSHORTEST模拟无权重路径
无权重最短路径等价于所有边权重为1的带权最短路径,因此可以给WSHORTEST的权重函数固定返回1来实现需求:
MATCH (start:User {id: 1}), (end:User {id: 10}), path = (start)-[*WSHORTEST (r, n | 1)]->(end) RETURN path;
这种方式不如[*SHORTEST]直观,仅作为替代方案。
内容的提问来源于stack exchange,提问作者iuhztr tzhjzuk
相关产品推荐
相关产品推荐

