gpt4 book ai didi

javascript - ArangoDB 图 maxDepth - 迭代太多

转载 作者:行者123 更新时间:2023-11-29 17:00:51 27 4
gpt4 key购买 nike

我正在尝试使用 ArangoDB 构建一个大型社交网络图。我在那里有数据 - 大约 35k 个顶点和大约 150k 个边。

我意识到这是一个非常多的数据,所以我希望一次只绘制一个子集 - 可能与起点相隔 2 或 3 度。

但如果 maxDepth 大于 1,即使我将 maxIterations 设置得非常低(比如 1),我也会收到 1909: too many iterations 错误

例如,这个查询给了我太多的迭代错误

GRAPH_TRAVERSAL('Friends', 'people/1342', 'outbound', {maxDepth: 2, maxIterations: 10})

如果我省略 maxIterations,我会得到同样的错误。

图形在 Web 界面中成功绘制,所以我认为问题不在于我的数据本身。我的图表中的数据是否超出了 ArangoDB 的处理能力?还是我做错了什么?

最佳答案

maxIterations 参数控制遍历在多少次迭代后自动中止。这种自动中止是为了防止你在循环图上运行遍历时无休止地遍历。

maxIterations 不控制遍历深度,而是控制遍历多少个顶点后停止并抛出错误。

下面是一个如何计算最大值的例子:遍历将从指定的起始顶点开始。这是第一次迭代。对于起始顶点,将确定所有传出(或传入)连接。假设从起始顶点开始有五个连接,因此下一轮遍历将考虑它们。因此,maxIterations 至少需要 6 的值(起始顶点为 1,下一轮为 5)。如果现在 5 个顶点中的每一个也都有 5 个连接,则至少需要 25 次迭代,因此您需要 maxIterations 值为 31。对于下一个级别,每个顶点有 5 个连接,您还需要 125 个等等。

因此对于每个级别,您不能简单地为 maxIterations 添加一个常量值。我们看到的序列 (1, 6, 31, 156) 显然是非线性的。您需要多少次迭代显然取决于基础数据和顶点的连接程度。

如果你想实现的只是将遍历深度限制在一定程度,你可以使用minDepthmaxDepth参数,并设置maxIterations 到一个非常高的值(这可能永远不会达到,因为遍历受 maxDepth 限制)。控制遍历数据量的进一步选项是direction(any 将产生大部分结果并且更容易导致循环,使用inboundoutbound 尽可能)和 uniqueness (控制访问给定顶点或连接边的频率)。

关于javascript - ArangoDB 图 maxDepth - 迭代太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28156884/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com