用途
该能力用于在 FalkorDB 的读取查询中查找路径,包括两个节点之间的最短路径,以及从单一源节点到所有可达节点的最短路径。它通过 FalkorDB 提供的路径查找过程与变长关系模式完成图的遍历。
主要能力
- 使用 algo.SPpaths 过程查找两个指定节点之间的最短路径(单对)。
- 使用 algo.SSpaths 过程查找从一个源节点到所有可达节点的最短路径(单源)。
- 支持变长关系模式,用于路径匹配。
- 支持加权路径:通过 weightProp(例如 'dist'、'time')最小化某个属性,并通过 costProp/maxCost 约束总成本。
- 结果可返回路径,以及 pathWeight 和 pathCost。
- 支持方向控制:relDirection 可取 outgoing、incoming 或 both;模式中可用 -[:TYPE]- 表示无向遍历,用 <-[:TYPE]- 表示反向关系。
- shortestPath(...) / allShortestPaths(...) 为无权的模式匹配辅助函数,适合简单场景。
使用方式
algo.SPpaths 的参数包括:sourceNode、targetNode、relTypes(数组)、relDirection(outgoing | incoming | both)、pathCount(1 表示单一最短路径,0 表示所有最短路径,n 表示最多 n 条路径)。可通过添加 weightProp(如 'dist'、'time')来最小化加权属性。其 YIELD 结果为 path、pathWeight、pathCost。
示例:
MATCH (a:City {name: 'Paris'}), (b:City {name: 'Berlin'}) CALL algo.SPpaths({sourceNode: a, targetNode: b, relTypes: ['ROAD'], relDirection: 'outgoing', pathCount: 1}) YIELD path RETURN [n IN nodes(path) | n.name] AS route
变长路径使用 -[:TYPE*minHops..maxHops]-> 语法,应限制跳数上限以避免代价高昂的遍历。
适用场景
- 查询“X 与 Y 之间的最短路径”这类问题时,优先使用 algo.SPpaths(),它是 FalkorDB 专用的单对最短路径过程。
- 需要从一个节点出发到达所有可达节点时,使用 algo.SSpaths()(单源)。
- 需要按权重找最短路径、或对总成本设限时,使用 weightProp 与 costProp/maxCost。
限制
- 这些均为只读遍历。
- shortestPath(...) / allShortestPaths(...) 仅适用于简单的无权模式匹配。
- 变长路径需限定跳数范围,否则可能产生昂贵的遍历。
- 关于具体版本支持、性能数据及其他参数细节,资料中暂未提供。