我需要找到最短路径,应该通过几个节点和边。一些细节:1.它应该是最短路径根据权重。1.包含集可以是有序的,也可以是无序的。1.图形大小- 50 000个顶点和450 0000条边有没有办法用arangodb找到这样的路径?我试过K_SHORTEST_PATHS,但是在某些情况下太慢了。
oiopk7p51#
如果没有数据集,测试起来会很棘手。不幸的是,K_SHORTEST_PATHS是唯一一种为边添加“权重”的内置方法,除非你自己构建一些东西。另外,两种SHORTEST_PATH方法都没有实现PRUNE,而PRUNE是加速图遍历的最佳方法。我的建议是使用有向图方法(FOR v,e,p IN 1..9 INBOUND x...),实现PRUNE和FILTER子句来减少跳数,并使用类似COLLECT path = p AGGREGATE weight = SUM(e.weight)的方法来计算权重。
K_SHORTEST_PATHS
SHORTEST_PATH
PRUNE
FOR v,e,p IN 1..9 INBOUND x...
FILTER
COLLECT path = p AGGREGATE weight = SUM(e.weight)
1条答案
按热度按时间oiopk7p51#
如果没有数据集,测试起来会很棘手。不幸的是,
K_SHORTEST_PATHS
是唯一一种为边添加“权重”的内置方法,除非你自己构建一些东西。另外,两种SHORTEST_PATH
方法都没有实现PRUNE
,而PRUNE
是加速图遍历的最佳方法。我的建议是使用有向图方法(
FOR v,e,p IN 1..9 INBOUND x...
),实现PRUNE
和FILTER
子句来减少跳数,并使用类似COLLECT path = p AGGREGATE weight = SUM(e.weight)
的方法来计算权重。