如何解决格雷姆林:找到指定顶点的所有下游出路径
我有一个有向图,包含大约1000个顶点和3000个包含循环的边。
我正在尝试查找给定顶点的所有下游(出)路径。
使用以下Gremlin查询时
g.V(45712).repeat(out().simplePath()).until(outE().count().is(0)).path()
对于某些路径,由于循环的原因,要花很多时间才能获得结果,尽管simplePath
步骤应避免这种情况。
我尝试优化查询,并没有使用aggregate
步骤和without
两次遍历相同的顶点,但是现在跳过了某些顶点。
g.V(45712).repeat(out().where(without('x'))
.aggregate(Scope.local,'x'))
.until(outE().count().is(0))
.path()
谢谢
解决方法
如果您的数据是高度连接的,那可能是一个昂贵的查询。即使有一个小图。我已经看到人们使用约束来尝试限制搜索的总量。这些可能包括使用times
或loops
设置最大搜索深度。即使使用我的航线数据集(实际上是一个很小的图),该查询也可能会产生非常大的结果集。格雷姆林错是不是那么多。更多取决于顶点的连接方式。
通常,从给定起点搜索所有路径可能是昂贵的查询。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。