gremlin 中按重量计算的最长路径

longest path by weight in gremlin

我什么是获得最重路径的最佳查询b/w gremlin 有向图中的 2 个节点?

*我确实有多条路,有时最长的路并不是最重的。

其中每个 edge(不是节点)都有一个整数属性(权重)。权重范围是 0<= 权重 <=12

谢谢。

一般来说,sack步骤就可以进行这样的计算。使用航线数据集,下面的查询使用边上的 dist 属性 来计算权重,找到两个机场之间最长的 3 跳航线。请注意,我将查询限制为仅查找一定数量的结果,并使用 loops 指定我感兴趣的搜索的最大深度。如果没有这样的约束,像这样的查询可以在高度连接的图中 运行 很长时间。

gremlin>  g.withSack(0).
......1>    V('3').
......2>    repeat(outE().sack(sum).by('dist').inV().simplePath()).
......3>    until(has('code','AGR').or().loops().is(4)).
......4>    has('code','AGR').
......5>    limit(5).
......6>    order().
......7>      by(sack(),desc).
......8>    local(union(path().by('code').by('dist'),sack()).fold())

==>[[AUS,4901,LHR,4479,BOM,644,AGR],10024]
==>[[AUS,5294,FRA,4080,BOM,644,AGR],10018]
==>[[AUS,1520,JFK,7782,BOM,644,AGR],9946]
==>[[AUS,1500,EWR,7790,BOM,644,AGR],9934]
==>[[AUS,1357,YYZ,7758,BOM,644,AGR],9759]