Neo4j的REDUCE函数的大O是什么

What is the Big O of Neo4j's REDUCE Fuction

我是 Neo4j 的新手,正在考虑将其用作解决方案。考虑这个例子:Finding the Shortest Path through the Park

Neo4j 中 REDUCE 函数的大 O 表示法是什么?它是计算每种可能性并对它们进行排序还是更有效?

如果您指的是这个查询

START  startNode=node:node_auto_index(name="Start"),
             endNode=node:node_auto_index(name="Finish")
MATCH  p=(startNode)-[:NAVIGATE_TO*]->(endNode)
RETURN p AS shortestPath,
                reduce(distance=0, r in relationships(p) :  distance+r.distance) AS totalDistance
ORDER BY totalDistance ASC
LIMIT 1;

首先定义开始和结束节点...并匹配它们之间的所有路径...

RETURN p AS shortestPath,
reduce(distance=0, r in relationships(p) :  distance+r.distance) AS totalDistance
ORDER BY totalDistance ASC
LIMIT 1;

这个 reduce 是这样工作的,它从路径的关系中提取所有距离属性并将它们相加。所以如果你 order by 结果按距离递增 limit 到 1,你只会得到第一个最小的距离

p.s。我认为你所指的大 O 实际上是一个零 0,因此它从零开始为每条路径添加所有距离

REDUCE 函数简单地遍历集合中的项目,对每个项目执行任意操作 returns 一个值,保留最新值,并最终返回最后一个值。

如果我们忽略"arbitrary operation"本身的复杂度,REDUCE函数的复杂度是O(N),其中N是集合的大小。