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
是集合的大小。
我是 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
是集合的大小。