繁体   English   中英

如何使用gremlin查找加权边缘范围内的所有节点?

[英]How to find all nodes within a range of weighted edges with gremlin?

我正在尝试获取从给定的起始节点到给定范围内的所有节点的最短路径的列表。 每个边缘都经过加权,我正在尝试使用这些权重的总和作为范围,而不是步骤数。

以下内容适用于限制步骤,但我不确定如何正确汇总和限制路径边缘权重或返回路径。

g.v(1).out.loop(1){it.loops < 3}{true}.dedup

谢谢你的帮助!

TinkerPop 3语法可能如下所示:

g.withSack(0.0f).V(1).repeat(outE()。sack(sum,'weight')。inV())。times(2).sack()。path()

输出包括边缘在内的完整路径以及边缘的总权重:

==> [v [4256],e [178-3a8-1lh-374] [4256-onetwo-> 4144],v [4144],e [16u-374-36d-3a0] [4144-twothree-> 4248 ],v [4248],3.0]

循环步骤的it.path属性是关键。 由于权重在边缘,因此我们需要显式遍历它们,以便它们在路径中可见:

g.v(1).as("start").outE().inV().loop("start"){it.path.collect{it.weight==null ? 0.0 : it.weight}}.sum()<=0.3f}.dedup()

如果要同时遍历出入边缘,则需要添加simplePath()来防止遍历自身。

g.v(1).as("start").bothE().bothV().loop("start"){it.path.collect{it.weight==null ? 0.0 : it.weight}}.sum()<=0.3f}.simplePath().dedup()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM