SuperAPI AI 工具集

Find paths in FalkorDB

数据与分析

查看项目

更新于 10-16 15:44

技能介绍

用途

该能力用于在 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(...) 仅适用于简单的无权模式匹配。
  • 变长路径需限定跳数范围,否则可能产生昂贵的遍历。
  • 关于具体版本支持、性能数据及其他参数细节,资料中暂未提供。